[Groonga-commit] groonga/groonga at ca369e6 [master] Add NormalizerNFKC121 and TokenFilterNFKC121

Back to archive index
Kouhei Sutou null+****@clear*****
Sat May 18 06:58:04 JST 2019


Kouhei Sutou	2019-05-18 06:58:04 +0900 (Sat, 18 May 2019)

  Revision: ca369e6480fa0439a7fe6dae2920bd2e98d71173
  https://github.com/groonga/groonga/commit/ca369e6480fa0439a7fe6dae2920bd2e98d71173

  Message:
    Add NormalizerNFKC121 and TokenFilterNFKC121
    
    It's for supporting U+32FF SQUARE ERA NAME REIWA.

  Added files:
    lib/nfkc121.c
    test/command/suite/normalizers/nfkc121/cyrillic.expected
    test/command/suite/normalizers/nfkc121/cyrillic.test
    test/command/suite/normalizers/nfkc121/emoji.expected
    test/command/suite/normalizers/nfkc121/emoji.test
    test/command/suite/normalizers/nfkc121/include_removed_source_location_blank.expected
    test/command/suite/normalizers/nfkc121/include_removed_source_location_blank.test
    test/command/suite/normalizers/nfkc121/mix/unify_katakana_v_sounds_and_kana.expected
    test/command/suite/normalizers/nfkc121/mix/unify_katakana_v_sounds_and_kana.test
    test/command/suite/normalizers/nfkc121/reiwa.expected
    test/command/suite/normalizers/nfkc121/reiwa.test
    test/command/suite/normalizers/nfkc121/remove_blank.expected
    test/command/suite/normalizers/nfkc121/remove_blank.test
    test/command/suite/normalizers/nfkc121/report_source_offset.expected
    test/command/suite/normalizers/nfkc121/report_source_offset.test
    test/command/suite/normalizers/nfkc121/unify_hyphen.expected
    test/command/suite/normalizers/nfkc121/unify_hyphen.test
    test/command/suite/normalizers/nfkc121/unify_hyphen_and_prolonged_sound_mark.expected
    test/command/suite/normalizers/nfkc121/unify_hyphen_and_prolonged_sound_mark.test
    test/command/suite/normalizers/nfkc121/unify_kana.expected
    test/command/suite/normalizers/nfkc121/unify_kana.test
    test/command/suite/normalizers/nfkc121/unify_kana_case_hiragana.expected
    test/command/suite/normalizers/nfkc121/unify_kana_case_hiragana.test
    test/command/suite/normalizers/nfkc121/unify_kana_case_katakana.expected
    test/command/suite/normalizers/nfkc121/unify_kana_case_katakana.test
    test/command/suite/normalizers/nfkc121/unify_kana_voiced_sound_mark_hiragana.expected
    test/command/suite/normalizers/nfkc121/unify_kana_voiced_sound_mark_hiragana.test
    test/command/suite/normalizers/nfkc121/unify_kana_voiced_sound_mark_katakana.expected
    test/command/suite/normalizers/nfkc121/unify_kana_voiced_sound_mark_katakana.test
    test/command/suite/normalizers/nfkc121/unify_katakana_bu_sound.expected
    test/command/suite/normalizers/nfkc121/unify_katakana_bu_sound.test
    test/command/suite/normalizers/nfkc121/unify_katakana_v_sounds.expected
    test/command/suite/normalizers/nfkc121/unify_katakana_v_sounds.test
    test/command/suite/normalizers/nfkc121/unify_middle_dot.expected
    test/command/suite/normalizers/nfkc121/unify_middle_dot.test
    test/command/suite/normalizers/nfkc121/unify_prolonged_sound_mark.expected
    test/command/suite/normalizers/nfkc121/unify_prolonged_sound_mark.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/a.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/a.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ba.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ba.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/da.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/da.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/etc.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/etc.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ga.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ga.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ha.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ha.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ka.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ka.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ma.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ma.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/n.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/n.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/na.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/na.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/pa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/pa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ra.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ra.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/sa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/sa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ta.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ta.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/wa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/wa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/xtsu.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/xtsu.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ya.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/ya.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/za.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/hiragana/za.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/a.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/a.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ba.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ba.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/da.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/da.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/etc.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/etc.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ga.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ga.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ha.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ha.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ka.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ka.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ma.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ma.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/n.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/n.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/na.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/na.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/pa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/pa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ra.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ra.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/sa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/sa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ta.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ta.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/wa.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/wa.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/xtsu.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/xtsu.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ya.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/ya.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/za.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/katakana/za.test
    test/command/suite/normalizers/nfkc121/unify_to_romaji/mixed.expected
    test/command/suite/normalizers/nfkc121/unify_to_romaji/mixed.test
    test/command/suite/token_filters/nfkc121/reiwa.expected
    test/command/suite/token_filters/nfkc121/reiwa.test
    test/command/suite/token_filters/nfkc121/unify_kana.expected
    test/command/suite/token_filters/nfkc121/unify_kana.test
  Modified files:
    lib/Makefile.am
    lib/c_sources.am
    lib/grn_nfkc.h
    lib/nfkc.c
    lib/nfkc.rb
    lib/normalizer.c
    lib/token_filters.c
    test/command/suite/normalizer_list/default.expected
    test/command/suite/schema/plugins.expected
    test/command/suite/schema/tables/columns/compress/lz4.expected
    test/command/suite/schema/tables/columns/compress/zlib.expected
    test/command/suite/schema/tables/columns/compress/zstd.expected
    test/command/suite/schema/tables/columns/type/index_large.expected
    test/command/suite/schema/tables/columns/type/index_medium.expected
    test/command/suite/schema/tables/columns/type/index_small.expected
    test/command/suite/schema/tables/columns/type/scalar.expected
    test/command/suite/schema/tables/columns/type/vector.expected
    test/command/suite/schema/tables/normalizer.expected
    test/command/suite/schema/tables/normalizer_with_options.expected
    test/command/suite/schema/tables/token_filters.expected
    test/command/suite/schema/tables/token_filters_with_options.expected
    test/command/suite/schema/tables/tokenizer.expected
    test/command/suite/schema/tables/tokenizer_with_options.expected
    test/command/suite/schema/tables/type/array.expected
    test/command/suite/schema/tables/type/hash_table.expected
    test/command/suite/schema/tables/value_type/reference.expected
    test/command/suite/schema/tables/value_type/type.expected

  Modified: lib/Makefile.am (+2 -1)
===================================================================
--- lib/Makefile.am    2019-05-18 05:37:33 +0900 (a3bf68471)
+++ lib/Makefile.am    2019-05-18 06:58:04 +0900 (988dbaaab)
@@ -139,4 +139,5 @@ tmp/icu-$(ICU_VERSION)/local/: icu4c-$(ICU_VERSION)-src.tgz
 
 update-nfkc: tmp/icu-$(ICU_VERSION)/local/
 	ICU_HOME=$$PWD/tmp/icu-$(ICU_VERSION)/local \
-	  $(RUBY) nfkc.rb
+	  $(RUBY) $(srcdir)/nfkc.rb \
+	    --source-directory=$(srcdir)

  Modified: lib/c_sources.am (+1 -0)
===================================================================
--- lib/c_sources.am    2019-05-18 05:37:33 +0900 (1c84f4979)
+++ lib/c_sources.am    2019-05-18 06:58:04 +0900 (14247a911)
@@ -61,6 +61,7 @@ libgroonga_c_sources =				\
 	grn_nfkc.h				\
 	nfkc50.c				\
 	nfkc100.c				\
+	nfkc121.c				\
 	normalizer.c				\
 	grn_normalizer.h			\
 	obj.c					\

  Modified: lib/grn_nfkc.h (+10 -0)
===================================================================
--- lib/grn_nfkc.h    2019-05-18 05:37:33 +0900 (41b6e198d)
+++ lib/grn_nfkc.h    2019-05-18 06:58:04 +0900 (e263b3083)
@@ -49,6 +49,9 @@ typedef struct {
   grn_bool remove_blank;
 } grn_nfkc_normalize_options;
 
+typedef void (*grn_nfkc_normalize_options_init_func)(grn_ctx *ctx,
+                                                     grn_nfkc_normalize_options *options);
+
 const char *grn_nfkc_decompose(const unsigned char *utf8);
 const char *grn_nfkc_compose(const unsigned char *prefix_utf8,
                              const unsigned char *suffix_utf8);
@@ -63,6 +66,11 @@ const char *grn_nfkc100_decompose(const unsigned char *utf8);
 const char *grn_nfkc100_compose(const unsigned char *prefix_utf8,
                                const unsigned char *suffix_utf8);
 
+GRN_API grn_char_type grn_nfkc121_char_type(const unsigned char *utf8);
+const char *grn_nfkc121_decompose(const unsigned char *utf8);
+const char *grn_nfkc121_compose(const unsigned char *prefix_utf8,
+                               const unsigned char *suffix_utf8);
+
 void grn_nfkc_normalize_options_init(grn_ctx *ctx,
                                      grn_nfkc_normalize_options *options,
                                      grn_nfkc_char_type_func char_type_func,
@@ -70,6 +78,8 @@ void grn_nfkc_normalize_options_init(grn_ctx *ctx,
                                      grn_nfkc_compose_func compose_func);
 void grn_nfkc100_normalize_options_init(grn_ctx *ctx,
                                         grn_nfkc_normalize_options *options);
+void grn_nfkc121_normalize_options_init(grn_ctx *ctx,
+                                        grn_nfkc_normalize_options *options);
 grn_rc grn_nfkc_normalize_options_apply(grn_ctx *ctx,
                                         grn_nfkc_normalize_options *options,
                                         grn_obj *raw_options);

  Modified: lib/nfkc.c (+11 -0)
===================================================================
--- lib/nfkc.c    2019-05-18 05:37:33 +0900 (9ac8ffcd7)
+++ lib/nfkc.c    2019-05-18 06:58:04 +0900 (bbb81dd75)
@@ -78,6 +78,17 @@ grn_nfkc100_normalize_options_init(grn_ctx *ctx,
                                   grn_nfkc100_compose);
 }
 
+void
+grn_nfkc121_normalize_options_init(grn_ctx *ctx,
+                                   grn_nfkc_normalize_options *options)
+{
+  grn_nfkc_normalize_options_init(ctx,
+                                  options,
+                                  grn_nfkc121_char_type,
+                                  grn_nfkc121_decompose,
+                                  grn_nfkc121_compose);
+}
+
 grn_rc
 grn_nfkc_normalize_options_apply(grn_ctx *ctx,
                                  grn_nfkc_normalize_options *options,

  Modified: lib/nfkc.rb (+11 -5)
===================================================================
--- lib/nfkc.rb    2019-05-18 05:37:33 +0900 (e73e71689)
+++ lib/nfkc.rb    2019-05-18 06:58:04 +0900 (7f79146d0)
@@ -1,7 +1,7 @@
 #!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
 #
 # Copyright(C) 2010-2018 Brazil
+# Copyright(C) 2019 Kouhei Sutou <kou****@clear*****>
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -16,6 +16,8 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
+require "English"
+
 CUSTOM_RULE_PATH = 'nfkc-custom-rules.txt'
 
 class SwitchGenerator
@@ -832,8 +834,11 @@ end
 ######## main #######
 
 generator_class = TableGenerator
-ARGV.each{|arg|
+source_directory = "."
+ARGV.each do |arg|
   case arg
+  when /\A--source-directory=/
+    source_directory = $POSTMATCH
   when /-*c/i
     $case_sensitive = true
   when /-*s/i
@@ -843,7 +848,7 @@ ARGV.each{|arg|
   when "--impl=table"
     generator_class = TableGenerator
   end
-}
+end
 
 icu_home = ENV["ICU_HOME"] || "/tmp/local"
 STDERR.puts("compiling icudump on #{icu_home}")
@@ -854,7 +859,7 @@ system("cc",
        "-o", "icudump",
        "-I#{icu_home}/include",
        "-L#{icu_home}/lib",
-       "icudump.c",
+       File.join(source_directory, "icudump.c"),
        "-licuuc",
        "-licui18n",
        "-licudata") or exit(false)
@@ -873,7 +878,8 @@ decompose_map = create_decompose_map()
 STDERR.puts('creating compose map..')
 compose_map = create_compose_map(decompose_map)
 
-File.open("nfkc#{unicode_version}.c", "w") do |output|
+output_path = File.join(source_directory, "nfkc#{unicode_version}.c")
+File.open(output_path, "w") do |output|
   output.puts(<<-HEADER)
 /* -*- c-basic-offset: 2 -*- */
 /*

  Added: lib/nfkc121.c (+81747 -0) 100644
===================================================================
--- /dev/null
+++ lib/nfkc121.c    2019-05-18 06:58:04 +0900 (b523de213)
@@ -0,0 +1,81747 @@
+/* -*- c-basic-offset: 2 -*- */
+/*
+  Copyright(C) 2019 Brazil
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License version 2.1 as published by the Free Software Foundation.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+/*
+  Don't edit this file by hand. it generated automatically by nfkc.rb.
+*/
+
+#include "grn.h"
+#include "grn_nfkc.h"
+#include <groonga/nfkc.h>
+
+#ifdef GRN_WITH_NFKC
+
+static grn_char_type grn_nfkc121_char_type_table_[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_c2[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_c3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_cb[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_cd[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ce[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_cf[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d7[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d8[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_d9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_db[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_dc[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_de[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_df[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0a9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0aa[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0ab[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0ac[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0ad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0ae[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0af[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0b9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0ba[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0bb[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0bc[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0bd[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0be[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e0bf[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e180[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e181[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e182[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e183[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e189[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18e[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e18f[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e190[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e199[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e19a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e19b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e19c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e19d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e19f[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a0[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a5[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1a8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1aa[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1ad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1ae[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1af[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1b0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1b1[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1b2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1b3[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1bc[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1bd[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1be[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e1bf[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e280[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e281[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e282[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e284[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e285[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e286[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e28c[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e28f[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e291[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e292[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e293[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e296[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e297[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e298[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e299[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e29a[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e29b[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e29c[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e29d[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e29e[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2a4[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2ac[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2ad[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2ae[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2b8[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e2bf[] = {
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e380[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e382[] = {
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e387[] = {
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
+  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_e38a[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea93[] = {
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea98[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea99[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea9a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea9b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea9c[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea9e[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_ea9f[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa3[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa4[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
+  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa7[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaa9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaaa[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaab[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaac[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_eaaf[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efac[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efae[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efaf[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efb4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efb6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efb7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efb8[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efb9[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efbc[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efbd[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_efbf[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09080[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09081[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09084[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09085[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09086[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908e[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0908f[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09092[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09093[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09094[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09095[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0909d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a7[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090a9[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090aa[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090ab[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090ac[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090ad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090ae[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090b3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090b4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090bc[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f090bd[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09181[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09182[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09183[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09184[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09185[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09187[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09188[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0918a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0918b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0918c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0918d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09191[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09193[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09197[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09199[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0919a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f0919c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a7[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091a9[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091aa[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091b0[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091b1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091b4[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091b5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091b6[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091bb[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f091bf[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09291[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096a9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096ab[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096ac[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096ad[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096ba[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096bd[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f096bf[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09b80[] = {
+  GRN_CHAR_KATAKANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
+  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09b85[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09bb1[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09bb2[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d84[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d85[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d86[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d89[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d8d[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d91[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d92[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d93[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d94[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d95[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9a[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9c[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9d[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9e[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09d9f[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09da9[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09daa[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09e84[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09e85[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09e8b[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09ea3[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09ea5[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09eb2[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09eb4[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09eb8[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09eb9[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09eba[] = {
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
+  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f80[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f82[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f83[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f84[] = {
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
+  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f85[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f86[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f88[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f89[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f99[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09f9f[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa0[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa1[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa2[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa4[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa5[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_SYMBOL, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa6[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa7[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09fa9[] = {
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
+  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+static grn_char_type grn_nfkc121_char_type_table_f09faa[] = {
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
+  GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI, GRN_CHAR_EMOJI
+};
+
+grn_char_type
+grn_nfkc121_char_type(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x21 &&
+        utf8[0] <= 0x7e) {
+      return grn_nfkc121_char_type_table_[utf8[0] - 0x21];
+    } else {
+      return GRN_CHAR_OTHERS;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc2 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_char_type_table_c2[utf8[1] - 0xa1];
+      }
+      break;
+    case 0xc3 :
+      return grn_nfkc121_char_type_table_c3[utf8[1] - 0x80];
+    case 0xc4 :
+      return GRN_CHAR_ALPHA;
+    case 0xc5 :
+      return GRN_CHAR_ALPHA;
+    case 0xc6 :
+      return GRN_CHAR_ALPHA;
+    case 0xc7 :
+      return GRN_CHAR_ALPHA;
+    case 0xc8 :
+      return GRN_CHAR_ALPHA;
+    case 0xc9 :
+      return GRN_CHAR_ALPHA;
+    case 0xca :
+      return GRN_CHAR_ALPHA;
+    case 0xcb :
+      return grn_nfkc121_char_type_table_cb[utf8[1] - 0x80];
+    case 0xcd :
+      if (utf8[1] >= 0xb0 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_char_type_table_cd[utf8[1] - 0xb0];
+      }
+      break;
+    case 0xce :
+      if (utf8[1] >= 0x84 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_char_type_table_ce[utf8[1] - 0x84];
+      }
+      break;
+    case 0xcf :
+      return grn_nfkc121_char_type_table_cf[utf8[1] - 0x80];
+    case 0xd0 :
+      return GRN_CHAR_ALPHA;
+    case 0xd1 :
+      return GRN_CHAR_ALPHA;
+    case 0xd2 :
+      return grn_nfkc121_char_type_table_d2[utf8[1] - 0x80];
+    case 0xd3 :
+      return GRN_CHAR_ALPHA;
+    case 0xd4 :
+      return grn_nfkc121_char_type_table_d4[utf8[1] - 0x80];
+    case 0xd5 :
+      return grn_nfkc121_char_type_table_d5[utf8[1] - 0x80];
+    case 0xd6 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_char_type_table_d6[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd7 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xb4) {
+        return grn_nfkc121_char_type_table_d7[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd8 :
+      if (utf8[1] >= 0x86 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_char_type_table_d8[utf8[1] - 0x86];
+      }
+      break;
+    case 0xd9 :
+      return grn_nfkc121_char_type_table_d9[utf8[1] - 0x80];
+    case 0xda :
+      return GRN_CHAR_ALPHA;
+    case 0xdb :
+      return grn_nfkc121_char_type_table_db[utf8[1] - 0x80];
+    case 0xdc :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xaf) {
+        return grn_nfkc121_char_type_table_dc[utf8[1] - 0x80];
+      }
+      break;
+    case 0xdd :
+      if (utf8[1] >= 0x8d &&
+          utf8[1] <= 0xbf) {
+        return GRN_CHAR_ALPHA;
+      }
+      break;
+    case 0xde :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xb1) {
+        return grn_nfkc121_char_type_table_de[utf8[1] - 0x80];
+      }
+      break;
+    case 0xdf :
+      return grn_nfkc121_char_type_table_df[utf8[1] - 0x80];
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xa0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_e0a0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xaa) {
+          return grn_nfkc121_char_type_table_e0a1[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0a2[utf8[2] - 0xa0];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0a4[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e0a5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0a6[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x8e &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0a7[utf8[2] - 0x8e];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_e0a8[utf8[2] - 0x85];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x99 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_char_type_table_e0a9[utf8[2] - 0x99];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0aa[utf8[2] - 0x85];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_e0ab[utf8[2] - 0x90];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0ac[utf8[2] - 0x85];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x9c &&
+            utf8[2] <= 0xb7) {
+          return grn_nfkc121_char_type_table_e0ad[utf8[2] - 0x9c];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_e0ae[utf8[2] - 0x83];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xba) {
+          return grn_nfkc121_char_type_table_e0af[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0b0[utf8[2] - 0x85];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e0b1[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0b2[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x9e &&
+            utf8[2] <= 0xb2) {
+          return grn_nfkc121_char_type_table_e0b3[utf8[2] - 0x9e];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0b4[utf8[2] - 0x85];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x8e &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e0b5[utf8[2] - 0x8e];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0b6[utf8[2] - 0x85];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_char_type_table_e0b7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e0b8[utf8[2] - 0x81];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9b) {
+          return grn_nfkc121_char_type_table_e0b9[utf8[2] - 0x80];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0ba[utf8[2] - 0x81];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_char_type_table_e0bb[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e0bc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_char_type_table_e0bd[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e0be[utf8[2] - 0x85];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9a) {
+          return grn_nfkc121_char_type_table_e0bf[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return grn_nfkc121_char_type_table_e180[utf8[2] - 0x80];
+      case 0x81 :
+        return grn_nfkc121_char_type_table_e181[utf8[2] - 0x80];
+      case 0x82 :
+        return grn_nfkc121_char_type_table_e182[utf8[2] - 0x80];
+      case 0x83 :
+        return grn_nfkc121_char_type_table_e183[utf8[2] - 0x80];
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_ALPHA;
+      case 0x89 :
+        return grn_nfkc121_char_type_table_e189[utf8[2] - 0x80];
+      case 0x8a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_e18a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8b :
+        return grn_nfkc121_char_type_table_e18b[utf8[2] - 0x80];
+      case 0x8c :
+        return grn_nfkc121_char_type_table_e18c[utf8[2] - 0x80];
+      case 0x8d :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_char_type_table_e18d[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8e :
+        return grn_nfkc121_char_type_table_e18e[utf8[2] - 0x80];
+      case 0x8f :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e18f[utf8[2] - 0x80];
+        }
+        break;
+      case 0x90 :
+        return grn_nfkc121_char_type_table_e190[utf8[2] - 0x80];
+      case 0x91 :
+        return GRN_CHAR_ALPHA;
+      case 0x92 :
+        return GRN_CHAR_ALPHA;
+      case 0x93 :
+        return GRN_CHAR_ALPHA;
+      case 0x94 :
+        return GRN_CHAR_ALPHA;
+      case 0x95 :
+        return GRN_CHAR_ALPHA;
+      case 0x96 :
+        return GRN_CHAR_ALPHA;
+      case 0x97 :
+        return GRN_CHAR_ALPHA;
+      case 0x98 :
+        return GRN_CHAR_ALPHA;
+      case 0x99 :
+        return grn_nfkc121_char_type_table_e199[utf8[2] - 0x80];
+      case 0x9a :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e19a[utf8[2] - 0x81];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_char_type_table_e19b[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_char_type_table_e19c[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_char_type_table_e19d[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb3) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_e19f[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa0 :
+        return grn_nfkc121_char_type_table_e1a0[utf8[2] - 0x80];
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa2 :
+        return grn_nfkc121_char_type_table_e1a2[utf8[2] - 0x80];
+      case 0xa3 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb5) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9e) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_char_type_table_e1a5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa6 :
+        return grn_nfkc121_char_type_table_e1a6[utf8[2] - 0x80];
+      case 0xa7 :
+        return grn_nfkc121_char_type_table_e1a7[utf8[2] - 0x80];
+      case 0xa8 :
+        return grn_nfkc121_char_type_table_e1a8[utf8[2] - 0x80];
+      case 0xa9 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x94) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xad) {
+          return grn_nfkc121_char_type_table_e1aa[utf8[2] - 0x80];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xb3) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_char_type_table_e1ad[utf8[2] - 0x85];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e1ae[utf8[2] - 0x83];
+        }
+        break;
+      case 0xaf :
+        return grn_nfkc121_char_type_table_e1af[utf8[2] - 0x80];
+      case 0xb0 :
+        return grn_nfkc121_char_type_table_e1b0[utf8[2] - 0x80];
+      case 0xb1 :
+        return grn_nfkc121_char_type_table_e1b1[utf8[2] - 0x80];
+      case 0xb2 :
+        return grn_nfkc121_char_type_table_e1b2[utf8[2] - 0x80];
+      case 0xb3 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xba) {
+          return grn_nfkc121_char_type_table_e1b3[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb4 :
+        return GRN_CHAR_ALPHA;
+      case 0xb5 :
+        return GRN_CHAR_ALPHA;
+      case 0xb6 :
+        return GRN_CHAR_ALPHA;
+      case 0xb8 :
+        return GRN_CHAR_ALPHA;
+      case 0xb9 :
+        return GRN_CHAR_ALPHA;
+      case 0xba :
+        return GRN_CHAR_ALPHA;
+      case 0xbb :
+        return GRN_CHAR_ALPHA;
+      case 0xbc :
+        return grn_nfkc121_char_type_table_e1bc[utf8[2] - 0x80];
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_e1bd[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbe :
+        return grn_nfkc121_char_type_table_e1be[utf8[2] - 0x80];
+      case 0xbf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_e1bf[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe2 :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_e280[utf8[2] - 0x90];
+        }
+        break;
+      case 0x81 :
+        return grn_nfkc121_char_type_table_e281[utf8[2] - 0x80];
+      case 0x82 :
+        return grn_nfkc121_char_type_table_e282[utf8[2] - 0x80];
+      case 0x84 :
+        return grn_nfkc121_char_type_table_e284[utf8[2] - 0x80];
+      case 0x85 :
+        return grn_nfkc121_char_type_table_e285[utf8[2] - 0x80];
+      case 0x86 :
+        return grn_nfkc121_char_type_table_e286[utf8[2] - 0x80];
+      case 0x87 :
+        return GRN_CHAR_SYMBOL;
+      case 0x88 :
+        return GRN_CHAR_SYMBOL;
+      case 0x89 :
+        return GRN_CHAR_SYMBOL;
+      case 0x8a :
+        return GRN_CHAR_SYMBOL;
+      case 0x8b :
+        return GRN_CHAR_SYMBOL;
+      case 0x8c :
+        return grn_nfkc121_char_type_table_e28c[utf8[2] - 0x80];
+      case 0x8d :
+        return GRN_CHAR_SYMBOL;
+      case 0x8e :
+        return GRN_CHAR_SYMBOL;
+      case 0x8f :
+        return grn_nfkc121_char_type_table_e28f[utf8[2] - 0x80];
+      case 0x90 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa6) {
+          return GRN_CHAR_SYMBOL;
+        }
+        break;
+      case 0x91 :
+        return grn_nfkc121_char_type_table_e291[utf8[2] - 0x80];
+      case 0x92 :
+        return grn_nfkc121_char_type_table_e292[utf8[2] - 0x80];
+      case 0x93 :
+        return grn_nfkc121_char_type_table_e293[utf8[2] - 0x80];
+      case 0x94 :
+        return GRN_CHAR_SYMBOL;
+      case 0x95 :
+        return GRN_CHAR_SYMBOL;
+      case 0x96 :
+        return grn_nfkc121_char_type_table_e296[utf8[2] - 0x80];
+      case 0x97 :
+        return grn_nfkc121_char_type_table_e297[utf8[2] - 0x80];
+      case 0x98 :
+        return grn_nfkc121_char_type_table_e298[utf8[2] - 0x80];
+      case 0x99 :
+        return grn_nfkc121_char_type_table_e299[utf8[2] - 0x80];
+      case 0x9a :
+        return grn_nfkc121_char_type_table_e29a[utf8[2] - 0x80];
+      case 0x9b :
+        return grn_nfkc121_char_type_table_e29b[utf8[2] - 0x80];
+      case 0x9c :
+        return grn_nfkc121_char_type_table_e29c[utf8[2] - 0x80];
+      case 0x9d :
+        return grn_nfkc121_char_type_table_e29d[utf8[2] - 0x80];
+      case 0x9e :
+        return grn_nfkc121_char_type_table_e29e[utf8[2] - 0x80];
+      case 0x9f :
+        return GRN_CHAR_SYMBOL;
+      case 0xa0 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa1 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa2 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa3 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa4 :
+        return grn_nfkc121_char_type_table_e2a4[utf8[2] - 0x80];
+      case 0xa5 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa6 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa7 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa8 :
+        return GRN_CHAR_SYMBOL;
+      case 0xa9 :
+        return GRN_CHAR_SYMBOL;
+      case 0xaa :
+        return GRN_CHAR_SYMBOL;
+      case 0xab :
+        return GRN_CHAR_SYMBOL;
+      case 0xac :
+        return grn_nfkc121_char_type_table_e2ac[utf8[2] - 0x80];
+      case 0xad :
+        return grn_nfkc121_char_type_table_e2ad[utf8[2] - 0x80];
+      case 0xae :
+        return grn_nfkc121_char_type_table_e2ae[utf8[2] - 0x80];
+      case 0xaf :
+        return GRN_CHAR_SYMBOL;
+      case 0xb0 :
+        return grn_nfkc121_char_type_table_e2b0[utf8[2] - 0x80];
+      case 0xb1 :
+        return grn_nfkc121_char_type_table_e2b1[utf8[2] - 0x80];
+      case 0xb2 :
+        return GRN_CHAR_ALPHA;
+      case 0xb3 :
+        return grn_nfkc121_char_type_table_e2b3[utf8[2] - 0x80];
+      case 0xb4 :
+        return grn_nfkc121_char_type_table_e2b4[utf8[2] - 0x80];
+      case 0xb5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_char_type_table_e2b5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_e2b6[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9e) {
+          return grn_nfkc121_char_type_table_e2b7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        return grn_nfkc121_char_type_table_e2b8[utf8[2] - 0x80];
+      case 0xb9 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x8f) {
+          return GRN_CHAR_SYMBOL;
+        }
+        break;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbb) {
+          return grn_nfkc121_char_type_table_e2bf[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe3 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return grn_nfkc121_char_type_table_e380[utf8[2] - 0x80];
+      case 0x81 :
+        return GRN_CHAR_HIRAGANA;
+      case 0x82 :
+        return grn_nfkc121_char_type_table_e382[utf8[2] - 0x80];
+      case 0x83 :
+        return GRN_CHAR_KATAKANA;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return grn_nfkc121_char_type_table_e387[utf8[2] - 0x80];
+      case 0x88 :
+        return GRN_CHAR_SYMBOL;
+      case 0x89 :
+        return GRN_CHAR_SYMBOL;
+      case 0x8a :
+        return grn_nfkc121_char_type_table_e38a[utf8[2] - 0x80];
+      case 0x8b :
+        return GRN_CHAR_SYMBOL;
+      case 0x8c :
+        return GRN_CHAR_SYMBOL;
+      case 0x8d :
+        return GRN_CHAR_SYMBOL;
+      case 0x8e :
+        return GRN_CHAR_SYMBOL;
+      case 0x8f :
+        return GRN_CHAR_SYMBOL;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe4 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_SYMBOL;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe5 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe6 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe7 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe8 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xe9 :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xea :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return grn_nfkc121_char_type_table_ea93[utf8[2] - 0x80];
+      case 0x94 :
+        return GRN_CHAR_ALPHA;
+      case 0x95 :
+        return GRN_CHAR_ALPHA;
+      case 0x96 :
+        return GRN_CHAR_ALPHA;
+      case 0x97 :
+        return GRN_CHAR_ALPHA;
+      case 0x98 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xab) {
+          return grn_nfkc121_char_type_table_ea98[utf8[2] - 0x80];
+        }
+        break;
+      case 0x99 :
+        return grn_nfkc121_char_type_table_ea99[utf8[2] - 0x80];
+      case 0x9a :
+        return grn_nfkc121_char_type_table_ea9a[utf8[2] - 0x80];
+      case 0x9b :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb7) {
+          return grn_nfkc121_char_type_table_ea9b[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9c :
+        return grn_nfkc121_char_type_table_ea9c[utf8[2] - 0x80];
+      case 0x9d :
+        return GRN_CHAR_ALPHA;
+      case 0x9e :
+        return grn_nfkc121_char_type_table_ea9e[utf8[2] - 0x80];
+      case 0x9f :
+        if (utf8[2] >= 0x82 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_ea9f[utf8[2] - 0x82];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_eaa0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb7) {
+          return grn_nfkc121_char_type_table_eaa1[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x82 &&
+            utf8[2] <= 0xb3) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x8e &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_eaa3[utf8[2] - 0x8e];
+        }
+        break;
+      case 0xa4 :
+        return grn_nfkc121_char_type_table_eaa4[utf8[2] - 0x80];
+      case 0xa5 :
+        return grn_nfkc121_char_type_table_eaa5[utf8[2] - 0x80];
+      case 0xa6 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xb2) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_eaa7[utf8[2] - 0x81];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa8) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xa9 :
+        return grn_nfkc121_char_type_table_eaa9[utf8[2] - 0x80];
+      case 0xaa :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_eaaa[utf8[2] - 0x80];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_char_type_table_eaab[utf8[2] - 0x80];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_eaac[utf8[2] - 0x81];
+        }
+        break;
+      case 0xad :
+        return grn_nfkc121_char_type_table_eaad[utf8[2] - 0x80];
+      case 0xae :
+        return GRN_CHAR_ALPHA;
+      case 0xaf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_char_type_table_eaaf[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xeb :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xec :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xed :
+      switch (utf8[1]) {
+      case 0x80 :
+        return GRN_CHAR_KANJI;
+      case 0x81 :
+        return GRN_CHAR_KANJI;
+      case 0x82 :
+        return GRN_CHAR_KANJI;
+      case 0x83 :
+        return GRN_CHAR_KANJI;
+      case 0x84 :
+        return GRN_CHAR_KANJI;
+      case 0x85 :
+        return GRN_CHAR_KANJI;
+      case 0x86 :
+        return GRN_CHAR_KANJI;
+      case 0x87 :
+        return GRN_CHAR_KANJI;
+      case 0x88 :
+        return GRN_CHAR_KANJI;
+      case 0x89 :
+        return GRN_CHAR_KANJI;
+      case 0x8a :
+        return GRN_CHAR_KANJI;
+      case 0x8b :
+        return GRN_CHAR_KANJI;
+      case 0x8c :
+        return GRN_CHAR_KANJI;
+      case 0x8d :
+        return GRN_CHAR_KANJI;
+      case 0x8e :
+        return GRN_CHAR_KANJI;
+      case 0x8f :
+        return GRN_CHAR_KANJI;
+      case 0x90 :
+        return GRN_CHAR_KANJI;
+      case 0x91 :
+        return GRN_CHAR_KANJI;
+      case 0x92 :
+        return GRN_CHAR_KANJI;
+      case 0x93 :
+        return GRN_CHAR_KANJI;
+      case 0x94 :
+        return GRN_CHAR_KANJI;
+      case 0x95 :
+        return GRN_CHAR_KANJI;
+      case 0x96 :
+        return GRN_CHAR_KANJI;
+      case 0x97 :
+        return GRN_CHAR_KANJI;
+      case 0x98 :
+        return GRN_CHAR_KANJI;
+      case 0x99 :
+        return GRN_CHAR_KANJI;
+      case 0x9a :
+        return GRN_CHAR_KANJI;
+      case 0x9b :
+        return GRN_CHAR_KANJI;
+      case 0x9c :
+        return GRN_CHAR_KANJI;
+      case 0x9d :
+        return GRN_CHAR_KANJI;
+      case 0x9e :
+        return GRN_CHAR_KANJI;
+      case 0x9f :
+        return GRN_CHAR_KANJI;
+      case 0xa0 :
+        return GRN_CHAR_KANJI;
+      case 0xa1 :
+        return GRN_CHAR_KANJI;
+      case 0xa2 :
+        return GRN_CHAR_KANJI;
+      case 0xa3 :
+        return GRN_CHAR_KANJI;
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        return GRN_CHAR_KANJI;
+      case 0xad :
+        return GRN_CHAR_KANJI;
+      case 0xae :
+        return GRN_CHAR_KANJI;
+      case 0xaf :
+        return GRN_CHAR_KANJI;
+      case 0xb0 :
+        return GRN_CHAR_KANJI;
+      case 0xb1 :
+        return GRN_CHAR_KANJI;
+      case 0xb2 :
+        return GRN_CHAR_KANJI;
+      case 0xb3 :
+        return GRN_CHAR_KANJI;
+      case 0xb4 :
+        return GRN_CHAR_KANJI;
+      case 0xb5 :
+        return GRN_CHAR_KANJI;
+      case 0xb6 :
+        return GRN_CHAR_KANJI;
+      case 0xb7 :
+        return GRN_CHAR_KANJI;
+      case 0xb8 :
+        return GRN_CHAR_KANJI;
+      case 0xb9 :
+        return GRN_CHAR_KANJI;
+      case 0xba :
+        return GRN_CHAR_KANJI;
+      case 0xbb :
+        return GRN_CHAR_KANJI;
+      case 0xbc :
+        return GRN_CHAR_KANJI;
+      case 0xbd :
+        return GRN_CHAR_KANJI;
+      case 0xbe :
+        return GRN_CHAR_KANJI;
+      case 0xbf :
+        return GRN_CHAR_KANJI;
+      default :
+        break;
+      }
+      break;
+    case 0xef :
+      switch (utf8[1]) {
+      case 0xa4 :
+        return GRN_CHAR_KANJI;
+      case 0xa5 :
+        return GRN_CHAR_KANJI;
+      case 0xa6 :
+        return GRN_CHAR_KANJI;
+      case 0xa7 :
+        return GRN_CHAR_KANJI;
+      case 0xa8 :
+        return GRN_CHAR_KANJI;
+      case 0xa9 :
+        return GRN_CHAR_KANJI;
+      case 0xaa :
+        return GRN_CHAR_KANJI;
+      case 0xab :
+        return GRN_CHAR_KANJI;
+      case 0xac :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_char_type_table_efac[utf8[2] - 0x80];
+        }
+        break;
+      case 0xad :
+        return grn_nfkc121_char_type_table_efad[utf8[2] - 0x80];
+      case 0xae :
+        return grn_nfkc121_char_type_table_efae[utf8[2] - 0x80];
+      case 0xaf :
+        return grn_nfkc121_char_type_table_efaf[utf8[2] - 0x80];
+      case 0xb0 :
+        return GRN_CHAR_ALPHA;
+      case 0xb1 :
+        return GRN_CHAR_ALPHA;
+      case 0xb2 :
+        return GRN_CHAR_ALPHA;
+      case 0xb3 :
+        return GRN_CHAR_ALPHA;
+      case 0xb4 :
+        return grn_nfkc121_char_type_table_efb4[utf8[2] - 0x80];
+      case 0xb5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xb6 :
+        return grn_nfkc121_char_type_table_efb6[utf8[2] - 0x80];
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_char_type_table_efb7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_efb8[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb9 :
+        return grn_nfkc121_char_type_table_efb9[utf8[2] - 0x80];
+      case 0xba :
+        return GRN_CHAR_ALPHA;
+      case 0xbb :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbc) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_efbc[utf8[2] - 0x81];
+        }
+        break;
+      case 0xbd :
+        return grn_nfkc121_char_type_table_efbd[utf8[2] - 0x80];
+      case 0xbe :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return GRN_CHAR_ALPHA;
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x82 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_char_type_table_efbf[utf8[2] - 0x82];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xf0 :
+      switch (utf8[1]) {
+      case 0x90 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return grn_nfkc121_char_type_table_f09080[utf8[3] - 0x80];
+        case 0x81 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9d) {
+            return grn_nfkc121_char_type_table_f09081[utf8[3] - 0x80];
+          }
+          break;
+        case 0x82 :
+          return GRN_CHAR_ALPHA;
+        case 0x83 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xba) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x84 :
+          return grn_nfkc121_char_type_table_f09084[utf8[3] - 0x80];
+        case 0x85 :
+          return grn_nfkc121_char_type_table_f09085[utf8[3] - 0x80];
+        case 0x86 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa0) {
+            return grn_nfkc121_char_type_table_f09086[utf8[3] - 0x80];
+          }
+          break;
+        case 0x87 :
+          if (utf8[3] >= 0x90 &&
+              utf8[3] <= 0xbc) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        case 0x8a :
+          return grn_nfkc121_char_type_table_f0908a[utf8[3] - 0x80];
+        case 0x8b :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f0908b[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8c :
+          return grn_nfkc121_char_type_table_f0908c[utf8[3] - 0x80];
+        case 0x8d :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb5) {
+            return grn_nfkc121_char_type_table_f0908d[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8e :
+          return grn_nfkc121_char_type_table_f0908e[utf8[3] - 0x80];
+        case 0x8f :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x95) {
+            return grn_nfkc121_char_type_table_f0908f[utf8[3] - 0x80];
+          }
+          break;
+        case 0x90 :
+          return GRN_CHAR_ALPHA;
+        case 0x91 :
+          return GRN_CHAR_ALPHA;
+        case 0x92 :
+          return grn_nfkc121_char_type_table_f09092[utf8[3] - 0x80];
+        case 0x93 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f09093[utf8[3] - 0x80];
+          }
+          break;
+        case 0x94 :
+          return grn_nfkc121_char_type_table_f09094[utf8[3] - 0x80];
+        case 0x95 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return grn_nfkc121_char_type_table_f09095[utf8[3] - 0x80];
+          }
+          break;
+        case 0x98 :
+          return GRN_CHAR_ALPHA;
+        case 0x99 :
+          return GRN_CHAR_ALPHA;
+        case 0x9a :
+          return GRN_CHAR_ALPHA;
+        case 0x9b :
+          return GRN_CHAR_ALPHA;
+        case 0x9c :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb6) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x9d :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa7) {
+            return grn_nfkc121_char_type_table_f0909d[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa0 :
+          return grn_nfkc121_char_type_table_f090a0[utf8[3] - 0x80];
+        case 0xa1 :
+          return grn_nfkc121_char_type_table_f090a1[utf8[3] - 0x80];
+        case 0xa2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return grn_nfkc121_char_type_table_f090a2[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa3 :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f090a3[utf8[3] - 0xa0];
+          }
+          break;
+        case 0xa4 :
+          return grn_nfkc121_char_type_table_f090a4[utf8[3] - 0x80];
+        case 0xa6 :
+          return grn_nfkc121_char_type_table_f090a6[utf8[3] - 0x80];
+        case 0xa7 :
+          return grn_nfkc121_char_type_table_f090a7[utf8[3] - 0x80];
+        case 0xa8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb5) {
+            return grn_nfkc121_char_type_table_f090a8[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa9 :
+          return grn_nfkc121_char_type_table_f090a9[utf8[3] - 0x80];
+        case 0xaa :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9f) {
+            return grn_nfkc121_char_type_table_f090aa[utf8[3] - 0x80];
+          }
+          break;
+        case 0xab :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb6) {
+            return grn_nfkc121_char_type_table_f090ab[utf8[3] - 0x80];
+          }
+          break;
+        case 0xac :
+          return grn_nfkc121_char_type_table_f090ac[utf8[3] - 0x80];
+        case 0xad :
+          return grn_nfkc121_char_type_table_f090ad[utf8[3] - 0x80];
+        case 0xae :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return grn_nfkc121_char_type_table_f090ae[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb0 :
+          return GRN_CHAR_ALPHA;
+        case 0xb1 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x88) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb2) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb3 :
+          return grn_nfkc121_char_type_table_f090b3[utf8[3] - 0x80];
+        case 0xb4 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb9) {
+            return grn_nfkc121_char_type_table_f090b4[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb9 :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xbe) {
+            return GRN_CHAR_DIGIT;
+          }
+          break;
+        case 0xbc :
+          return grn_nfkc121_char_type_table_f090bc[utf8[3] - 0x80];
+        case 0xbd :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x99) {
+            return grn_nfkc121_char_type_table_f090bd[utf8[3] - 0x80];
+          }
+          break;
+        case 0xbf :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xb6) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x91 :
+        switch (utf8[2]) {
+        case 0x80 :
+          if (utf8[3] >= 0x83 &&
+              utf8[3] <= 0xb7) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x81 :
+          if (utf8[3] >= 0x87 &&
+              utf8[3] <= 0xaf) {
+            return grn_nfkc121_char_type_table_f09181[utf8[3] - 0x87];
+          }
+          break;
+        case 0x82 :
+          if (utf8[3] >= 0x83 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f09182[utf8[3] - 0x83];
+          }
+          break;
+        case 0x83 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb9) {
+            return grn_nfkc121_char_type_table_f09183[utf8[3] - 0x80];
+          }
+          break;
+        case 0x84 :
+          if (utf8[3] >= 0x83 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f09184[utf8[3] - 0x83];
+          }
+          break;
+        case 0x85 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb6) {
+            return grn_nfkc121_char_type_table_f09185[utf8[3] - 0x80];
+          }
+          break;
+        case 0x86 :
+          if (utf8[3] >= 0x83 &&
+              utf8[3] <= 0xb2) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x87 :
+          if (utf8[3] >= 0x81 &&
+              utf8[3] <= 0xb4) {
+            return grn_nfkc121_char_type_table_f09187[utf8[3] - 0x81];
+          }
+          break;
+        case 0x88 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbd) {
+            return grn_nfkc121_char_type_table_f09188[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8a :
+          return grn_nfkc121_char_type_table_f0918a[utf8[3] - 0x80];
+        case 0x8b :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb9) {
+            return grn_nfkc121_char_type_table_f0918b[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8c :
+          if (utf8[3] >= 0x85 &&
+              utf8[3] <= 0xbd) {
+            return grn_nfkc121_char_type_table_f0918c[utf8[3] - 0x85];
+          }
+          break;
+        case 0x8d :
+          if (utf8[3] >= 0x90 &&
+              utf8[3] <= 0xa1) {
+            return grn_nfkc121_char_type_table_f0918d[utf8[3] - 0x90];
+          }
+          break;
+        case 0x90 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb4) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x91 :
+          if (utf8[3] >= 0x87 &&
+              utf8[3] <= 0x9f) {
+            return grn_nfkc121_char_type_table_f09191[utf8[3] - 0x87];
+          }
+          break;
+        case 0x92 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x93 :
+          if (utf8[3] >= 0x84 &&
+              utf8[3] <= 0x99) {
+            return grn_nfkc121_char_type_table_f09193[utf8[3] - 0x84];
+          }
+          break;
+        case 0x96 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xae) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x97 :
+          if (utf8[3] >= 0x81 &&
+              utf8[3] <= 0x9b) {
+            return grn_nfkc121_char_type_table_f09197[utf8[3] - 0x81];
+          }
+          break;
+        case 0x98 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x99 :
+          if (utf8[3] >= 0x81 &&
+              utf8[3] <= 0xac) {
+            return grn_nfkc121_char_type_table_f09199[utf8[3] - 0x81];
+          }
+          break;
+        case 0x9a :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb8) {
+            return grn_nfkc121_char_type_table_f0919a[utf8[3] - 0x80];
+          }
+          break;
+        case 0x9b :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x89) {
+            return GRN_CHAR_DIGIT;
+          }
+          break;
+        case 0x9c :
+          return grn_nfkc121_char_type_table_f0919c[utf8[3] - 0x80];
+        case 0xa0 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f091a0[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa2 :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xbf) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xa3 :
+          return grn_nfkc121_char_type_table_f091a3[utf8[3] - 0x80];
+        case 0xa6 :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f091a6[utf8[3] - 0xa0];
+          }
+          break;
+        case 0xa7 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa3) {
+            return grn_nfkc121_char_type_table_f091a7[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa8 :
+          return grn_nfkc121_char_type_table_f091a8[utf8[3] - 0x80];
+        case 0xa9 :
+          return grn_nfkc121_char_type_table_f091a9[utf8[3] - 0x80];
+        case 0xaa :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa2) {
+            return grn_nfkc121_char_type_table_f091aa[utf8[3] - 0x80];
+          }
+          break;
+        case 0xab :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb8) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb0 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xae) {
+            return grn_nfkc121_char_type_table_f091b0[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb1 :
+          return grn_nfkc121_char_type_table_f091b1[utf8[3] - 0x80];
+        case 0xb2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x8f) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb4 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb0) {
+            return grn_nfkc121_char_type_table_f091b4[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb5 :
+          if (utf8[3] >= 0x86 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f091b5[utf8[3] - 0x86];
+          }
+          break;
+        case 0xb6 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa9) {
+            return grn_nfkc121_char_type_table_f091b6[utf8[3] - 0x80];
+          }
+          break;
+        case 0xbb :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xb8) {
+            return grn_nfkc121_char_type_table_f091bb[utf8[3] - 0xa0];
+          }
+          break;
+        case 0xbf :
+          return grn_nfkc121_char_type_table_f091bf[utf8[3] - 0x80];
+        default :
+          break;
+        }
+        break;
+      case 0x92 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_ALPHA;
+        case 0x81 :
+          return GRN_CHAR_ALPHA;
+        case 0x82 :
+          return GRN_CHAR_ALPHA;
+        case 0x83 :
+          return GRN_CHAR_ALPHA;
+        case 0x84 :
+          return GRN_CHAR_ALPHA;
+        case 0x85 :
+          return GRN_CHAR_ALPHA;
+        case 0x86 :
+          return GRN_CHAR_ALPHA;
+        case 0x87 :
+          return GRN_CHAR_ALPHA;
+        case 0x88 :
+          return GRN_CHAR_ALPHA;
+        case 0x89 :
+          return GRN_CHAR_ALPHA;
+        case 0x8a :
+          return GRN_CHAR_ALPHA;
+        case 0x8b :
+          return GRN_CHAR_ALPHA;
+        case 0x8c :
+          return GRN_CHAR_ALPHA;
+        case 0x8d :
+          return GRN_CHAR_ALPHA;
+        case 0x8e :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x99) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0x90 :
+          return GRN_CHAR_DIGIT;
+        case 0x91 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb4) {
+            return grn_nfkc121_char_type_table_f09291[utf8[3] - 0x80];
+          }
+          break;
+        case 0x92 :
+          return GRN_CHAR_ALPHA;
+        case 0x93 :
+          return GRN_CHAR_ALPHA;
+        case 0x94 :
+          return GRN_CHAR_ALPHA;
+        case 0x95 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x83) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x93 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_ALPHA;
+        case 0x81 :
+          return GRN_CHAR_ALPHA;
+        case 0x82 :
+          return GRN_CHAR_ALPHA;
+        case 0x83 :
+          return GRN_CHAR_ALPHA;
+        case 0x84 :
+          return GRN_CHAR_ALPHA;
+        case 0x85 :
+          return GRN_CHAR_ALPHA;
+        case 0x86 :
+          return GRN_CHAR_ALPHA;
+        case 0x87 :
+          return GRN_CHAR_ALPHA;
+        case 0x88 :
+          return GRN_CHAR_ALPHA;
+        case 0x89 :
+          return GRN_CHAR_ALPHA;
+        case 0x8a :
+          return GRN_CHAR_ALPHA;
+        case 0x8b :
+          return GRN_CHAR_ALPHA;
+        case 0x8c :
+          return GRN_CHAR_ALPHA;
+        case 0x8d :
+          return GRN_CHAR_ALPHA;
+        case 0x8e :
+          return GRN_CHAR_ALPHA;
+        case 0x8f :
+          return GRN_CHAR_ALPHA;
+        case 0x90 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xae) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x94 :
+        switch (utf8[2]) {
+        case 0x90 :
+          return GRN_CHAR_ALPHA;
+        case 0x91 :
+          return GRN_CHAR_ALPHA;
+        case 0x92 :
+          return GRN_CHAR_ALPHA;
+        case 0x93 :
+          return GRN_CHAR_ALPHA;
+        case 0x94 :
+          return GRN_CHAR_ALPHA;
+        case 0x95 :
+          return GRN_CHAR_ALPHA;
+        case 0x96 :
+          return GRN_CHAR_ALPHA;
+        case 0x97 :
+          return GRN_CHAR_ALPHA;
+        case 0x98 :
+          return GRN_CHAR_ALPHA;
+        case 0x99 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x86) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x96 :
+        switch (utf8[2]) {
+        case 0xa0 :
+          return GRN_CHAR_ALPHA;
+        case 0xa1 :
+          return GRN_CHAR_ALPHA;
+        case 0xa2 :
+          return GRN_CHAR_ALPHA;
+        case 0xa3 :
+          return GRN_CHAR_ALPHA;
+        case 0xa4 :
+          return GRN_CHAR_ALPHA;
+        case 0xa5 :
+          return GRN_CHAR_ALPHA;
+        case 0xa6 :
+          return GRN_CHAR_ALPHA;
+        case 0xa7 :
+          return GRN_CHAR_ALPHA;
+        case 0xa8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb8) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xa9 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return grn_nfkc121_char_type_table_f096a9[utf8[3] - 0x80];
+          }
+          break;
+        case 0xab :
+          if (utf8[3] >= 0x90 &&
+              utf8[3] <= 0xb5) {
+            return grn_nfkc121_char_type_table_f096ab[utf8[3] - 0x90];
+          }
+          break;
+        case 0xac :
+          return grn_nfkc121_char_type_table_f096ac[utf8[3] - 0x80];
+        case 0xad :
+          return grn_nfkc121_char_type_table_f096ad[utf8[3] - 0x80];
+        case 0xae :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x8f) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb9 :
+          return GRN_CHAR_ALPHA;
+        case 0xba :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9a) {
+            return grn_nfkc121_char_type_table_f096ba[utf8[3] - 0x80];
+          }
+          break;
+        case 0xbc :
+          return GRN_CHAR_ALPHA;
+        case 0xbd :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x90) {
+            return grn_nfkc121_char_type_table_f096bd[utf8[3] - 0x80];
+          }
+          break;
+        case 0xbe :
+          if (utf8[3] >= 0x93 &&
+              utf8[3] <= 0x9f) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xbf :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xa3) {
+            return grn_nfkc121_char_type_table_f096bf[utf8[3] - 0xa0];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x97 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_ALPHA;
+        case 0x81 :
+          return GRN_CHAR_ALPHA;
+        case 0x82 :
+          return GRN_CHAR_ALPHA;
+        case 0x83 :
+          return GRN_CHAR_ALPHA;
+        case 0x84 :
+          return GRN_CHAR_ALPHA;
+        case 0x85 :
+          return GRN_CHAR_ALPHA;
+        case 0x86 :
+          return GRN_CHAR_ALPHA;
+        case 0x87 :
+          return GRN_CHAR_ALPHA;
+        case 0x88 :
+          return GRN_CHAR_ALPHA;
+        case 0x89 :
+          return GRN_CHAR_ALPHA;
+        case 0x8a :
+          return GRN_CHAR_ALPHA;
+        case 0x8b :
+          return GRN_CHAR_ALPHA;
+        case 0x8c :
+          return GRN_CHAR_ALPHA;
+        case 0x8d :
+          return GRN_CHAR_ALPHA;
+        case 0x8e :
+          return GRN_CHAR_ALPHA;
+        case 0x8f :
+          return GRN_CHAR_ALPHA;
+        case 0x90 :
+          return GRN_CHAR_ALPHA;
+        case 0x91 :
+          return GRN_CHAR_ALPHA;
+        case 0x92 :
+          return GRN_CHAR_ALPHA;
+        case 0x93 :
+          return GRN_CHAR_ALPHA;
+        case 0x94 :
+          return GRN_CHAR_ALPHA;
+        case 0x95 :
+          return GRN_CHAR_ALPHA;
+        case 0x96 :
+          return GRN_CHAR_ALPHA;
+        case 0x97 :
+          return GRN_CHAR_ALPHA;
+        case 0x98 :
+          return GRN_CHAR_ALPHA;
+        case 0x99 :
+          return GRN_CHAR_ALPHA;
+        case 0x9a :
+          return GRN_CHAR_ALPHA;
+        case 0x9b :
+          return GRN_CHAR_ALPHA;
+        case 0x9c :
+          return GRN_CHAR_ALPHA;
+        case 0x9d :
+          return GRN_CHAR_ALPHA;
+        case 0x9e :
+          return GRN_CHAR_ALPHA;
+        case 0x9f :
+          return GRN_CHAR_ALPHA;
+        case 0xa0 :
+          return GRN_CHAR_ALPHA;
+        case 0xa1 :
+          return GRN_CHAR_ALPHA;
+        case 0xa2 :
+          return GRN_CHAR_ALPHA;
+        case 0xa3 :
+          return GRN_CHAR_ALPHA;
+        case 0xa4 :
+          return GRN_CHAR_ALPHA;
+        case 0xa5 :
+          return GRN_CHAR_ALPHA;
+        case 0xa6 :
+          return GRN_CHAR_ALPHA;
+        case 0xa7 :
+          return GRN_CHAR_ALPHA;
+        case 0xa8 :
+          return GRN_CHAR_ALPHA;
+        case 0xa9 :
+          return GRN_CHAR_ALPHA;
+        case 0xaa :
+          return GRN_CHAR_ALPHA;
+        case 0xab :
+          return GRN_CHAR_ALPHA;
+        case 0xac :
+          return GRN_CHAR_ALPHA;
+        case 0xad :
+          return GRN_CHAR_ALPHA;
+        case 0xae :
+          return GRN_CHAR_ALPHA;
+        case 0xaf :
+          return GRN_CHAR_ALPHA;
+        case 0xb0 :
+          return GRN_CHAR_ALPHA;
+        case 0xb1 :
+          return GRN_CHAR_ALPHA;
+        case 0xb2 :
+          return GRN_CHAR_ALPHA;
+        case 0xb3 :
+          return GRN_CHAR_ALPHA;
+        case 0xb4 :
+          return GRN_CHAR_ALPHA;
+        case 0xb5 :
+          return GRN_CHAR_ALPHA;
+        case 0xb6 :
+          return GRN_CHAR_ALPHA;
+        case 0xb7 :
+          return GRN_CHAR_ALPHA;
+        case 0xb8 :
+          return GRN_CHAR_ALPHA;
+        case 0xb9 :
+          return GRN_CHAR_ALPHA;
+        case 0xba :
+          return GRN_CHAR_ALPHA;
+        case 0xbb :
+          return GRN_CHAR_ALPHA;
+        case 0xbc :
+          return GRN_CHAR_ALPHA;
+        case 0xbd :
+          return GRN_CHAR_ALPHA;
+        case 0xbe :
+          return GRN_CHAR_ALPHA;
+        case 0xbf :
+          return GRN_CHAR_ALPHA;
+        default :
+          break;
+        }
+        break;
+      case 0x98 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_ALPHA;
+        case 0x81 :
+          return GRN_CHAR_ALPHA;
+        case 0x82 :
+          return GRN_CHAR_ALPHA;
+        case 0x83 :
+          return GRN_CHAR_ALPHA;
+        case 0x84 :
+          return GRN_CHAR_ALPHA;
+        case 0x85 :
+          return GRN_CHAR_ALPHA;
+        case 0x86 :
+          return GRN_CHAR_ALPHA;
+        case 0x87 :
+          return GRN_CHAR_ALPHA;
+        case 0x88 :
+          return GRN_CHAR_ALPHA;
+        case 0x89 :
+          return GRN_CHAR_ALPHA;
+        case 0x8a :
+          return GRN_CHAR_ALPHA;
+        case 0x8b :
+          return GRN_CHAR_ALPHA;
+        case 0x8c :
+          return GRN_CHAR_ALPHA;
+        case 0x8d :
+          return GRN_CHAR_ALPHA;
+        case 0x8e :
+          return GRN_CHAR_ALPHA;
+        case 0x8f :
+          return GRN_CHAR_ALPHA;
+        case 0x90 :
+          return GRN_CHAR_ALPHA;
+        case 0x91 :
+          return GRN_CHAR_ALPHA;
+        case 0x92 :
+          return GRN_CHAR_ALPHA;
+        case 0x93 :
+          return GRN_CHAR_ALPHA;
+        case 0x94 :
+          return GRN_CHAR_ALPHA;
+        case 0x95 :
+          return GRN_CHAR_ALPHA;
+        case 0x96 :
+          return GRN_CHAR_ALPHA;
+        case 0x97 :
+          return GRN_CHAR_ALPHA;
+        case 0x98 :
+          return GRN_CHAR_ALPHA;
+        case 0x99 :
+          return GRN_CHAR_ALPHA;
+        case 0x9a :
+          return GRN_CHAR_ALPHA;
+        case 0x9b :
+          return GRN_CHAR_ALPHA;
+        case 0x9c :
+          return GRN_CHAR_ALPHA;
+        case 0x9d :
+          return GRN_CHAR_ALPHA;
+        case 0x9e :
+          return GRN_CHAR_ALPHA;
+        case 0x9f :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb7) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xa0 :
+          return GRN_CHAR_ALPHA;
+        case 0xa1 :
+          return GRN_CHAR_ALPHA;
+        case 0xa2 :
+          return GRN_CHAR_ALPHA;
+        case 0xa3 :
+          return GRN_CHAR_ALPHA;
+        case 0xa4 :
+          return GRN_CHAR_ALPHA;
+        case 0xa5 :
+          return GRN_CHAR_ALPHA;
+        case 0xa6 :
+          return GRN_CHAR_ALPHA;
+        case 0xa7 :
+          return GRN_CHAR_ALPHA;
+        case 0xa8 :
+          return GRN_CHAR_ALPHA;
+        case 0xa9 :
+          return GRN_CHAR_ALPHA;
+        case 0xaa :
+          return GRN_CHAR_ALPHA;
+        case 0xab :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb2) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9b :
+        switch (utf8[2]) {
+        case 0x80 :
+          return grn_nfkc121_char_type_table_f09b80[utf8[3] - 0x80];
+        case 0x81 :
+          return GRN_CHAR_HIRAGANA;
+        case 0x82 :
+          return GRN_CHAR_HIRAGANA;
+        case 0x83 :
+          return GRN_CHAR_HIRAGANA;
+        case 0x84 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return GRN_CHAR_HIRAGANA;
+          }
+          break;
+        case 0x85 :
+          if (utf8[3] >= 0x90 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f09b85[utf8[3] - 0x90];
+          }
+          break;
+        case 0x86 :
+          return GRN_CHAR_ALPHA;
+        case 0x87 :
+          return GRN_CHAR_ALPHA;
+        case 0x88 :
+          return GRN_CHAR_ALPHA;
+        case 0x89 :
+          return GRN_CHAR_ALPHA;
+        case 0x8a :
+          return GRN_CHAR_ALPHA;
+        case 0x8b :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return GRN_CHAR_ALPHA;
+          }
+          break;
+        case 0xb0 :
+          return GRN_CHAR_ALPHA;
+        case 0xb1 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbc) {
+            return grn_nfkc121_char_type_table_f09bb1[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9f) {
+            return grn_nfkc121_char_type_table_f09bb2[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9d :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_SYMBOL;
+        case 0x81 :
+          return GRN_CHAR_SYMBOL;
+        case 0x82 :
+          return GRN_CHAR_SYMBOL;
+        case 0x83 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb5) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        case 0x84 :
+          return grn_nfkc121_char_type_table_f09d84[utf8[3] - 0x80];
+        case 0x85 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xac) {
+            return grn_nfkc121_char_type_table_f09d85[utf8[3] - 0x80];
+          }
+          break;
+        case 0x86 :
+          if (utf8[3] >= 0x83 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f09d86[utf8[3] - 0x83];
+          }
+          break;
+        case 0x87 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa8) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        case 0x88 :
+          return GRN_CHAR_SYMBOL;
+        case 0x89 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x85) {
+            return grn_nfkc121_char_type_table_f09d89[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8b :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xb3) {
+            return GRN_CHAR_DIGIT;
+          }
+          break;
+        case 0x8c :
+          return GRN_CHAR_SYMBOL;
+        case 0x8d :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb8) {
+            return grn_nfkc121_char_type_table_f09d8d[utf8[3] - 0x80];
+          }
+          break;
+        case 0x90 :
+          return GRN_CHAR_ALPHA;
+        case 0x91 :
+          return grn_nfkc121_char_type_table_f09d91[utf8[3] - 0x80];
+        case 0x92 :
+          return grn_nfkc121_char_type_table_f09d92[utf8[3] - 0x80];
+        case 0x93 :
+          return grn_nfkc121_char_type_table_f09d93[utf8[3] - 0x80];
+        case 0x94 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbe) {
+            return grn_nfkc121_char_type_table_f09d94[utf8[3] - 0x80];
+          }
+          break;
+        case 0x95 :
+          return grn_nfkc121_char_type_table_f09d95[utf8[3] - 0x80];
+        case 0x96 :
+          return GRN_CHAR_ALPHA;
+        case 0x97 :
+          return GRN_CHAR_ALPHA;
+        case 0x98 :
+          return GRN_CHAR_ALPHA;
+        case 0x99 :
+          return GRN_CHAR_ALPHA;
+        case 0x9a :
+          return grn_nfkc121_char_type_table_f09d9a[utf8[3] - 0x80];
+        case 0x9b :
+          return grn_nfkc121_char_type_table_f09d9b[utf8[3] - 0x80];
+        case 0x9c :
+          return grn_nfkc121_char_type_table_f09d9c[utf8[3] - 0x80];
+        case 0x9d :
+          return grn_nfkc121_char_type_table_f09d9d[utf8[3] - 0x80];
+        case 0x9e :
+          return grn_nfkc121_char_type_table_f09d9e[utf8[3] - 0x80];
+        case 0x9f :
+          return grn_nfkc121_char_type_table_f09d9f[utf8[3] - 0x80];
+        case 0xa0 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa1 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa2 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa3 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa4 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa5 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa6 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa7 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa8 :
+          if (utf8[3] >= 0xb7 &&
+              utf8[3] <= 0xba) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        case 0xa9 :
+          if (utf8[3] >= 0xad &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_char_type_table_f09da9[utf8[3] - 0xad];
+          }
+          break;
+        case 0xaa :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x8b) {
+            return grn_nfkc121_char_type_table_f09daa[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9e :
+        switch (utf8[2]) {
+        case 0x84 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbd) {
+            return grn_nfkc121_char_type_table_f09e84[utf8[3] - 0x80];
+          }
+          break;
+        case 0x85 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x8f) {
+            return grn_nfkc121_char_type_table_f09e85[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8b :
+          return grn_nfkc121_char_type_table_f09e8b[utf8[3] - 0x80];
+        case 0xa0 :
+          return GRN_CHAR_ALPHA;
+        case 0xa1 :
+          return GRN_CHAR_ALPHA;
+        case 0xa2 :
+          return GRN_CHAR_ALPHA;
+        case 0xa3 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x8f) {
+            return grn_nfkc121_char_type_table_f09ea3[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa4 :
+          return GRN_CHAR_ALPHA;
+        case 0xa5 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9f) {
+            return grn_nfkc121_char_type_table_f09ea5[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb1 :
+          if (utf8[3] >= 0xb1 &&
+              utf8[3] <= 0xbf) {
+            return GRN_CHAR_DIGIT;
+          }
+          break;
+        case 0xb2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb4) {
+            return grn_nfkc121_char_type_table_f09eb2[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb4 :
+          if (utf8[3] >= 0x81 &&
+              utf8[3] <= 0xbd) {
+            return grn_nfkc121_char_type_table_f09eb4[utf8[3] - 0x81];
+          }
+          break;
+        case 0xb8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f09eb8[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb9 :
+          if (utf8[3] >= 0x82 &&
+              utf8[3] <= 0xbe) {
+            return grn_nfkc121_char_type_table_f09eb9[utf8[3] - 0x82];
+          }
+          break;
+        case 0xba :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f09eba[utf8[3] - 0x80];
+          }
+          break;
+        case 0xbb :
+          if (utf8[3] >= 0xb0 &&
+              utf8[3] <= 0xb1) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9f :
+        switch (utf8[2]) {
+        case 0x80 :
+          return grn_nfkc121_char_type_table_f09f80[utf8[3] - 0x80];
+        case 0x81 :
+          return GRN_CHAR_SYMBOL;
+        case 0x82 :
+          return grn_nfkc121_char_type_table_f09f82[utf8[3] - 0x80];
+        case 0x83 :
+          if (utf8[3] >= 0x81 &&
+              utf8[3] <= 0xb5) {
+            return grn_nfkc121_char_type_table_f09f83[utf8[3] - 0x81];
+          }
+          break;
+        case 0x84 :
+          return grn_nfkc121_char_type_table_f09f84[utf8[3] - 0x80];
+        case 0x85 :
+          return grn_nfkc121_char_type_table_f09f85[utf8[3] - 0x80];
+        case 0x86 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xac) {
+            return grn_nfkc121_char_type_table_f09f86[utf8[3] - 0x80];
+          }
+          break;
+        case 0x87 :
+          if (utf8[3] >= 0xa6 &&
+              utf8[3] <= 0xbf) {
+            return GRN_CHAR_EMOJI;
+          }
+          break;
+        case 0x88 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_char_type_table_f09f88[utf8[3] - 0x80];
+          }
+          break;
+        case 0x89 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa5) {
+            return grn_nfkc121_char_type_table_f09f89[utf8[3] - 0x80];
+          }
+          break;
+        case 0x8c :
+          return GRN_CHAR_EMOJI;
+        case 0x8d :
+          return GRN_CHAR_EMOJI;
+        case 0x8e :
+          return GRN_CHAR_EMOJI;
+        case 0x8f :
+          return GRN_CHAR_EMOJI;
+        case 0x90 :
+          return GRN_CHAR_EMOJI;
+        case 0x91 :
+          return GRN_CHAR_EMOJI;
+        case 0x92 :
+          return GRN_CHAR_EMOJI;
+        case 0x93 :
+          return GRN_CHAR_EMOJI;
+        case 0x94 :
+          return GRN_CHAR_EMOJI;
+        case 0x95 :
+          return GRN_CHAR_EMOJI;
+        case 0x96 :
+          return GRN_CHAR_EMOJI;
+        case 0x97 :
+          return GRN_CHAR_EMOJI;
+        case 0x98 :
+          return GRN_CHAR_EMOJI;
+        case 0x99 :
+          return grn_nfkc121_char_type_table_f09f99[utf8[3] - 0x80];
+        case 0x9a :
+          return GRN_CHAR_EMOJI;
+        case 0x9b :
+          return GRN_CHAR_EMOJI;
+        case 0x9c :
+          return GRN_CHAR_SYMBOL;
+        case 0x9d :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb3) {
+            return GRN_CHAR_SYMBOL;
+          }
+          break;
+        case 0x9e :
+          return GRN_CHAR_SYMBOL;
+        case 0x9f :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xab) {
+            return grn_nfkc121_char_type_table_f09f9f[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa0 :
+          return grn_nfkc121_char_type_table_f09fa0[utf8[3] - 0x80];
+        case 0xa1 :
+          return grn_nfkc121_char_type_table_f09fa1[utf8[3] - 0x80];
+        case 0xa2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xad) {
+            return grn_nfkc121_char_type_table_f09fa2[utf8[3] - 0x80];
+          }
+          break;
+        case 0xa4 :
+          return grn_nfkc121_char_type_table_f09fa4[utf8[3] - 0x80];
+        case 0xa5 :
+          return grn_nfkc121_char_type_table_f09fa5[utf8[3] - 0x80];
+        case 0xa6 :
+          return grn_nfkc121_char_type_table_f09fa6[utf8[3] - 0x80];
+        case 0xa7 :
+          return grn_nfkc121_char_type_table_f09fa7[utf8[3] - 0x80];
+        case 0xa8 :
+          return GRN_CHAR_SYMBOL;
+        case 0xa9 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xba) {
+            return grn_nfkc121_char_type_table_f09fa9[utf8[3] - 0x80];
+          }
+          break;
+        case 0xaa :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x95) {
+            return grn_nfkc121_char_type_table_f09faa[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0xa0 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa1 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa2 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa3 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa4 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa5 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa6 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa7 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa8 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xa9 :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xaa :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9f) {
+            return GRN_CHAR_KANJI;
+          }
+          break;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xab :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xac :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xad :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          return GRN_CHAR_KANJI;
+        case 0xb0 :
+          return GRN_CHAR_KANJI;
+        case 0xb1 :
+          return GRN_CHAR_KANJI;
+        case 0xb2 :
+          return GRN_CHAR_KANJI;
+        case 0xb3 :
+          return GRN_CHAR_KANJI;
+        case 0xb4 :
+          return GRN_CHAR_KANJI;
+        case 0xb5 :
+          return GRN_CHAR_KANJI;
+        case 0xb6 :
+          return GRN_CHAR_KANJI;
+        case 0xb7 :
+          return GRN_CHAR_KANJI;
+        case 0xb8 :
+          return GRN_CHAR_KANJI;
+        case 0xb9 :
+          return GRN_CHAR_KANJI;
+        case 0xba :
+          return GRN_CHAR_KANJI;
+        case 0xbb :
+          return GRN_CHAR_KANJI;
+        case 0xbc :
+          return GRN_CHAR_KANJI;
+        case 0xbd :
+          return GRN_CHAR_KANJI;
+        case 0xbe :
+          return GRN_CHAR_KANJI;
+        case 0xbf :
+          return GRN_CHAR_KANJI;
+        default :
+          break;
+        }
+        break;
+      case 0xae :
+        switch (utf8[2]) {
+        case 0x80 :
+          return GRN_CHAR_KANJI;
+        case 0x81 :
+          return GRN_CHAR_KANJI;
+        case 0x82 :
+          return GRN_CHAR_KANJI;
+        case 0x83 :
+          return GRN_CHAR_KANJI;
+        case 0x84 :
+          return GRN_CHAR_KANJI;
+        case 0x85 :
+          return GRN_CHAR_KANJI;
+        case 0x86 :
+          return GRN_CHAR_KANJI;
+        case 0x87 :
+          return GRN_CHAR_KANJI;
+        case 0x88 :
+          return GRN_CHAR_KANJI;
+        case 0x89 :
+          return GRN_CHAR_KANJI;
+        case 0x8a :
+          return GRN_CHAR_KANJI;
+        case 0x8b :
+          return GRN_CHAR_KANJI;
+        case 0x8c :
+          return GRN_CHAR_KANJI;
+        case 0x8d :
+          return GRN_CHAR_KANJI;
+        case 0x8e :
+          return GRN_CHAR_KANJI;
+        case 0x8f :
+          return GRN_CHAR_KANJI;
+        case 0x90 :
+          return GRN_CHAR_KANJI;
+        case 0x91 :
+          return GRN_CHAR_KANJI;
+        case 0x92 :
+          return GRN_CHAR_KANJI;
+        case 0x93 :
+          return GRN_CHAR_KANJI;
+        case 0x94 :
+          return GRN_CHAR_KANJI;
+        case 0x95 :
+          return GRN_CHAR_KANJI;
+        case 0x96 :
+          return GRN_CHAR_KANJI;
+        case 0x97 :
+          return GRN_CHAR_KANJI;
+        case 0x98 :
+          return GRN_CHAR_KANJI;
+        case 0x99 :
+          return GRN_CHAR_KANJI;
+        case 0x9a :
+          return GRN_CHAR_KANJI;
+        case 0x9b :
+          return GRN_CHAR_KANJI;
+        case 0x9c :
+          return GRN_CHAR_KANJI;
+        case 0x9d :
+          return GRN_CHAR_KANJI;
+        case 0x9e :
+          return GRN_CHAR_KANJI;
+        case 0x9f :
+          return GRN_CHAR_KANJI;
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          return GRN_CHAR_KANJI;
+        case 0xa9 :
+          return GRN_CHAR_KANJI;
+        case 0xaa :
+          return GRN_CHAR_KANJI;
+        case 0xab :
+          return GRN_CHAR_KANJI;
+        case 0xac :
+          return GRN_CHAR_KANJI;
+        case 0xad :
+          return GRN_CHAR_KANJI;
+        case 0xae :
+          return GRN_CHAR_KANJI;
+        case 0xaf :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xaf) {
+            return GRN_CHAR_KANJI;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0xaf :
+        switch (utf8[2]) {
+        case 0xa0 :
+          return GRN_CHAR_KANJI;
+        case 0xa1 :
+          return GRN_CHAR_KANJI;
+        case 0xa2 :
+          return GRN_CHAR_KANJI;
+        case 0xa3 :
+          return GRN_CHAR_KANJI;
+        case 0xa4 :
+          return GRN_CHAR_KANJI;
+        case 0xa5 :
+          return GRN_CHAR_KANJI;
+        case 0xa6 :
+          return GRN_CHAR_KANJI;
+        case 0xa7 :
+          return GRN_CHAR_KANJI;
+        case 0xa8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9f) {
+            return GRN_CHAR_KANJI;
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return GRN_CHAR_OTHERS;
+}
+
+static const char *grn_nfkc121_decompose_table_[] = {
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a"
+};
+
+static const char *grn_nfkc121_decompose_table_c2[] = {
+  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xcc\x88", NULL, "\x61", NULL, NULL, NULL, NULL, "\xcc\x84",
+  NULL, NULL, "\x32", "\x33", "\xcc\x81", "\xce\xbc", NULL, NULL,
+  "\xcc\xa7", "\x31", "\x6f", NULL, "\x31\xe2\x81\x84\x34", "\x31\xe2\x81\x84\x32", "\x33\xe2\x81\x84\x34"
+};
+
+static const char *grn_nfkc121_decompose_table_c3[] = {
+  "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7",
+  "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf",
+  "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", NULL,
+  "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe"
+};
+
+static const char *grn_nfkc121_decompose_table_c4[] = {
+  "\xc4\x81", NULL, "\xc4\x83", NULL, "\xc4\x85", NULL, "\xc4\x87", NULL,
+  "\xc4\x89", NULL, "\xc4\x8b", NULL, "\xc4\x8d", NULL, "\xc4\x8f", NULL,
+  "\xc4\x91", NULL, "\xc4\x93", NULL, "\xc4\x95", NULL, "\xc4\x97", NULL,
+  "\xc4\x99", NULL, "\xc4\x9b", NULL, "\xc4\x9d", NULL, "\xc4\x9f", NULL,
+  "\xc4\xa1", NULL, "\xc4\xa3", NULL, "\xc4\xa5", NULL, "\xc4\xa7", NULL,
+  "\xc4\xa9", NULL, "\xc4\xab", NULL, "\xc4\xad", NULL, "\xc4\xaf", NULL,
+  "\x69\xcc\x87", NULL, "\x69\x6a", "\x69\x6a", "\xc4\xb5", NULL, "\xc4\xb7", NULL,
+  NULL, "\xc4\xba", NULL, "\xc4\xbc", NULL, "\xc4\xbe", NULL, "\x6c\xc2\xb7"
+};
+
+static const char *grn_nfkc121_decompose_table_c5[] = {
+  "\x6c\xc2\xb7", "\xc5\x82", NULL, "\xc5\x84", NULL, "\xc5\x86", NULL, "\xc5\x88",
+  NULL, "\xca\xbc\x6e", "\xc5\x8b", NULL, "\xc5\x8d", NULL, "\xc5\x8f", NULL,
+  "\xc5\x91", NULL, "\xc5\x93", NULL, "\xc5\x95", NULL, "\xc5\x97", NULL,
+  "\xc5\x99", NULL, "\xc5\x9b", NULL, "\xc5\x9d", NULL, "\xc5\x9f", NULL,
+  "\xc5\xa1", NULL, "\xc5\xa3", NULL, "\xc5\xa5", NULL, "\xc5\xa7", NULL,
+  "\xc5\xa9", NULL, "\xc5\xab", NULL, "\xc5\xad", NULL, "\xc5\xaf", NULL,
+  "\xc5\xb1", NULL, "\xc5\xb3", NULL, "\xc5\xb5", NULL, "\xc5\xb7", NULL,
+  "\xc3\xbf", "\xc5\xba", NULL, "\xc5\xbc", NULL, "\xc5\xbe", NULL, "\x73"
+};
+
+static const char *grn_nfkc121_decompose_table_c6[] = {
+  "\xc9\x93", "\xc6\x83", NULL, "\xc6\x85", NULL, "\xc9\x94", "\xc6\x88", NULL,
+  "\xc9\x96", "\xc9\x97", "\xc6\x8c", NULL, NULL, "\xc7\x9d", "\xc9\x99", "\xc9\x9b",
+  "\xc6\x92", NULL, "\xc9\xa0", "\xc9\xa3", NULL, "\xc9\xa9", "\xc9\xa8", "\xc6\x99",
+  NULL, NULL, NULL, "\xc9\xaf", "\xc9\xb2", NULL, "\xc9\xb5", "\xc6\xa1",
+  NULL, "\xc6\xa3", NULL, "\xc6\xa5", NULL, "\xca\x80", "\xc6\xa8", NULL,
+  "\xca\x83", NULL, NULL, "\xc6\xad", NULL, "\xca\x88", "\xc6\xb0", NULL,
+  "\xca\x8a", "\xca\x8b", "\xc6\xb4", NULL, "\xc6\xb6", NULL, "\xca\x92", "\xc6\xb9",
+  NULL, NULL, NULL, "\xc6\xbd"
+};
+
+static const char *grn_nfkc121_decompose_table_c7[] = {
+  "\x64\xc5\xbe", "\x64\xc5\xbe", "\x64\xc5\xbe", "\x6c\x6a", "\x6c\x6a", "\x6c\x6a", "\x6e\x6a", "\x6e\x6a",
+  "\x6e\x6a", "\xc7\x8e", NULL, "\xc7\x90", NULL, "\xc7\x92", NULL, "\xc7\x94",
+  NULL, "\xc7\x96", NULL, "\xc7\x98", NULL, "\xc7\x9a", NULL, "\xc7\x9c",
+  NULL, NULL, "\xc7\x9f", NULL, "\xc7\xa1", NULL, "\xc7\xa3", NULL,
+  "\xc7\xa5", NULL, "\xc7\xa7", NULL, "\xc7\xa9", NULL, "\xc7\xab", NULL,
+  "\xc7\xad", NULL, "\xc7\xaf", NULL, NULL, "\x64\x7a", "\x64\x7a", "\x64\x7a",
+  "\xc7\xb5", NULL, "\xc6\x95", "\xc6\xbf", "\xc7\xb9", NULL, "\xc7\xbb", NULL,
+  "\xc7\xbd", NULL, "\xc7\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_c8[] = {
+  "\xc8\x81", NULL, "\xc8\x83", NULL, "\xc8\x85", NULL, "\xc8\x87", NULL,
+  "\xc8\x89", NULL, "\xc8\x8b", NULL, "\xc8\x8d", NULL, "\xc8\x8f", NULL,
+  "\xc8\x91", NULL, "\xc8\x93", NULL, "\xc8\x95", NULL, "\xc8\x97", NULL,
+  "\xc8\x99", NULL, "\xc8\x9b", NULL, "\xc8\x9d", NULL, "\xc8\x9f", NULL,
+  "\xc6\x9e", NULL, "\xc8\xa3", NULL, "\xc8\xa5", NULL, "\xc8\xa7", NULL,
+  "\xc8\xa9", NULL, "\xc8\xab", NULL, "\xc8\xad", NULL, "\xc8\xaf", NULL,
+  "\xc8\xb1", NULL, "\xc8\xb3", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe2\xb1\xa5", "\xc8\xbc", NULL, "\xc6\x9a", "\xe2\xb1\xa6"
+};
+
+static const char *grn_nfkc121_decompose_table_c9[] = {
+  "\xc9\x82", NULL, "\xc6\x80", "\xca\x89", "\xca\x8c", "\xc9\x87", NULL, "\xc9\x89",
+  NULL, "\xc9\x8b", NULL, "\xc9\x8d", NULL, "\xc9\x8f"
+};
+
+static const char *grn_nfkc121_decompose_table_ca[] = {
+  "\x68", "\xc9\xa6", "\x6a", "\x72", "\xc9\xb9", "\xc9\xbb", "\xca\x81", "\x77",
+  "\x79"
+};
+
+static const char *grn_nfkc121_decompose_table_cb[] = {
+  "\xcc\x86", "\xcc\x87", "\xcc\x8a", "\xcc\xa8", "\xcc\x83", "\xcc\x8b", NULL, NULL,
+  "\xc9\xa3", "\x6c", "\x73", "\x78", "\xca\x95"
+};
+
+static const char *grn_nfkc121_decompose_table_cd[] = {
+  "\xcc\x80", "\xcc\x81", NULL, "\xcc\x93", "\xcc\x88\xcc\x81", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xcd\xb1", NULL, "\xcd\xb3", NULL, "\xca\xb9", NULL, "\xcd\xb7", NULL,
+  NULL, NULL, "\xcd\x85", NULL, NULL, NULL, "\x3b", "\xcf\xb3"
+};
+
+static const char *grn_nfkc121_decompose_table_ce[] = {
+  "\xcc\x81", "\xcc\x88\xcc\x81", "\xce\xac", "\xc2\xb7", "\xce\xad", "\xce\xae", "\xce\xaf", NULL,
+  "\xcf\x8c", NULL, "\xcf\x8d", "\xcf\x8e", NULL, "\xce\xb1", "\xce\xb2", "\xce\xb3",
+  "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb",
+  "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", NULL, "\xcf\x83",
+  "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xcf\x8a", "\xcf\x8b"
+};
+
+static const char *grn_nfkc121_decompose_table_cf[] = {
+  "\xcf\x97", "\xce\xb2", "\xce\xb8", "\xcf\x85", "\xcf\x8d", "\xcf\x8b", "\xcf\x86", "\xcf\x80",
+  NULL, "\xcf\x99", NULL, "\xcf\x9b", NULL, "\xcf\x9d", NULL, "\xcf\x9f",
+  NULL, "\xcf\xa1", NULL, "\xcf\xa3", NULL, "\xcf\xa5", NULL, "\xcf\xa7",
+  NULL, "\xcf\xa9", NULL, "\xcf\xab", NULL, "\xcf\xad", NULL, "\xcf\xaf",
+  NULL, "\xce\xba", "\xcf\x81", "\xcf\x82", NULL, "\xce\xb8", "\xce\xb5", NULL,
+  "\xcf\xb8", NULL, "\xcf\x83", "\xcf\xbb", NULL, NULL, "\xcd\xbb", "\xcd\xbc",
+  "\xcd\xbd"
+};
+
+static const char *grn_nfkc121_decompose_table_d0[] = {
+  "\xd1\x90", "\xd1\x91", "\xd1\x92", "\xd1\x93", "\xd1\x94", "\xd1\x95", "\xd1\x96", "\xd1\x97",
+  "\xd1\x98", "\xd1\x99", "\xd1\x9a", "\xd1\x9b", "\xd1\x9c", "\xd1\x9d", "\xd1\x9e", "\xd1\x9f",
+  "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7",
+  "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf",
+  "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87",
+  "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xd1\x8f"
+};
+
+static const char *grn_nfkc121_decompose_table_d1[] = {
+  "\xd1\xa1", NULL, "\xd1\xa3", NULL, "\xd1\xa5", NULL, "\xd1\xa7", NULL,
+  "\xd1\xa9", NULL, "\xd1\xab", NULL, "\xd1\xad", NULL, "\xd1\xaf", NULL,
+  "\xd1\xb1", NULL, "\xd1\xb3", NULL, "\xd1\xb5", NULL, "\xd1\xb7", NULL,
+  "\xd1\xb9", NULL, "\xd1\xbb", NULL, "\xd1\xbd", NULL, "\xd1\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_d2[] = {
+  "\xd2\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xd2\x8b", NULL, "\xd2\x8d", NULL, "\xd2\x8f", NULL,
+  "\xd2\x91", NULL, "\xd2\x93", NULL, "\xd2\x95", NULL, "\xd2\x97", NULL,
+  "\xd2\x99", NULL, "\xd2\x9b", NULL, "\xd2\x9d", NULL, "\xd2\x9f", NULL,
+  "\xd2\xa1", NULL, "\xd2\xa3", NULL, "\xd2\xa5", NULL, "\xd2\xa7", NULL,
+  "\xd2\xa9", NULL, "\xd2\xab", NULL, "\xd2\xad", NULL, "\xd2\xaf", NULL,
+  "\xd2\xb1", NULL, "\xd2\xb3", NULL, "\xd2\xb5", NULL, "\xd2\xb7", NULL,
+  "\xd2\xb9", NULL, "\xd2\xbb", NULL, "\xd2\xbd", NULL, "\xd2\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_d3[] = {
+  "\xd3\x8f", "\xd3\x82", NULL, "\xd3\x84", NULL, "\xd3\x86", NULL, "\xd3\x88",
+  NULL, "\xd3\x8a", NULL, "\xd3\x8c", NULL, "\xd3\x8e", NULL, NULL,
+  "\xd3\x91", NULL, "\xd3\x93", NULL, "\xd3\x95", NULL, "\xd3\x97", NULL,
+  "\xd3\x99", NULL, "\xd3\x9b", NULL, "\xd3\x9d", NULL, "\xd3\x9f", NULL,
+  "\xd3\xa1", NULL, "\xd3\xa3", NULL, "\xd3\xa5", NULL, "\xd3\xa7", NULL,
+  "\xd3\xa9", NULL, "\xd3\xab", NULL, "\xd3\xad", NULL, "\xd3\xaf", NULL,
+  "\xd3\xb1", NULL, "\xd3\xb3", NULL, "\xd3\xb5", NULL, "\xd3\xb7", NULL,
+  "\xd3\xb9", NULL, "\xd3\xbb", NULL, "\xd3\xbd", NULL, "\xd3\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_d4[] = {
+  "\xd4\x81", NULL, "\xd4\x83", NULL, "\xd4\x85", NULL, "\xd4\x87", NULL,
+  "\xd4\x89", NULL, "\xd4\x8b", NULL, "\xd4\x8d", NULL, "\xd4\x8f", NULL,
+  "\xd4\x91", NULL, "\xd4\x93", NULL, "\xd4\x95", NULL, "\xd4\x97", NULL,
+  "\xd4\x99", NULL, "\xd4\x9b", NULL, "\xd4\x9d", NULL, "\xd4\x9f", NULL,
+  "\xd4\xa1", NULL, "\xd4\xa3", NULL, "\xd4\xa5", NULL, "\xd4\xa7", NULL,
+  "\xd4\xa9", NULL, "\xd4\xab", NULL, "\xd4\xad", NULL, "\xd4\xaf", NULL,
+  NULL, "\xd5\xa1", "\xd5\xa2", "\xd5\xa3", "\xd5\xa4", "\xd5\xa5", "\xd5\xa6", "\xd5\xa7",
+  "\xd5\xa8", "\xd5\xa9", "\xd5\xaa", "\xd5\xab", "\xd5\xac", "\xd5\xad", "\xd5\xae", "\xd5\xaf"
+};
+
+static const char *grn_nfkc121_decompose_table_d5[] = {
+  "\xd5\xb0", "\xd5\xb1", "\xd5\xb2", "\xd5\xb3", "\xd5\xb4", "\xd5\xb5", "\xd5\xb6", "\xd5\xb7",
+  "\xd5\xb8", "\xd5\xb9", "\xd5\xba", "\xd5\xbb", "\xd5\xbc", "\xd5\xbd", "\xd5\xbe", "\xd5\xbf",
+  "\xd6\x80", "\xd6\x81", "\xd6\x82", "\xd6\x83", "\xd6\x84", "\xd6\x85", "\xd6\x86"
+};
+
+static const char *grn_nfkc121_decompose_table_d9[] = {
+  "\xd8\xa7\xd9\xb4", "\xd9\x88\xd9\xb4", "\xdb\x87\xd9\xb4", "\xd9\x8a\xd9\xb4"
+};
+
+static const char *grn_nfkc121_decompose_table_e0a5[] = {
+  "\xe0\xa4\x95\xe0\xa4\xbc", "\xe0\xa4\x96\xe0\xa4\xbc", "\xe0\xa4\x97\xe0\xa4\xbc", "\xe0\xa4\x9c\xe0\xa4\xbc", "\xe0\xa4\xa1\xe0\xa4\xbc", "\xe0\xa4\xa2\xe0\xa4\xbc", "\xe0\xa4\xab\xe0\xa4\xbc", "\xe0\xa4\xaf\xe0\xa4\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_e0a7[] = {
+  "\xe0\xa6\xa1\xe0\xa6\xbc", "\xe0\xa6\xa2\xe0\xa6\xbc", NULL, "\xe0\xa6\xaf\xe0\xa6\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_e0a8[] = {
+  "\xe0\xa8\xb2\xe0\xa8\xbc", NULL, NULL, "\xe0\xa8\xb8\xe0\xa8\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_e0a9[] = {
+  "\xe0\xa8\x96\xe0\xa8\xbc", "\xe0\xa8\x97\xe0\xa8\xbc", "\xe0\xa8\x9c\xe0\xa8\xbc", NULL, NULL, "\xe0\xa8\xab\xe0\xa8\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_e0ad[] = {
+  "\xe0\xac\xa1\xe0\xac\xbc", "\xe0\xac\xa2\xe0\xac\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_e0bb[] = {
+  "\xe0\xba\xab\xe0\xba\x99", "\xe0\xba\xab\xe0\xba\xa1"
+};
+
+static const char *grn_nfkc121_decompose_table_e0bd[] = {
+  "\xe0\xbd\x82\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe0\xbd\x8c\xe0\xbe\xb7", NULL, NULL, NULL, NULL, "\xe0\xbd\x91\xe0\xbe\xb7",
+  NULL, NULL, NULL, NULL, "\xe0\xbd\x96\xe0\xbe\xb7", NULL, NULL, NULL,
+  NULL, "\xe0\xbd\x9b\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, "\xe0\xbd\x80\xe0\xbe\xb5", NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe0\xbd\xb1\xe0\xbd\xb2", NULL, "\xe0\xbd\xb1\xe0\xbd\xb4", "\xe0\xbe\xb2\xe0\xbe\x80", "\xe0\xbe\xb2\xe0\xbd\xb1\xe0\xbe\x80", "\xe0\xbe\xb3\xe0\xbe\x80", "\xe0\xbe\xb3\xe0\xbd\xb1\xe0\xbe\x80"
+};
+
+static const char *grn_nfkc121_decompose_table_e0be[] = {
+  "\xe0\xbd\xb1\xe0\xbe\x80", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe0\xbe\x92\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xe0\xbe\x9c\xe0\xbe\xb7", NULL, NULL, NULL,
+  NULL, "\xe0\xbe\xa1\xe0\xbe\xb7", NULL, NULL, NULL, NULL, "\xe0\xbe\xa6\xe0\xbe\xb7", NULL,
+  NULL, NULL, NULL, "\xe0\xbe\xab\xe0\xbe\xb7", NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe0\xbe\x90\xe0\xbe\xb5"
+};
+
+static const char *grn_nfkc121_decompose_table_e182[] = {
+  "\xe2\xb4\x80", "\xe2\xb4\x81", "\xe2\xb4\x82", "\xe2\xb4\x83", "\xe2\xb4\x84", "\xe2\xb4\x85", "\xe2\xb4\x86", "\xe2\xb4\x87",
+  "\xe2\xb4\x88", "\xe2\xb4\x89", "\xe2\xb4\x8a", "\xe2\xb4\x8b", "\xe2\xb4\x8c", "\xe2\xb4\x8d", "\xe2\xb4\x8e", "\xe2\xb4\x8f",
+  "\xe2\xb4\x90", "\xe2\xb4\x91", "\xe2\xb4\x92", "\xe2\xb4\x93", "\xe2\xb4\x94", "\xe2\xb4\x95", "\xe2\xb4\x96", "\xe2\xb4\x97",
+  "\xe2\xb4\x98", "\xe2\xb4\x99", "\xe2\xb4\x9a", "\xe2\xb4\x9b", "\xe2\xb4\x9c", "\xe2\xb4\x9d", "\xe2\xb4\x9e", "\xe2\xb4\x9f"
+};
+
+static const char *grn_nfkc121_decompose_table_e183[] = {
+  "\xe2\xb4\xa0", "\xe2\xb4\xa1", "\xe2\xb4\xa2", "\xe2\xb4\xa3", "\xe2\xb4\xa4", "\xe2\xb4\xa5", NULL, "\xe2\xb4\xa7",
+  NULL, NULL, NULL, NULL, NULL, "\xe2\xb4\xad", NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xe1\x83\x9c"
+};
+
+static const char *grn_nfkc121_decompose_table_e18e[] = {
+  "\xea\xad\xb0", "\xea\xad\xb1", "\xea\xad\xb2", "\xea\xad\xb3", "\xea\xad\xb4", "\xea\xad\xb5", "\xea\xad\xb6", "\xea\xad\xb7",
+  "\xea\xad\xb8", "\xea\xad\xb9", "\xea\xad\xba", "\xea\xad\xbb", "\xea\xad\xbc", "\xea\xad\xbd", "\xea\xad\xbe", "\xea\xad\xbf",
+  "\xea\xae\x80", "\xea\xae\x81", "\xea\xae\x82", "\xea\xae\x83", "\xea\xae\x84", "\xea\xae\x85", "\xea\xae\x86", "\xea\xae\x87",
+  "\xea\xae\x88", "\xea\xae\x89", "\xea\xae\x8a", "\xea\xae\x8b", "\xea\xae\x8c", "\xea\xae\x8d", "\xea\xae\x8e", "\xea\xae\x8f"
+};
+
+static const char *grn_nfkc121_decompose_table_e18f[] = {
+  "\xea\xae\x90", "\xea\xae\x91", "\xea\xae\x92", "\xea\xae\x93", "\xea\xae\x94", "\xea\xae\x95", "\xea\xae\x96", "\xea\xae\x97",
+  "\xea\xae\x98", "\xea\xae\x99", "\xea\xae\x9a", "\xea\xae\x9b", "\xea\xae\x9c", "\xea\xae\x9d", "\xea\xae\x9e", "\xea\xae\x9f",
+  "\xea\xae\xa0", "\xea\xae\xa1", "\xea\xae\xa2", "\xea\xae\xa3", "\xea\xae\xa4", "\xea\xae\xa5", "\xea\xae\xa6", "\xea\xae\xa7",
+  "\xea\xae\xa8", "\xea\xae\xa9", "\xea\xae\xaa", "\xea\xae\xab", "\xea\xae\xac", "\xea\xae\xad", "\xea\xae\xae", "\xea\xae\xaf",
+  "\xea\xae\xb0", "\xea\xae\xb1", "\xea\xae\xb2", "\xea\xae\xb3", "\xea\xae\xb4", "\xea\xae\xb5", "\xea\xae\xb6", "\xea\xae\xb7",
+  "\xea\xae\xb8", "\xea\xae\xb9", "\xea\xae\xba", "\xea\xae\xbb", "\xea\xae\xbc", "\xea\xae\xbd", "\xea\xae\xbe", "\xea\xae\xbf",
+  "\xe1\x8f\xb8", "\xe1\x8f\xb9", "\xe1\x8f\xba", "\xe1\x8f\xbb", "\xe1\x8f\xbc", "\xe1\x8f\xbd"
+};
+
+static const char *grn_nfkc121_decompose_table_e1b4[] = {
+  "\x61", "\xc3\xa6", "\x62", NULL, "\x64", "\x65", "\xc7\x9d", "\x67",
+  "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", NULL,
+  "\x6f", "\xc8\xa3", "\x70", "\x72"
+};
+
+static const char *grn_nfkc121_decompose_table_e1b5[] = {
+  "\x74", "\x75", "\x77", "\x61", "\xc9\x90", "\xc9\x91", "\xe1\xb4\x82", "\x62",
+  "\x64", "\x65", "\xc9\x99", "\xc9\x9b", "\xc9\x9c", "\x67", NULL, "\x6b",
+  "\x6d", "\xc5\x8b", "\x6f", "\xc9\x94", "\xe1\xb4\x96", "\xe1\xb4\x97", "\x70", "\x74",
+  "\x75", "\xe1\xb4\x9d", "\xc9\xaf", "\x76", "\xe1\xb4\xa5", "\xce\xb2", "\xce\xb3", "\xce\xb4",
+  "\xcf\x86", "\xcf\x87", "\x69", "\x72", "\x75", "\x76", "\xce\xb2", "\xce\xb3",
+  "\xcf\x81", "\xcf\x86", "\xcf\x87", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xd0\xbd"
+};
+
+static const char *grn_nfkc121_decompose_table_e1b6[] = {
+  "\xc9\x92", "\x63", "\xc9\x95", "\xc3\xb0", "\xc9\x9c", "\x66", "\xc9\x9f", "\xc9\xa1",
+  "\xc9\xa5", "\xc9\xa8", "\xc9\xa9", "\xc9\xaa", "\xe1\xb5\xbb", "\xca\x9d", "\xc9\xad", "\xe1\xb6\x85",
+  "\xca\x9f", "\xc9\xb1", "\xc9\xb0", "\xc9\xb2", "\xc9\xb3", "\xc9\xb4", "\xc9\xb5", "\xc9\xb8",
+  "\xca\x82", "\xca\x83", "\xc6\xab", "\xca\x89", "\xca\x8a", "\xe1\xb4\x9c", "\xca\x8b", "\xca\x8c",
+  "\x7a", "\xca\x90", "\xca\x91", "\xca\x92", "\xce\xb8"
+};
+
+static const char *grn_nfkc121_decompose_table_e1b8[] = {
+  "\xe1\xb8\x81", NULL, "\xe1\xb8\x83", NULL, "\xe1\xb8\x85", NULL, "\xe1\xb8\x87", NULL,
+  "\xe1\xb8\x89", NULL, "\xe1\xb8\x8b", NULL, "\xe1\xb8\x8d", NULL, "\xe1\xb8\x8f", NULL,
+  "\xe1\xb8\x91", NULL, "\xe1\xb8\x93", NULL, "\xe1\xb8\x95", NULL, "\xe1\xb8\x97", NULL,
+  "\xe1\xb8\x99", NULL, "\xe1\xb8\x9b", NULL, "\xe1\xb8\x9d", NULL, "\xe1\xb8\x9f", NULL,
+  "\xe1\xb8\xa1", NULL, "\xe1\xb8\xa3", NULL, "\xe1\xb8\xa5", NULL, "\xe1\xb8\xa7", NULL,
+  "\xe1\xb8\xa9", NULL, "\xe1\xb8\xab", NULL, "\xe1\xb8\xad", NULL, "\xe1\xb8\xaf", NULL,
+  "\xe1\xb8\xb1", NULL, "\xe1\xb8\xb3", NULL, "\xe1\xb8\xb5", NULL, "\xe1\xb8\xb7", NULL,
+  "\xe1\xb8\xb9", NULL, "\xe1\xb8\xbb", NULL, "\xe1\xb8\xbd", NULL, "\xe1\xb8\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_e1b9[] = {
+  "\xe1\xb9\x81", NULL, "\xe1\xb9\x83", NULL, "\xe1\xb9\x85", NULL, "\xe1\xb9\x87", NULL,
+  "\xe1\xb9\x89", NULL, "\xe1\xb9\x8b", NULL, "\xe1\xb9\x8d", NULL, "\xe1\xb9\x8f", NULL,
+  "\xe1\xb9\x91", NULL, "\xe1\xb9\x93", NULL, "\xe1\xb9\x95", NULL, "\xe1\xb9\x97", NULL,
+  "\xe1\xb9\x99", NULL, "\xe1\xb9\x9b", NULL, "\xe1\xb9\x9d", NULL, "\xe1\xb9\x9f", NULL,
+  "\xe1\xb9\xa1", NULL, "\xe1\xb9\xa3", NULL, "\xe1\xb9\xa5", NULL, "\xe1\xb9\xa7", NULL,
+  "\xe1\xb9\xa9", NULL, "\xe1\xb9\xab", NULL, "\xe1\xb9\xad", NULL, "\xe1\xb9\xaf", NULL,
+  "\xe1\xb9\xb1", NULL, "\xe1\xb9\xb3", NULL, "\xe1\xb9\xb5", NULL, "\xe1\xb9\xb7", NULL,
+  "\xe1\xb9\xb9", NULL, "\xe1\xb9\xbb", NULL, "\xe1\xb9\xbd", NULL, "\xe1\xb9\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_e1ba[] = {
+  "\xe1\xba\x81", NULL, "\xe1\xba\x83", NULL, "\xe1\xba\x85", NULL, "\xe1\xba\x87", NULL,
+  "\xe1\xba\x89", NULL, "\xe1\xba\x8b", NULL, "\xe1\xba\x8d", NULL, "\xe1\xba\x8f", NULL,
+  "\xe1\xba\x91", NULL, "\xe1\xba\x93", NULL, "\xe1\xba\x95", NULL, NULL, NULL,
+  NULL, NULL, "\x61\xca\xbe", "\xe1\xb9\xa1", NULL, NULL, "\xc3\x9f", NULL,
+  "\xe1\xba\xa1", NULL, "\xe1\xba\xa3", NULL, "\xe1\xba\xa5", NULL, "\xe1\xba\xa7", NULL,
+  "\xe1\xba\xa9", NULL, "\xe1\xba\xab", NULL, "\xe1\xba\xad", NULL, "\xe1\xba\xaf", NULL,
+  "\xe1\xba\xb1", NULL, "\xe1\xba\xb3", NULL, "\xe1\xba\xb5", NULL, "\xe1\xba\xb7", NULL,
+  "\xe1\xba\xb9", NULL, "\xe1\xba\xbb", NULL, "\xe1\xba\xbd", NULL, "\xe1\xba\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_e1bb[] = {
+  "\xe1\xbb\x81", NULL, "\xe1\xbb\x83", NULL, "\xe1\xbb\x85", NULL, "\xe1\xbb\x87", NULL,
+  "\xe1\xbb\x89", NULL, "\xe1\xbb\x8b", NULL, "\xe1\xbb\x8d", NULL, "\xe1\xbb\x8f", NULL,
+  "\xe1\xbb\x91", NULL, "\xe1\xbb\x93", NULL, "\xe1\xbb\x95", NULL, "\xe1\xbb\x97", NULL,
+  "\xe1\xbb\x99", NULL, "\xe1\xbb\x9b", NULL, "\xe1\xbb\x9d", NULL, "\xe1\xbb\x9f", NULL,
+  "\xe1\xbb\xa1", NULL, "\xe1\xbb\xa3", NULL, "\xe1\xbb\xa5", NULL, "\xe1\xbb\xa7", NULL,
+  "\xe1\xbb\xa9", NULL, "\xe1\xbb\xab", NULL, "\xe1\xbb\xad", NULL, "\xe1\xbb\xaf", NULL,
+  "\xe1\xbb\xb1", NULL, "\xe1\xbb\xb3", NULL, "\xe1\xbb\xb5", NULL, "\xe1\xbb\xb7", NULL,
+  "\xe1\xbb\xb9", NULL, "\xe1\xbb\xbb", NULL, "\xe1\xbb\xbd", NULL, "\xe1\xbb\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_e1bc[] = {
+  "\xe1\xbc\x80", "\xe1\xbc\x81", "\xe1\xbc\x82", "\xe1\xbc\x83", "\xe1\xbc\x84", "\xe1\xbc\x85", "\xe1\xbc\x86", "\xe1\xbc\x87",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\x90", "\xe1\xbc\x91", "\xe1\xbc\x92", "\xe1\xbc\x93", "\xe1\xbc\x94", "\xe1\xbc\x95", NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xa0", "\xe1\xbc\xa1", "\xe1\xbc\xa2", "\xe1\xbc\xa3", "\xe1\xbc\xa4", "\xe1\xbc\xa5", "\xe1\xbc\xa6", "\xe1\xbc\xa7",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xb0", "\xe1\xbc\xb1", "\xe1\xbc\xb2", "\xe1\xbc\xb3", "\xe1\xbc\xb4", "\xe1\xbc\xb5", "\xe1\xbc\xb6", "\xe1\xbc\xb7"
+};
+
+static const char *grn_nfkc121_decompose_table_e1bd[] = {
+  "\xe1\xbd\x80", "\xe1\xbd\x81", "\xe1\xbd\x82", "\xe1\xbd\x83", "\xe1\xbd\x84", "\xe1\xbd\x85", NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xe1\xbd\x91", NULL, "\xe1\xbd\x93", NULL, "\xe1\xbd\x95", NULL, "\xe1\xbd\x97",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xa0", "\xe1\xbd\xa1", "\xe1\xbd\xa2", "\xe1\xbd\xa3", "\xe1\xbd\xa4", "\xe1\xbd\xa5", "\xe1\xbd\xa6", "\xe1\xbd\xa7",
+  NULL, "\xce\xac", NULL, "\xce\xad", NULL, "\xce\xae", NULL, "\xce\xaf",
+  NULL, "\xcf\x8c", NULL, "\xcf\x8d", NULL, "\xcf\x8e"
+};
+
+static const char *grn_nfkc121_decompose_table_e1be[] = {
+  "\xe1\xbe\x80", "\xe1\xbe\x81", "\xe1\xbe\x82", "\xe1\xbe\x83", "\xe1\xbe\x84", "\xe1\xbe\x85", "\xe1\xbe\x86", "\xe1\xbe\x87",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbe\x90", "\xe1\xbe\x91", "\xe1\xbe\x92", "\xe1\xbe\x93", "\xe1\xbe\x94", "\xe1\xbe\x95", "\xe1\xbe\x96", "\xe1\xbe\x97",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbe\xa0", "\xe1\xbe\xa1", "\xe1\xbe\xa2", "\xe1\xbe\xa3", "\xe1\xbe\xa4", "\xe1\xbe\xa5", "\xe1\xbe\xa6", "\xe1\xbe\xa7",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbe\xb0", "\xe1\xbe\xb1", "\xe1\xbd\xb0", "\xce\xac", "\xe1\xbe\xb3", "\xcc\x93", "\xce\xb9", "\xcc\x93"
+};
+
+static const char *grn_nfkc121_decompose_table_e1bf[] = {
+  "\xcd\x82", "\xcc\x88\xcd\x82", NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xb2", "\xce\xad", "\xe1\xbd\xb4", "\xce\xae", "\xe1\xbf\x83", "\xcc\x93\xcc\x80", "\xcc\x93\xcc\x81", "\xcc\x93\xcd\x82",
+  NULL, NULL, NULL, "\xce\x90", NULL, NULL, NULL, NULL,
+  "\xe1\xbf\x90", "\xe1\xbf\x91", "\xe1\xbd\xb6", "\xce\xaf", NULL, "\xcc\x94\xcc\x80", "\xcc\x94\xcc\x81", "\xcc\x94\xcd\x82",
+  NULL, NULL, NULL, "\xce\xb0", NULL, NULL, NULL, NULL,
+  "\xe1\xbf\xa0", "\xe1\xbf\xa1", "\xe1\xbd\xba", "\xcf\x8d", "\xe1\xbf\xa5", "\xcc\x88\xcc\x80", "\xcc\x88\xcc\x81", "\x60",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xb8", "\xcf\x8c", "\xe1\xbd\xbc", "\xcf\x8e", "\xe1\xbf\xb3", "\xcc\x81", "\xcc\x94"
+};
+
+static const char *grn_nfkc121_decompose_table_e280[] = {
+  "\x20", "\x20", "\x20", "\x20", "\x20", "\x20", "\x20", "\x20",
+  "\x20", "\x20", "\x20", NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xe2\x80\x90", NULL, NULL, NULL, NULL, NULL, "\xcc\xb3",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\x2e", "\x2e\x2e", "\x2e\x2e\x2e", NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\x20",
+  NULL, NULL, NULL, "\xe2\x80\xb2\xe2\x80\xb2", "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2", NULL, "\xe2\x80\xb5\xe2\x80\xb5", "\xe2\x80\xb5\xe2\x80\xb5\xe2\x80\xb5",
+  NULL, NULL, NULL, NULL, "\x21\x21", NULL, "\xcc\x85"
+};
+
+static const char *grn_nfkc121_decompose_table_e281[] = {
+  "\x3f\x3f", "\x3f\x21", "\x21\x3f", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\x30", "\x69", NULL, NULL, "\x34", "\x35", "\x36",
+  "\x37", "\x38", "\x39", "\x2b", "\xe2\x88\x92", "\x3d", "\x28", "\x29",
+  "\x6e"
+};
+
+static const char *grn_nfkc121_decompose_table_e282[] = {
+  "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37",
+  "\x38", "\x39", "\x2b", "\xe2\x88\x92", "\x3d", "\x28", "\x29", NULL,
+  "\x61", "\x65", "\x6f", "\x78", "\xc9\x99", "\x68", "\x6b", "\x6c",
+  "\x6d", "\x6e", "\x70", "\x73", "\x74", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\x72\x73"
+};
+
+static const char *grn_nfkc121_decompose_table_e284[] = {
+  "\x61\x2f\x63", "\x61\x2f\x73", "\x63", "\xc2\xb0\x63", NULL, "\x63\x2f\x6f", "\x63\x2f\x75", "\xc9\x9b",
+  NULL, "\xc2\xb0\x66", "\x67", "\x68", "\x68", "\x68", "\x68", "\xc4\xa7",
+  "\x69", "\x69", "\x6c", "\x6c", NULL, "\x6e", "\x6e\x6f", NULL,
+  NULL, "\x70", "\x71", "\x72", "\x72", "\x72", NULL, NULL,
+  "\x73\x6d", "\x74\x65\x6c", "\x74\x6d", NULL, "\x7a", NULL, "\xcf\x89", NULL,
+  "\x7a", NULL, "\x6b", "\xc3\xa5", "\x62", "\x63", NULL, "\x65",
+  "\x65", "\x66", "\xe2\x85\x8e", "\x6d", "\x6f", "\xd7\x90", "\xd7\x91", "\xd7\x92",
+  "\xd7\x93", "\x69", NULL, "\x66\x61\x78", "\xcf\x80", "\xce\xb3", "\xce\xb3", "\xcf\x80"
+};
+
+static const char *grn_nfkc121_decompose_table_e285[] = {
+  "\xe2\x88\x91", NULL, NULL, NULL, NULL, "\x64", "\x64", "\x65",
+  "\x69", "\x6a", NULL, NULL, NULL, NULL, NULL, NULL,
+  "\x31\xe2\x81\x84\x37", "\x31\xe2\x81\x84\x39", "\x31\xe2\x81\x84\x31\x30", "\x31\xe2\x81\x84\x33", "\x32\xe2\x81\x84\x33", "\x31\xe2\x81\x84\x35", "\x32\xe2\x81\x84\x35", "\x33\xe2\x81\x84\x35",
+  "\x34\xe2\x81\x84\x35", "\x31\xe2\x81\x84\x36", "\x35\xe2\x81\x84\x36", "\x31\xe2\x81\x84\x38", "\x33\xe2\x81\x84\x38", "\x35\xe2\x81\x84\x38", "\x37\xe2\x81\x84\x38", "\x31\xe2\x81\x84",
+  "\x69", "\x69\x69", "\x69\x69\x69", "\x69\x76", "\x76", "\x76\x69", "\x76\x69\x69", "\x76\x69\x69\x69",
+  "\x69\x78", "\x78", "\x78\x69", "\x78\x69\x69", "\x6c", "\x63", "\x64", "\x6d",
+  "\x69", "\x69\x69", "\x69\x69\x69", "\x69\x76", "\x76", "\x76\x69", "\x76\x69\x69", "\x76\x69\x69\x69",
+  "\x69\x78", "\x78", "\x78\x69", "\x78\x69\x69", "\x6c", "\x63", "\x64", "\x6d"
+};
+
+static const char *grn_nfkc121_decompose_table_e286[] = {
+  "\xe2\x86\x84", NULL, NULL, NULL, NULL, NULL, "\x30\xe2\x81\x84\x33"
+};
+
+static const char *grn_nfkc121_decompose_table_e288[] = {
+  "\xe2\x88\xab\xe2\x88\xab", "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab", NULL, "\xe2\x88\xae\xe2\x88\xae", "\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae"
+};
+
+static const char *grn_nfkc121_decompose_table_e28c[] = {
+  "\xe3\x80\x88", "\xe3\x80\x89"
+};
+
+static const char *grn_nfkc121_decompose_table_e291[] = {
+  "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38",
+  "\x39", "\x31\x30", "\x31\x31", "\x31\x32", "\x31\x33", "\x31\x34", "\x31\x35", "\x31\x36",
+  "\x31\x37", "\x31\x38", "\x31\x39", "\x32\x30", "\x28\x31\x29", "\x28\x32\x29", "\x28\x33\x29", "\x28\x34\x29",
+  "\x28\x35\x29", "\x28\x36\x29", "\x28\x37\x29", "\x28\x38\x29", "\x28\x39\x29", "\x28\x31\x30\x29", "\x28\x31\x31\x29", "\x28\x31\x32\x29"
+};
+
+static const char *grn_nfkc121_decompose_table_e292[] = {
+  "\x28\x31\x33\x29", "\x28\x31\x34\x29", "\x28\x31\x35\x29", "\x28\x31\x36\x29", "\x28\x31\x37\x29", "\x28\x31\x38\x29", "\x28\x31\x39\x29", "\x28\x32\x30\x29",
+  "\x31\x2e", "\x32\x2e", "\x33\x2e", "\x34\x2e", "\x35\x2e", "\x36\x2e", "\x37\x2e", "\x38\x2e",
+  "\x39\x2e", "\x31\x30\x2e", "\x31\x31\x2e", "\x31\x32\x2e", "\x31\x33\x2e", "\x31\x34\x2e", "\x31\x35\x2e", "\x31\x36\x2e",
+  "\x31\x37\x2e", "\x31\x38\x2e", "\x31\x39\x2e", "\x32\x30\x2e", "\x28\x61\x29", "\x28\x62\x29", "\x28\x63\x29", "\x28\x64\x29",
+  "\x28\x65\x29", "\x28\x66\x29", "\x28\x67\x29", "\x28\x68\x29", "\x28\x69\x29", "\x28\x6a\x29", "\x28\x6b\x29", "\x28\x6c\x29",
+  "\x28\x6d\x29", "\x28\x6e\x29", "\x28\x6f\x29", "\x28\x70\x29", "\x28\x71\x29", "\x28\x72\x29", "\x28\x73\x29", "\x28\x74\x29",
+  "\x28\x75\x29", "\x28\x76\x29", "\x28\x77\x29", "\x28\x78\x29", "\x28\x79\x29", "\x28\x7a\x29", "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a"
+};
+
+static const char *grn_nfkc121_decompose_table_e293[] = {
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x30"
+};
+
+static const char *grn_nfkc121_decompose_table_e2a9[] = {
+  "\x3a\x3a\x3d", "\x3d\x3d", "\x3d\x3d\x3d"
+};
+
+static const char *grn_nfkc121_decompose_table_e2b0[] = {
+  "\xe2\xb0\xb0", "\xe2\xb0\xb1", "\xe2\xb0\xb2", "\xe2\xb0\xb3", "\xe2\xb0\xb4", "\xe2\xb0\xb5", "\xe2\xb0\xb6", "\xe2\xb0\xb7",
+  "\xe2\xb0\xb8", "\xe2\xb0\xb9", "\xe2\xb0\xba", "\xe2\xb0\xbb", "\xe2\xb0\xbc", "\xe2\xb0\xbd", "\xe2\xb0\xbe", "\xe2\xb0\xbf",
+  "\xe2\xb1\x80", "\xe2\xb1\x81", "\xe2\xb1\x82", "\xe2\xb1\x83", "\xe2\xb1\x84", "\xe2\xb1\x85", "\xe2\xb1\x86", "\xe2\xb1\x87",
+  "\xe2\xb1\x88", "\xe2\xb1\x89", "\xe2\xb1\x8a", "\xe2\xb1\x8b", "\xe2\xb1\x8c", "\xe2\xb1\x8d", "\xe2\xb1\x8e", "\xe2\xb1\x8f",
+  "\xe2\xb1\x90", "\xe2\xb1\x91", "\xe2\xb1\x92", "\xe2\xb1\x93", "\xe2\xb1\x94", "\xe2\xb1\x95", "\xe2\xb1\x96", "\xe2\xb1\x97",
+  "\xe2\xb1\x98", "\xe2\xb1\x99", "\xe2\xb1\x9a", "\xe2\xb1\x9b", "\xe2\xb1\x9c", "\xe2\xb1\x9d", "\xe2\xb1\x9e"
+};
+
+static const char *grn_nfkc121_decompose_table_e2b1[] = {
+  "\xe2\xb1\xa1", NULL, "\xc9\xab", "\xe1\xb5\xbd", "\xc9\xbd", NULL, NULL, "\xe2\xb1\xa8",
+  NULL, "\xe2\xb1\xaa", NULL, "\xe2\xb1\xac", NULL, "\xc9\x91", "\xc9\xb1", "\xc9\x90",
+  "\xc9\x92", NULL, "\xe2\xb1\xb3", NULL, NULL, "\xe2\xb1\xb6", NULL, NULL,
+  NULL, NULL, NULL, NULL, "\x6a", "\x76", "\xc8\xbf", "\xc9\x80"
+};
+
+static const char *grn_nfkc121_decompose_table_e2b2[] = {
+  "\xe2\xb2\x81", NULL, "\xe2\xb2\x83", NULL, "\xe2\xb2\x85", NULL, "\xe2\xb2\x87", NULL,
+  "\xe2\xb2\x89", NULL, "\xe2\xb2\x8b", NULL, "\xe2\xb2\x8d", NULL, "\xe2\xb2\x8f", NULL,
+  "\xe2\xb2\x91", NULL, "\xe2\xb2\x93", NULL, "\xe2\xb2\x95", NULL, "\xe2\xb2\x97", NULL,
+  "\xe2\xb2\x99", NULL, "\xe2\xb2\x9b", NULL, "\xe2\xb2\x9d", NULL, "\xe2\xb2\x9f", NULL,
+  "\xe2\xb2\xa1", NULL, "\xe2\xb2\xa3", NULL, "\xe2\xb2\xa5", NULL, "\xe2\xb2\xa7", NULL,
+  "\xe2\xb2\xa9", NULL, "\xe2\xb2\xab", NULL, "\xe2\xb2\xad", NULL, "\xe2\xb2\xaf", NULL,
+  "\xe2\xb2\xb1", NULL, "\xe2\xb2\xb3", NULL, "\xe2\xb2\xb5", NULL, "\xe2\xb2\xb7", NULL,
+  "\xe2\xb2\xb9", NULL, "\xe2\xb2\xbb", NULL, "\xe2\xb2\xbd", NULL, "\xe2\xb2\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_e2b3[] = {
+  "\xe2\xb3\x81", NULL, "\xe2\xb3\x83", NULL, "\xe2\xb3\x85", NULL, "\xe2\xb3\x87", NULL,
+  "\xe2\xb3\x89", NULL, "\xe2\xb3\x8b", NULL, "\xe2\xb3\x8d", NULL, "\xe2\xb3\x8f", NULL,
+  "\xe2\xb3\x91", NULL, "\xe2\xb3\x93", NULL, "\xe2\xb3\x95", NULL, "\xe2\xb3\x97", NULL,
+  "\xe2\xb3\x99", NULL, "\xe2\xb3\x9b", NULL, "\xe2\xb3\x9d", NULL, "\xe2\xb3\x9f", NULL,
+  "\xe2\xb3\xa1", NULL, "\xe2\xb3\xa3", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, "\xe2\xb3\xac", NULL, "\xe2\xb3\xae", NULL, NULL,
+  NULL, NULL, "\xe2\xb3\xb3"
+};
+
+static const char *grn_nfkc121_decompose_table_e2bc[] = {
+  "\xe4\xb8\x80", "\xe4\xb8\xa8", "\xe4\xb8\xb6", "\xe4\xb8\xbf", "\xe4\xb9\x99", "\xe4\xba\x85", "\xe4\xba\x8c", "\xe4\xba\xa0",
+  "\xe4\xba\xba", "\xe5\x84\xbf", "\xe5\x85\xa5", "\xe5\x85\xab", "\xe5\x86\x82", "\xe5\x86\x96", "\xe5\x86\xab", "\xe5\x87\xa0",
+  "\xe5\x87\xb5", "\xe5\x88\x80", "\xe5\x8a\x9b", "\xe5\x8b\xb9", "\xe5\x8c\x95", "\xe5\x8c\x9a", "\xe5\x8c\xb8", "\xe5\x8d\x81",
+  "\xe5\x8d\x9c", "\xe5\x8d\xa9", "\xe5\x8e\x82", "\xe5\x8e\xb6", "\xe5\x8f\x88", "\xe5\x8f\xa3", "\xe5\x9b\x97", "\xe5\x9c\x9f",
+  "\xe5\xa3\xab", "\xe5\xa4\x82", "\xe5\xa4\x8a", "\xe5\xa4\x95", "\xe5\xa4\xa7", "\xe5\xa5\xb3", "\xe5\xad\x90", "\xe5\xae\x80",
+  "\xe5\xaf\xb8", "\xe5\xb0\x8f", "\xe5\xb0\xa2", "\xe5\xb0\xb8", "\xe5\xb1\xae", "\xe5\xb1\xb1", "\xe5\xb7\x9b", "\xe5\xb7\xa5",
+  "\xe5\xb7\xb1", "\xe5\xb7\xbe", "\xe5\xb9\xb2", "\xe5\xb9\xba", "\xe5\xb9\xbf", "\xe5\xbb\xb4", "\xe5\xbb\xbe", "\xe5\xbc\x8b",
+  "\xe5\xbc\x93", "\xe5\xbd\x90", "\xe5\xbd\xa1", "\xe5\xbd\xb3", "\xe5\xbf\x83", "\xe6\x88\x88", "\xe6\x88\xb6", "\xe6\x89\x8b"
+};
+
+static const char *grn_nfkc121_decompose_table_e2bd[] = {
+  "\xe6\x94\xaf", "\xe6\x94\xb4", "\xe6\x96\x87", "\xe6\x96\x97", "\xe6\x96\xa4", "\xe6\x96\xb9", "\xe6\x97\xa0", "\xe6\x97\xa5",
+  "\xe6\x9b\xb0", "\xe6\x9c\x88", "\xe6\x9c\xa8", "\xe6\xac\xa0", "\xe6\xad\xa2", "\xe6\xad\xb9", "\xe6\xae\xb3", "\xe6\xaf\x8b",
+  "\xe6\xaf\x94", "\xe6\xaf\x9b", "\xe6\xb0\x8f", "\xe6\xb0\x94", "\xe6\xb0\xb4", "\xe7\x81\xab", "\xe7\x88\xaa", "\xe7\x88\xb6",
+  "\xe7\x88\xbb", "\xe7\x88\xbf", "\xe7\x89\x87", "\xe7\x89\x99", "\xe7\x89\x9b", "\xe7\x8a\xac", "\xe7\x8e\x84", "\xe7\x8e\x89",
+  "\xe7\x93\x9c", "\xe7\x93\xa6", "\xe7\x94\x98", "\xe7\x94\x9f", "\xe7\x94\xa8", "\xe7\x94\xb0", "\xe7\x96\x8b", "\xe7\x96\x92",
+  "\xe7\x99\xb6", "\xe7\x99\xbd", "\xe7\x9a\xae", "\xe7\x9a\xbf", "\xe7\x9b\xae", "\xe7\x9f\x9b", "\xe7\x9f\xa2", "\xe7\x9f\xb3",
+  "\xe7\xa4\xba", "\xe7\xa6\xb8", "\xe7\xa6\xbe", "\xe7\xa9\xb4", "\xe7\xab\x8b", "\xe7\xab\xb9", "\xe7\xb1\xb3", "\xe7\xb3\xb8",
+  "\xe7\xbc\xb6", "\xe7\xbd\x91", "\xe7\xbe\x8a", "\xe7\xbe\xbd", "\xe8\x80\x81", "\xe8\x80\x8c", "\xe8\x80\x92", "\xe8\x80\xb3"
+};
+
+static const char *grn_nfkc121_decompose_table_e2be[] = {
+  "\xe8\x81\xbf", "\xe8\x82\x89", "\xe8\x87\xa3", "\xe8\x87\xaa", "\xe8\x87\xb3", "\xe8\x87\xbc", "\xe8\x88\x8c", "\xe8\x88\x9b",
+  "\xe8\x88\x9f", "\xe8\x89\xae", "\xe8\x89\xb2", "\xe8\x89\xb8", "\xe8\x99\x8d", "\xe8\x99\xab", "\xe8\xa1\x80", "\xe8\xa1\x8c",
+  "\xe8\xa1\xa3", "\xe8\xa5\xbe", "\xe8\xa6\x8b", "\xe8\xa7\x92", "\xe8\xa8\x80", "\xe8\xb0\xb7", "\xe8\xb1\x86", "\xe8\xb1\x95",
+  "\xe8\xb1\xb8", "\xe8\xb2\x9d", "\xe8\xb5\xa4", "\xe8\xb5\xb0", "\xe8\xb6\xb3", "\xe8\xba\xab", "\xe8\xbb\x8a", "\xe8\xbe\x9b",
+  "\xe8\xbe\xb0", "\xe8\xbe\xb5", "\xe9\x82\x91", "\xe9\x85\x89", "\xe9\x87\x86", "\xe9\x87\x8c", "\xe9\x87\x91", "\xe9\x95\xb7",
+  "\xe9\x96\x80", "\xe9\x98\x9c", "\xe9\x9a\xb6", "\xe9\x9a\xb9", "\xe9\x9b\xa8", "\xe9\x9d\x91", "\xe9\x9d\x9e", "\xe9\x9d\xa2",
+  "\xe9\x9d\xa9", "\xe9\x9f\x8b", "\xe9\x9f\xad", "\xe9\x9f\xb3", "\xe9\xa0\x81", "\xe9\xa2\xa8", "\xe9\xa3\x9b", "\xe9\xa3\x9f",
+  "\xe9\xa6\x96", "\xe9\xa6\x99", "\xe9\xa6\xac", "\xe9\xaa\xa8", "\xe9\xab\x98", "\xe9\xab\x9f", "\xe9\xac\xa5", "\xe9\xac\xaf"
+};
+
+static const char *grn_nfkc121_decompose_table_e2bf[] = {
+  "\xe9\xac\xb2", "\xe9\xac\xbc", "\xe9\xad\x9a", "\xe9\xb3\xa5", "\xe9\xb9\xb5", "\xe9\xb9\xbf", "\xe9\xba\xa5", "\xe9\xba\xbb",
+  "\xe9\xbb\x83", "\xe9\xbb\x8d", "\xe9\xbb\x91", "\xe9\xbb\xb9", "\xe9\xbb\xbd", "\xe9\xbc\x8e", "\xe9\xbc\x93", "\xe9\xbc\xa0",
+  "\xe9\xbc\xbb", "\xe9\xbd\x8a", "\xe9\xbd\x92", "\xe9\xbe\x8d", "\xe9\xbe\x9c", "\xe9\xbe\xa0"
+};
+
+static const char *grn_nfkc121_decompose_table_e380[] = {
+  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x80\x92", NULL,
+  "\xe5\x8d\x81", "\xe5\x8d\x84", "\xe5\x8d\x85"
+};
+
+static const char *grn_nfkc121_decompose_table_e382[] = {
+  "\xe3\x82\x99", "\xe3\x82\x9a", NULL, NULL, "\xe3\x82\x88\xe3\x82\x8a"
+};
+
+static const char *grn_nfkc121_decompose_table_e384[] = {
+  "\xe1\x84\x80", "\xe1\x84\x81", "\xe1\x86\xaa", "\xe1\x84\x82", "\xe1\x86\xac", "\xe1\x86\xad", "\xe1\x84\x83", "\xe1\x84\x84",
+  "\xe1\x84\x85", "\xe1\x86\xb0", "\xe1\x86\xb1", "\xe1\x86\xb2", "\xe1\x86\xb3", "\xe1\x86\xb4", "\xe1\x86\xb5"
+};
+
+static const char *grn_nfkc121_decompose_table_e385[] = {
+  "\xe1\x84\x9a", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x88", "\xe1\x84\xa1", "\xe1\x84\x89", "\xe1\x84\x8a", "\xe1\x84\x8b",
+  "\xe1\x84\x8c", "\xe1\x84\x8d", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92", "\xe1\x85\xa1",
+  "\xe1\x85\xa2", "\xe1\x85\xa3", "\xe1\x85\xa4", "\xe1\x85\xa5", "\xe1\x85\xa6", "\xe1\x85\xa7", "\xe1\x85\xa8", "\xe1\x85\xa9",
+  "\xe1\x85\xaa", "\xe1\x85\xab", "\xe1\x85\xac", "\xe1\x85\xad", "\xe1\x85\xae", "\xe1\x85\xaf", "\xe1\x85\xb0", "\xe1\x85\xb1",
+  "\xe1\x85\xb2", "\xe1\x85\xb3", "\xe1\x85\xb4", "\xe1\x85\xb5", "\xe1\x85\xa0", "\xe1\x84\x94", "\xe1\x84\x95", "\xe1\x87\x87",
+  "\xe1\x87\x88", "\xe1\x87\x8c", "\xe1\x87\x8e", "\xe1\x87\x93", "\xe1\x87\x97", "\xe1\x87\x99", "\xe1\x84\x9c", "\xe1\x87\x9d",
+  "\xe1\x87\x9f", "\xe1\x84\x9d", "\xe1\x84\x9e", "\xe1\x84\xa0", "\xe1\x84\xa2", "\xe1\x84\xa3", "\xe1\x84\xa7", "\xe1\x84\xa9",
+  "\xe1\x84\xab", "\xe1\x84\xac", "\xe1\x84\xad", "\xe1\x84\xae", "\xe1\x84\xaf", "\xe1\x84\xb2", "\xe1\x84\xb6", "\xe1\x85\x80"
+};
+
+static const char *grn_nfkc121_decompose_table_e386[] = {
+  "\xe1\x85\x87", "\xe1\x85\x8c", "\xe1\x87\xb1", "\xe1\x87\xb2", "\xe1\x85\x97", "\xe1\x85\x98", "\xe1\x85\x99", "\xe1\x86\x84",
+  "\xe1\x86\x85", "\xe1\x86\x88", "\xe1\x86\x91", "\xe1\x86\x92", "\xe1\x86\x94", "\xe1\x86\x9e", "\xe1\x86\xa1", NULL,
+  NULL, NULL, "\xe4\xb8\x80", "\xe4\xba\x8c", "\xe4\xb8\x89", "\xe5\x9b\x9b", "\xe4\xb8\x8a", "\xe4\xb8\xad",
+  "\xe4\xb8\x8b", "\xe7\x94\xb2", "\xe4\xb9\x99", "\xe4\xb8\x99", "\xe4\xb8\x81", "\xe5\xa4\xa9", "\xe5\x9c\xb0", "\xe4\xba\xba"
+};
+
+static const char *grn_nfkc121_decompose_table_e388[] = {
+  "\x28\xe1\x84\x80\x29", "\x28\xe1\x84\x82\x29", "\x28\xe1\x84\x83\x29", "\x28\xe1\x84\x85\x29", "\x28\xe1\x84\x86\x29", "\x28\xe1\x84\x87\x29", "\x28\xe1\x84\x89\x29", "\x28\xe1\x84\x8b\x29",
+  "\x28\xe1\x84\x8c\x29", "\x28\xe1\x84\x8e\x29", "\x28\xe1\x84\x8f\x29", "\x28\xe1\x84\x90\x29", "\x28\xe1\x84\x91\x29", "\x28\xe1\x84\x92\x29", "\x28\xea\xb0\x80\x29", "\x28\xeb\x82\x98\x29",
+  "\x28\xeb\x8b\xa4\x29", "\x28\xeb\x9d\xbc\x29", "\x28\xeb\xa7\x88\x29", "\x28\xeb\xb0\x94\x29", "\x28\xec\x82\xac\x29", "\x28\xec\x95\x84\x29", "\x28\xec\x9e\x90\x29", "\x28\xec\xb0\xa8\x29",
+  "\x28\xec\xb9\xb4\x29", "\x28\xed\x83\x80\x29", "\x28\xed\x8c\x8c\x29", "\x28\xed\x95\x98\x29", "\x28\xec\xa3\xbc\x29", "\x28\xec\x98\xa4\xec\xa0\x84\x29", "\x28\xec\x98\xa4\xed\x9b\x84\x29", NULL,
+  "\x28\xe4\xb8\x80\x29", "\x28\xe4\xba\x8c\x29", "\x28\xe4\xb8\x89\x29", "\x28\xe5\x9b\x9b\x29", "\x28\xe4\xba\x94\x29", "\x28\xe5\x85\xad\x29", "\x28\xe4\xb8\x83\x29", "\x28\xe5\x85\xab\x29",
+  "\x28\xe4\xb9\x9d\x29", "\x28\xe5\x8d\x81\x29", "\x28\xe6\x9c\x88\x29", "\x28\xe7\x81\xab\x29", "\x28\xe6\xb0\xb4\x29", "\x28\xe6\x9c\xa8\x29", "\x28\xe9\x87\x91\x29", "\x28\xe5\x9c\x9f\x29",
+  "\x28\xe6\x97\xa5\x29", "\x28\xe6\xa0\xaa\x29", "\x28\xe6\x9c\x89\x29", "\x28\xe7\xa4\xbe\x29", "\x28\xe5\x90\x8d\x29", "\x28\xe7\x89\xb9\x29", "\x28\xe8\xb2\xa1\x29", "\x28\xe7\xa5\x9d\x29",
+  "\x28\xe5\x8a\xb4\x29", "\x28\xe4\xbb\xa3\x29", "\x28\xe5\x91\xbc\x29", "\x28\xe5\xad\xa6\x29", "\x28\xe7\x9b\xa3\x29", "\x28\xe4\xbc\x81\x29", "\x28\xe8\xb3\x87\x29", "\x28\xe5\x8d\x94\x29"
+};
+
+static const char *grn_nfkc121_decompose_table_e389[] = {
+  "\x28\xe7\xa5\xad\x29", "\x28\xe4\xbc\x91\x29", "\x28\xe8\x87\xaa\x29", "\x28\xe8\x87\xb3\x29", "\xe5\x95\x8f", "\xe5\xb9\xbc", "\xe6\x96\x87", "\xe7\xae\x8f",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\x70\x74\x65", "\x32\x31", "\x32\x32", "\x32\x33", "\x32\x34", "\x32\x35", "\x32\x36", "\x32\x37",
+  "\x32\x38", "\x32\x39", "\x33\x30", "\x33\x31", "\x33\x32", "\x33\x33", "\x33\x34", "\x33\x35",
+  "\xe1\x84\x80", "\xe1\x84\x82", "\xe1\x84\x83", "\xe1\x84\x85", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x89", "\xe1\x84\x8b",
+  "\xe1\x84\x8c", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92", "\xea\xb0\x80", "\xeb\x82\x98",
+  "\xeb\x8b\xa4", "\xeb\x9d\xbc", "\xeb\xa7\x88", "\xeb\xb0\x94", "\xec\x82\xac", "\xec\x95\x84", "\xec\x9e\x90", "\xec\xb0\xa8",
+  "\xec\xb9\xb4", "\xed\x83\x80", "\xed\x8c\x8c", "\xed\x95\x98", "\xec\xb0\xb8\xea\xb3\xa0", "\xec\xa3\xbc\xec\x9d\x98", "\xec\x9a\xb0"
+};
+
+static const char *grn_nfkc121_decompose_table_e38a[] = {
+  "\xe4\xb8\x80", "\xe4\xba\x8c", "\xe4\xb8\x89", "\xe5\x9b\x9b", "\xe4\xba\x94", "\xe5\x85\xad", "\xe4\xb8\x83", "\xe5\x85\xab",
+  "\xe4\xb9\x9d", "\xe5\x8d\x81", "\xe6\x9c\x88", "\xe7\x81\xab", "\xe6\xb0\xb4", "\xe6\x9c\xa8", "\xe9\x87\x91", "\xe5\x9c\x9f",
+  "\xe6\x97\xa5", "\xe6\xa0\xaa", "\xe6\x9c\x89", "\xe7\xa4\xbe", "\xe5\x90\x8d", "\xe7\x89\xb9", "\xe8\xb2\xa1", "\xe7\xa5\x9d",
+  "\xe5\x8a\xb4", "\xe7\xa7\x98", "\xe7\x94\xb7", "\xe5\xa5\xb3", "\xe9\x81\xa9", "\xe5\x84\xaa", "\xe5\x8d\xb0", "\xe6\xb3\xa8",
+  "\xe9\xa0\x85", "\xe4\xbc\x91", "\xe5\x86\x99", "\xe6\xad\xa3", "\xe4\xb8\x8a", "\xe4\xb8\xad", "\xe4\xb8\x8b", "\xe5\xb7\xa6",
+  "\xe5\x8f\xb3", "\xe5\x8c\xbb", "\xe5\xae\x97", "\xe5\xad\xa6", "\xe7\x9b\xa3", "\xe4\xbc\x81", "\xe8\xb3\x87", "\xe5\x8d\x94",
+  "\xe5\xa4\x9c", "\x33\x36", "\x33\x37", "\x33\x38", "\x33\x39", "\x34\x30", "\x34\x31", "\x34\x32",
+  "\x34\x33", "\x34\x34", "\x34\x35", "\x34\x36", "\x34\x37", "\x34\x38", "\x34\x39", "\x35\x30"
+};
+
+static const char *grn_nfkc121_decompose_table_e38b[] = {
+  "\x31\xe6\x9c\x88", "\x32\xe6\x9c\x88", "\x33\xe6\x9c\x88", "\x34\xe6\x9c\x88", "\x35\xe6\x9c\x88", "\x36\xe6\x9c\x88", "\x37\xe6\x9c\x88", "\x38\xe6\x9c\x88",
+  "\x39\xe6\x9c\x88", "\x31\x30\xe6\x9c\x88", "\x31\x31\xe6\x9c\x88", "\x31\x32\xe6\x9c\x88", "\x68\x67", "\x65\x72\x67", "\x65\x76", "\x6c\x74\x64",
+  "\xe3\x82\xa2", "\xe3\x82\xa4", "\xe3\x82\xa6", "\xe3\x82\xa8", "\xe3\x82\xaa", "\xe3\x82\xab", "\xe3\x82\xad", "\xe3\x82\xaf",
+  "\xe3\x82\xb1", "\xe3\x82\xb3", "\xe3\x82\xb5", "\xe3\x82\xb7", "\xe3\x82\xb9", "\xe3\x82\xbb", "\xe3\x82\xbd", "\xe3\x82\xbf",
+  "\xe3\x83\x81", "\xe3\x83\x84", "\xe3\x83\x86", "\xe3\x83\x88", "\xe3\x83\x8a", "\xe3\x83\x8b", "\xe3\x83\x8c", "\xe3\x83\x8d",
+  "\xe3\x83\x8e", "\xe3\x83\x8f", "\xe3\x83\x92", "\xe3\x83\x95", "\xe3\x83\x98", "\xe3\x83\x9b", "\xe3\x83\x9e", "\xe3\x83\x9f",
+  "\xe3\x83\xa0", "\xe3\x83\xa1", "\xe3\x83\xa2", "\xe3\x83\xa4", "\xe3\x83\xa6", "\xe3\x83\xa8", "\xe3\x83\xa9", "\xe3\x83\xaa",
+  "\xe3\x83\xab", "\xe3\x83\xac", "\xe3\x83\xad", "\xe3\x83\xaf", "\xe3\x83\xb0", "\xe3\x83\xb1", "\xe3\x83\xb2", "\xe4\xbb\xa4\xe5\x92\x8c"
+};
+
+static const char *grn_nfkc121_decompose_table_e38c[] = {
+  "\xe3\x82\xa2\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x88", "\xe3\x82\xa2\xe3\x83\xab\xe3\x83\x95\xe3\x82\xa1", "\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x9a\xe3\x82\xa2", "\xe3\x82\xa2\xe3\x83\xbc\xe3\x83\xab", "\xe3\x82\xa4\xe3\x83\x8b\xe3\x83\xb3\xe3\x82\xb0", "\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x81", "\xe3\x82\xa6\xe3\x82\xa9\xe3\x83\xb3", "\xe3\x82\xa8\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xbc\xe3\x83\x89",
+  "\xe3\x82\xa8\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc", "\xe3\x82\xaa\xe3\x83\xb3\xe3\x82\xb9", "\xe3\x82\xaa\xe3\x83\xbc\xe3\x83\xa0", "\xe3\x82\xab\xe3\x82\xa4\xe3\x83\xaa", "\xe3\x82\xab\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88", "\xe3\x82\xab\xe3\x83\xad\xe3\x83\xaa\xe3\x83\xbc", "\xe3\x82\xac\xe3\x83\xad\xe3\x83\xb3", "\xe3\x82\xac\xe3\x83\xb3\xe3\x83\x9e",
+  "\xe3\x82\xae\xe3\x82\xac", "\xe3\x82\xae\xe3\x83\x8b\xe3\x83\xbc", "\xe3\x82\xad\xe3\x83\xa5\xe3\x83\xaa\xe3\x83\xbc", "\xe3\x82\xae\xe3\x83\xab\xe3\x83\x80\xe3\x83\xbc", "\xe3\x82\xad\xe3\x83\xad", "\xe3\x82\xad\xe3\x83\xad\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0", "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab", "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88",
+  "\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0", "\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0\xe3\x83\x88\xe3\x83\xb3", "\xe3\x82\xaf\xe3\x83\xab\xe3\x82\xbc\xe3\x82\xa4\xe3\x83\xad", "\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x8d", "\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xb9", "\xe3\x82\xb3\xe3\x83\xab\xe3\x83\x8a", "\xe3\x82\xb3\xe3\x83\xbc\xe3\x83\x9d", "\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xab",
+  "\xe3\x82\xb5\xe3\x83\xb3\xe3\x83\x81\xe3\x83\xbc\xe3\x83\xa0", "\xe3\x82\xb7\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xb0", "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81", "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x80\xe3\x83\xbc\xe3\x82\xb9", "\xe3\x83\x87\xe3\x82\xb7", "\xe3\x83\x89\xe3\x83\xab", "\xe3\x83\x88\xe3\x83\xb3",
+  "\xe3\x83\x8a\xe3\x83\x8e", "\xe3\x83\x8e\xe3\x83\x83\xe3\x83\x88", "\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84", "\xe3\x83\x91\xe3\x83\xbc\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x84", "\xe3\x83\x90\xe3\x83\xbc\xe3\x83\xac\xe3\x83\xab", "\xe3\x83\x94\xe3\x82\xa2\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\x94\xe3\x82\xaf\xe3\x83\xab",
+  "\xe3\x83\x94\xe3\x82\xb3", "\xe3\x83\x93\xe3\x83\xab", "\xe3\x83\x95\xe3\x82\xa1\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x89", "\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc\xe3\x83\x88", "\xe3\x83\x96\xe3\x83\x83\xe3\x82\xb7\xe3\x82\xa7\xe3\x83\xab", "\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3", "\xe3\x83\x98\xe3\x82\xaf\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\x9a\xe3\x82\xbd",
+  "\xe3\x83\x9a\xe3\x83\x8b\xe3\x83\x92", "\xe3\x83\x98\xe3\x83\xab\xe3\x83\x84", "\xe3\x83\x9a\xe3\x83\xb3\xe3\x82\xb9", "\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8", "\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xbf", "\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x9c\xe3\x83\xab\xe3\x83\x88", "\xe3\x83\x9b\xe3\x83\xb3"
+};
+
+static const char *grn_nfkc121_decompose_table_e38d[] = {
+  "\xe3\x83\x9d\xe3\x83\xb3\xe3\x83\x89", "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xb3", "\xe3\x83\x9e\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xad", "\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xab", "\xe3\x83\x9e\xe3\x83\x83\xe3\x83\x8f", "\xe3\x83\x9e\xe3\x83\xab\xe3\x82\xaf", "\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3",
+  "\xe3\x83\x9f\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xb3", "\xe3\x83\x9f\xe3\x83\xaa", "\xe3\x83\x9f\xe3\x83\xaa\xe3\x83\x90\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\xa1\xe3\x82\xac", "\xe3\x83\xa1\xe3\x82\xac\xe3\x83\x88\xe3\x83\xb3", "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x89", "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\xab",
+  "\xe3\x83\xa6\xe3\x82\xa2\xe3\x83\xb3", "\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\xaa\xe3\x83\xa9", "\xe3\x83\xab\xe3\x83\x94\xe3\x83\xbc", "\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x96\xe3\x83\xab", "\xe3\x83\xac\xe3\x83\xa0", "\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x88\xe3\x82\xb2\xe3\x83\xb3", "\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88",
+  "\x30\xe7\x82\xb9", "\x31\xe7\x82\xb9", "\x32\xe7\x82\xb9", "\x33\xe7\x82\xb9", "\x34\xe7\x82\xb9", "\x35\xe7\x82\xb9", "\x36\xe7\x82\xb9", "\x37\xe7\x82\xb9",
+  "\x38\xe7\x82\xb9", "\x39\xe7\x82\xb9", "\x31\x30\xe7\x82\xb9", "\x31\x31\xe7\x82\xb9", "\x31\x32\xe7\x82\xb9", "\x31\x33\xe7\x82\xb9", "\x31\x34\xe7\x82\xb9", "\x31\x35\xe7\x82\xb9",
+  "\x31\x36\xe7\x82\xb9", "\x31\x37\xe7\x82\xb9", "\x31\x38\xe7\x82\xb9", "\x31\x39\xe7\x82\xb9", "\x32\x30\xe7\x82\xb9", "\x32\x31\xe7\x82\xb9", "\x32\x32\xe7\x82\xb9", "\x32\x33\xe7\x82\xb9",
+  "\x32\x34\xe7\x82\xb9", "\x68\x70\x61", "\x64\x61", "\x61\x75", "\x62\x61\x72", "\x6f\x76", "\x70\x63", "\x64\x6d",
+  "\x64\x6d\x32", "\x64\x6d\x33", "\x69\x75", "\xe5\xb9\xb3\xe6\x88\x90", "\xe6\x98\xad\xe5\x92\x8c", "\xe5\xa4\xa7\xe6\xad\xa3", "\xe6\x98\x8e\xe6\xb2\xbb", "\xe6\xa0\xaa\xe5\xbc\x8f\xe4\xbc\x9a\xe7\xa4\xbe"
+};
+
+static const char *grn_nfkc121_decompose_table_e38e[] = {
+  "\x70\x61", "\x6e\x61", "\xce\xbc\x61", "\x6d\x61", "\x6b\x61", "\x6b\x62", "\x6d\x62", "\x67\x62",
+  "\x63\x61\x6c", "\x6b\x63\x61\x6c", "\x70\x66", "\x6e\x66", "\xce\xbc\x66", "\xce\xbc\x67", "\x6d\x67", "\x6b\x67",
+  "\x68\x7a", "\x6b\x68\x7a", "\x6d\x68\x7a", "\x67\x68\x7a", "\x74\x68\x7a", "\xce\xbc\x6c", "\x6d\x6c", "\x64\x6c",
+  "\x6b\x6c", "\x66\x6d", "\x6e\x6d", "\xce\xbc\x6d", "\x6d\x6d", "\x63\x6d", "\x6b\x6d", "\x6d\x6d\x32",
+  "\x63\x6d\x32", "\x6d\x32", "\x6b\x6d\x32", "\x6d\x6d\x33", "\x63\x6d\x33", "\x6d\x33", "\x6b\x6d\x33", "\x6d\xe2\x88\x95\x73",
+  "\x6d\xe2\x88\x95\x73\x32", "\x70\x61", "\x6b\x70\x61", "\x6d\x70\x61", "\x67\x70\x61", "\x72\x61\x64", "\x72\x61\x64\xe2\x88\x95\x73", "\x72\x61\x64\xe2\x88\x95\x73\x32",
+  "\x70\x73", "\x6e\x73", "\xce\xbc\x73", "\x6d\x73", "\x70\x76", "\x6e\x76", "\xce\xbc\x76", "\x6d\x76",
+  "\x6b\x76", "\x6d\x76", "\x70\x77", "\x6e\x77", "\xce\xbc\x77", "\x6d\x77", "\x6b\x77", "\x6d\x77"
+};
+
+static const char *grn_nfkc121_decompose_table_e38f[] = {
+  "\x6b\xcf\x89", "\x6d\xcf\x89", "\x61\x2e\x6d\x2e", "\x62\x71", "\x63\x63", "\x63\x64", "\x63\xe2\x88\x95\x6b\x67", "\x63\x6f\x2e",
+  "\x64\x62", "\x67\x79", "\x68\x61", "\x68\x70", "\x69\x6e", "\x6b\x6b", "\x6b\x6d", "\x6b\x74",
+  "\x6c\x6d", "\x6c\x6e", "\x6c\x6f\x67", "\x6c\x78", "\x6d\x62", "\x6d\x69\x6c", "\x6d\x6f\x6c", "\x70\x68",
+  "\x70\x2e\x6d\x2e", "\x70\x70\x6d", "\x70\x72", "\x73\x72", "\x73\x76", "\x77\x62", "\x76\xe2\x88\x95\x6d", "\x61\xe2\x88\x95\x6d",
+  "\x31\xe6\x97\xa5", "\x32\xe6\x97\xa5", "\x33\xe6\x97\xa5", "\x34\xe6\x97\xa5", "\x35\xe6\x97\xa5", "\x36\xe6\x97\xa5", "\x37\xe6\x97\xa5", "\x38\xe6\x97\xa5",
+  "\x39\xe6\x97\xa5", "\x31\x30\xe6\x97\xa5", "\x31\x31\xe6\x97\xa5", "\x31\x32\xe6\x97\xa5", "\x31\x33\xe6\x97\xa5", "\x31\x34\xe6\x97\xa5", "\x31\x35\xe6\x97\xa5", "\x31\x36\xe6\x97\xa5",
+  "\x31\x37\xe6\x97\xa5", "\x31\x38\xe6\x97\xa5", "\x31\x39\xe6\x97\xa5", "\x32\x30\xe6\x97\xa5", "\x32\x31\xe6\x97\xa5", "\x32\x32\xe6\x97\xa5", "\x32\x33\xe6\x97\xa5", "\x32\x34\xe6\x97\xa5",
+  "\x32\x35\xe6\x97\xa5", "\x32\x36\xe6\x97\xa5", "\x32\x37\xe6\x97\xa5", "\x32\x38\xe6\x97\xa5", "\x32\x39\xe6\x97\xa5", "\x33\x30\xe6\x97\xa5", "\x33\x31\xe6\x97\xa5", "\x67\x61\x6c"
+};
+
+static const char *grn_nfkc121_decompose_table_ea99[] = {
+  "\xea\x99\x81", NULL, "\xea\x99\x83", NULL, "\xea\x99\x85", NULL, "\xea\x99\x87", NULL,
+  "\xea\x99\x89", NULL, "\xea\x99\x8b", NULL, "\xea\x99\x8d", NULL, "\xea\x99\x8f", NULL,
+  "\xea\x99\x91", NULL, "\xea\x99\x93", NULL, "\xea\x99\x95", NULL, "\xea\x99\x97", NULL,
+  "\xea\x99\x99", NULL, "\xea\x99\x9b", NULL, "\xea\x99\x9d", NULL, "\xea\x99\x9f", NULL,
+  "\xea\x99\xa1", NULL, "\xea\x99\xa3", NULL, "\xea\x99\xa5", NULL, "\xea\x99\xa7", NULL,
+  "\xea\x99\xa9", NULL, "\xea\x99\xab", NULL, "\xea\x99\xad"
+};
+
+static const char *grn_nfkc121_decompose_table_ea9a[] = {
+  "\xea\x9a\x81", NULL, "\xea\x9a\x83", NULL, "\xea\x9a\x85", NULL, "\xea\x9a\x87", NULL,
+  "\xea\x9a\x89", NULL, "\xea\x9a\x8b", NULL, "\xea\x9a\x8d", NULL, "\xea\x9a\x8f", NULL,
+  "\xea\x9a\x91", NULL, "\xea\x9a\x93", NULL, "\xea\x9a\x95", NULL, "\xea\x9a\x97", NULL,
+  "\xea\x9a\x99", NULL, "\xea\x9a\x9b", NULL, "\xd1\x8a", "\xd1\x8c"
+};
+
+static const char *grn_nfkc121_decompose_table_ea9c[] = {
+  "\xea\x9c\xa3", NULL, "\xea\x9c\xa5", NULL, "\xea\x9c\xa7", NULL, "\xea\x9c\xa9", NULL,
+  "\xea\x9c\xab", NULL, "\xea\x9c\xad", NULL, "\xea\x9c\xaf", NULL, NULL, NULL,
+  "\xea\x9c\xb3", NULL, "\xea\x9c\xb5", NULL, "\xea\x9c\xb7", NULL, "\xea\x9c\xb9", NULL,
+  "\xea\x9c\xbb", NULL, "\xea\x9c\xbd", NULL, "\xea\x9c\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_ea9d[] = {
+  "\xea\x9d\x81", NULL, "\xea\x9d\x83", NULL, "\xea\x9d\x85", NULL, "\xea\x9d\x87", NULL,
+  "\xea\x9d\x89", NULL, "\xea\x9d\x8b", NULL, "\xea\x9d\x8d", NULL, "\xea\x9d\x8f", NULL,
+  "\xea\x9d\x91", NULL, "\xea\x9d\x93", NULL, "\xea\x9d\x95", NULL, "\xea\x9d\x97", NULL,
+  "\xea\x9d\x99", NULL, "\xea\x9d\x9b", NULL, "\xea\x9d\x9d", NULL, "\xea\x9d\x9f", NULL,
+  "\xea\x9d\xa1", NULL, "\xea\x9d\xa3", NULL, "\xea\x9d\xa5", NULL, "\xea\x9d\xa7", NULL,
+  "\xea\x9d\xa9", NULL, "\xea\x9d\xab", NULL, "\xea\x9d\xad", NULL, "\xea\x9d\xaf", NULL,
+  "\xea\x9d\xaf", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xea\x9d\xba", NULL, "\xea\x9d\xbc", NULL, "\xe1\xb5\xb9", "\xea\x9d\xbf"
+};
+
+static const char *grn_nfkc121_decompose_table_ea9e[] = {
+  "\xea\x9e\x81", NULL, "\xea\x9e\x83", NULL, "\xea\x9e\x85", NULL, "\xea\x9e\x87", NULL,
+  NULL, NULL, NULL, "\xea\x9e\x8c", NULL, "\xc9\xa5", NULL, NULL,
+  "\xea\x9e\x91", NULL, "\xea\x9e\x93", NULL, NULL, NULL, "\xea\x9e\x97", NULL,
+  "\xea\x9e\x99", NULL, "\xea\x9e\x9b", NULL, "\xea\x9e\x9d", NULL, "\xea\x9e\x9f", NULL,
+  "\xea\x9e\xa1", NULL, "\xea\x9e\xa3", NULL, "\xea\x9e\xa5", NULL, "\xea\x9e\xa7", NULL,
+  "\xea\x9e\xa9", NULL, "\xc9\xa6", "\xc9\x9c", "\xc9\xa1", "\xc9\xac", "\xc9\xaa", NULL,
+  "\xca\x9e", "\xca\x87", "\xca\x9d", "\xea\xad\x93", "\xea\x9e\xb5", NULL, "\xea\x9e\xb7"
+};
+
+static const char *grn_nfkc121_decompose_table_ea9f[] = {
+  "\xc4\xa7", "\xc5\x93"
+};
+
+static const char *grn_nfkc121_decompose_table_eaad[] = {
+  "\xea\x9c\xa7", "\xea\xac\xb7", "\xc9\xab", "\xea\xad\x92"
+};
+
+static const char *grn_nfkc121_decompose_table_efa4[] = {
+  "\xe8\xb1\x88", "\xe6\x9b\xb4", "\xe8\xbb\x8a", "\xe8\xb3\x88", "\xe6\xbb\x91", "\xe4\xb8\xb2", "\xe5\x8f\xa5", "\xe9\xbe\x9c",
+  "\xe9\xbe\x9c", "\xe5\xa5\x91", "\xe9\x87\x91", "\xe5\x96\x87", "\xe5\xa5\x88", "\xe6\x87\xb6", "\xe7\x99\xa9", "\xe7\xbe\x85",
+  "\xe8\x98\xbf", "\xe8\x9e\xba", "\xe8\xa3\xb8", "\xe9\x82\x8f", "\xe6\xa8\x82", "\xe6\xb4\x9b", "\xe7\x83\x99", "\xe7\x8f\x9e",
+  "\xe8\x90\xbd", "\xe9\x85\xaa", "\xe9\xa7\xb1", "\xe4\xba\x82", "\xe5\x8d\xb5", "\xe6\xac\x84", "\xe7\x88\x9b", "\xe8\x98\xad",
+  "\xe9\xb8\x9e", "\xe5\xb5\x90", "\xe6\xbf\xab", "\xe8\x97\x8d", "\xe8\xa5\xa4", "\xe6\x8b\x89", "\xe8\x87\x98", "\xe8\xa0\x9f",
+  "\xe5\xbb\x8a", "\xe6\x9c\x97", "\xe6\xb5\xaa", "\xe7\x8b\xbc", "\xe9\x83\x8e", "\xe4\xbe\x86", "\xe5\x86\xb7", "\xe5\x8b\x9e",
+  "\xe6\x93\x84", "\xe6\xab\x93", "\xe7\x88\x90", "\xe7\x9b\xa7", "\xe8\x80\x81", "\xe8\x98\x86", "\xe8\x99\x9c", "\xe8\xb7\xaf",
+  "\xe9\x9c\xb2", "\xe9\xad\xaf", "\xe9\xb7\xba", "\xe7\xa2\x8c", "\xe7\xa5\xbf", "\xe7\xb6\xa0", "\xe8\x8f\x89", "\xe9\x8c\x84"
+};
+
+static const char *grn_nfkc121_decompose_table_efa5[] = {
+  "\xe9\xb9\xbf", "\xe8\xab\x96", "\xe5\xa3\x9f", "\xe5\xbc\x84", "\xe7\xb1\xa0", "\xe8\x81\xbe", "\xe7\x89\xa2", "\xe7\xa3\x8a",
+  "\xe8\xb3\x82", "\xe9\x9b\xb7", "\xe5\xa3\x98", "\xe5\xb1\xa2", "\xe6\xa8\x93", "\xe6\xb7\x9a", "\xe6\xbc\x8f", "\xe7\xb4\xaf",
+  "\xe7\xb8\xb7", "\xe9\x99\x8b", "\xe5\x8b\x92", "\xe8\x82\x8b", "\xe5\x87\x9c", "\xe5\x87\x8c", "\xe7\xa8\x9c", "\xe7\xb6\xbe",
+  "\xe8\x8f\xb1", "\xe9\x99\xb5", "\xe8\xae\x80", "\xe6\x8b\x8f", "\xe6\xa8\x82", "\xe8\xab\xbe", "\xe4\xb8\xb9", "\xe5\xaf\xa7",
+  "\xe6\x80\x92", "\xe7\x8e\x87", "\xe7\x95\xb0", "\xe5\x8c\x97", "\xe7\xa3\xbb", "\xe4\xbe\xbf", "\xe5\xbe\xa9", "\xe4\xb8\x8d",
+  "\xe6\xb3\x8c", "\xe6\x95\xb8", "\xe7\xb4\xa2", "\xe5\x8f\x83", "\xe5\xa1\x9e", "\xe7\x9c\x81", "\xe8\x91\x89", "\xe8\xaa\xaa",
+  "\xe6\xae\xba", "\xe8\xbe\xb0", "\xe6\xb2\x88", "\xe6\x8b\xbe", "\xe8\x8b\xa5", "\xe6\x8e\xa0", "\xe7\x95\xa5", "\xe4\xba\xae",
+  "\xe5\x85\xa9", "\xe5\x87\x89", "\xe6\xa2\x81", "\xe7\xb3\xa7", "\xe8\x89\xaf", "\xe8\xab\x92", "\xe9\x87\x8f", "\xe5\x8b\xb5"
+};
+
+static const char *grn_nfkc121_decompose_table_efa6[] = {
+  "\xe5\x91\x82", "\xe5\xa5\xb3", "\xe5\xbb\xac", "\xe6\x97\x85", "\xe6\xbf\xbe", "\xe7\xa4\xaa", "\xe9\x96\xad", "\xe9\xa9\xaa",
+  "\xe9\xba\x97", "\xe9\xbb\x8e", "\xe5\x8a\x9b", "\xe6\x9b\x86", "\xe6\xad\xb7", "\xe8\xbd\xa2", "\xe5\xb9\xb4", "\xe6\x86\x90",
+  "\xe6\x88\x80", "\xe6\x92\x9a", "\xe6\xbc\xa3", "\xe7\x85\x89", "\xe7\x92\x89", "\xe7\xa7\x8a", "\xe7\xb7\xb4", "\xe8\x81\xaf",
+  "\xe8\xbc\xa6", "\xe8\x93\xae", "\xe9\x80\xa3", "\xe9\x8d\x8a", "\xe5\x88\x97", "\xe5\x8a\xa3", "\xe5\x92\xbd", "\xe7\x83\x88",
+  "\xe8\xa3\x82", "\xe8\xaa\xaa", "\xe5\xbb\x89", "\xe5\xbf\xb5", "\xe6\x8d\xbb", "\xe6\xae\xae", "\xe7\xb0\xbe", "\xe7\x8d\xb5",
+  "\xe4\xbb\xa4", "\xe5\x9b\xb9", "\xe5\xaf\xa7", "\xe5\xb6\xba", "\xe6\x80\x9c", "\xe7\x8e\xb2", "\xe7\x91\xa9", "\xe7\xbe\x9a",
+  "\xe8\x81\x86", "\xe9\x88\xb4", "\xe9\x9b\xb6", "\xe9\x9d\x88", "\xe9\xa0\x98", "\xe4\xbe\x8b", "\xe7\xa6\xae", "\xe9\x86\xb4",
+  "\xe9\x9a\xb8", "\xe6\x83\xa1", "\xe4\xba\x86", "\xe5\x83\x9a", "\xe5\xaf\xae", "\xe5\xb0\xbf", "\xe6\x96\x99", "\xe6\xa8\x82"
+};
+
+static const char *grn_nfkc121_decompose_table_efa7[] = {
+  "\xe7\x87\x8e", "\xe7\x99\x82", "\xe8\x93\xbc", "\xe9\x81\xbc", "\xe9\xbe\x8d", "\xe6\x9a\x88", "\xe9\x98\xae", "\xe5\x8a\x89",
+  "\xe6\x9d\xbb", "\xe6\x9f\xb3", "\xe6\xb5\x81", "\xe6\xba\x9c", "\xe7\x90\x89", "\xe7\x95\x99", "\xe7\xa1\xab", "\xe7\xb4\x90",
+  "\xe9\xa1\x9e", "\xe5\x85\xad", "\xe6\x88\xae", "\xe9\x99\xb8", "\xe5\x80\xab", "\xe5\xb4\x99", "\xe6\xb7\xaa", "\xe8\xbc\xaa",
+  "\xe5\xbe\x8b", "\xe6\x85\x84", "\xe6\xa0\x97", "\xe7\x8e\x87", "\xe9\x9a\x86", "\xe5\x88\xa9", "\xe5\x90\x8f", "\xe5\xb1\xa5",
+  "\xe6\x98\x93", "\xe6\x9d\x8e", "\xe6\xa2\xa8", "\xe6\xb3\xa5", "\xe7\x90\x86", "\xe7\x97\xa2", "\xe7\xbd\xb9", "\xe8\xa3\x8f",
+  "\xe8\xa3\xa1", "\xe9\x87\x8c", "\xe9\x9b\xa2", "\xe5\x8c\xbf", "\xe6\xba\xba", "\xe5\x90\x9d", "\xe7\x87\x90", "\xe7\x92\x98",
+  "\xe8\x97\xba", "\xe9\x9a\xa3", "\xe9\xb1\x97", "\xe9\xba\x9f", "\xe6\x9e\x97", "\xe6\xb7\x8b", "\xe8\x87\xa8", "\xe7\xab\x8b",
+  "\xe7\xac\xa0", "\xe7\xb2\x92", "\xe7\x8b\x80", "\xe7\x82\x99", "\xe8\xad\x98", "\xe4\xbb\x80", "\xe8\x8c\xb6", "\xe5\x88\xba"
+};
+
+static const char *grn_nfkc121_decompose_table_efa8[] = {
+  "\xe5\x88\x87", "\xe5\xba\xa6", "\xe6\x8b\x93", "\xe7\xb3\x96", "\xe5\xae\x85", "\xe6\xb4\x9e", "\xe6\x9a\xb4", "\xe8\xbc\xbb",
+  "\xe8\xa1\x8c", "\xe9\x99\x8d", "\xe8\xa6\x8b", "\xe5\xbb\x93", "\xe5\x85\x80", "\xe5\x97\x80", NULL, NULL,
+  "\xe5\xa1\x9a", NULL, "\xe6\x99\xb4", NULL, NULL, "\xe5\x87\x9e", "\xe7\x8c\xaa", "\xe7\x9b\x8a",
+  "\xe7\xa4\xbc", "\xe7\xa5\x9e", "\xe7\xa5\xa5", "\xe7\xa6\x8f", "\xe9\x9d\x96", "\xe7\xb2\xbe", "\xe7\xbe\xbd", NULL,
+  "\xe8\x98\x92", NULL, "\xe8\xab\xb8", NULL, NULL, "\xe9\x80\xb8", "\xe9\x83\xbd", NULL,
+  NULL, NULL, "\xe9\xa3\xaf", "\xe9\xa3\xbc", "\xe9\xa4\xa8", "\xe9\xb6\xb4", "\xe9\x83\x9e", "\xe9\x9a\xb7",
+  "\xe4\xbe\xae", "\xe5\x83\xa7", "\xe5\x85\x8d", "\xe5\x8b\x89", "\xe5\x8b\xa4", "\xe5\x8d\x91", "\xe5\x96\x9d", "\xe5\x98\x86",
+  "\xe5\x99\xa8", "\xe5\xa1\x80", "\xe5\xa2\xa8", "\xe5\xb1\xa4", "\xe5\xb1\xae", "\xe6\x82\x94", "\xe6\x85\xa8", "\xe6\x86\x8e"
+};
+
+static const char *grn_nfkc121_decompose_table_efa9[] = {
+  "\xe6\x87\xb2", "\xe6\x95\x8f", "\xe6\x97\xa2", "\xe6\x9a\x91", "\xe6\xa2\x85", "\xe6\xb5\xb7", "\xe6\xb8\x9a", "\xe6\xbc\xa2",
+  "\xe7\x85\xae", "\xe7\x88\xab", "\xe7\x90\xa2", "\xe7\xa2\x91", "\xe7\xa4\xbe", "\xe7\xa5\x89", "\xe7\xa5\x88", "\xe7\xa5\x90",
+  "\xe7\xa5\x96", "\xe7\xa5\x9d", "\xe7\xa6\x8d", "\xe7\xa6\x8e", "\xe7\xa9\x80", "\xe7\xaa\x81", "\xe7\xaf\x80", "\xe7\xb7\xb4",
+  "\xe7\xb8\x89", "\xe7\xb9\x81", "\xe7\xbd\xb2", "\xe8\x80\x85", "\xe8\x87\xad", "\xe8\x89\xb9", "\xe8\x89\xb9", "\xe8\x91\x97",
+  "\xe8\xa4\x90", "\xe8\xa6\x96", "\xe8\xac\x81", "\xe8\xac\xb9", "\xe8\xb3\x93", "\xe8\xb4\x88", "\xe8\xbe\xb6", "\xe9\x80\xb8",
+  "\xe9\x9b\xa3", "\xe9\x9f\xbf", "\xe9\xa0\xbb", "\xe6\x81\xb5", "\xf0\xa4\x8b\xae", "\xe8\x88\x98", NULL, NULL,
+  "\xe4\xb8\xa6", "\xe5\x86\xb5", "\xe5\x85\xa8", "\xe4\xbe\x80", "\xe5\x85\x85", "\xe5\x86\x80", "\xe5\x8b\x87", "\xe5\x8b\xba",
+  "\xe5\x96\x9d", "\xe5\x95\x95", "\xe5\x96\x99", "\xe5\x97\xa2", "\xe5\xa1\x9a", "\xe5\xa2\xb3", "\xe5\xa5\x84", "\xe5\xa5\x94"
+};
+
+static const char *grn_nfkc121_decompose_table_efaa[] = {
+  "\xe5\xa9\xa2", "\xe5\xac\xa8", "\xe5\xbb\x92", "\xe5\xbb\x99", "\xe5\xbd\xa9", "\xe5\xbe\xad", "\xe6\x83\x98", "\xe6\x85\x8e",
+  "\xe6\x84\x88", "\xe6\x86\x8e", "\xe6\x85\xa0", "\xe6\x87\xb2", "\xe6\x88\xb4", "\xe6\x8f\x84", "\xe6\x90\x9c", "\xe6\x91\x92",
+  "\xe6\x95\x96", "\xe6\x99\xb4", "\xe6\x9c\x97", "\xe6\x9c\x9b", "\xe6\x9d\x96", "\xe6\xad\xb9", "\xe6\xae\xba", "\xe6\xb5\x81",
+  "\xe6\xbb\x9b", "\xe6\xbb\x8b", "\xe6\xbc\xa2", "\xe7\x80\x9e", "\xe7\x85\xae", "\xe7\x9e\xa7", "\xe7\x88\xb5", "\xe7\x8a\xaf",
+  "\xe7\x8c\xaa", "\xe7\x91\xb1", "\xe7\x94\x86", "\xe7\x94\xbb", "\xe7\x98\x9d", "\xe7\x98\x9f", "\xe7\x9b\x8a", "\xe7\x9b\x9b",
+  "\xe7\x9b\xb4", "\xe7\x9d\x8a", "\xe7\x9d\x80", "\xe7\xa3\x8c", "\xe7\xaa\xb1", "\xe7\xaf\x80", "\xe7\xb1\xbb", "\xe7\xb5\x9b",
+  "\xe7\xb7\xb4", "\xe7\xbc\xbe", "\xe8\x80\x85", "\xe8\x8d\x92", "\xe8\x8f\xaf", "\xe8\x9d\xb9", "\xe8\xa5\x81", "\xe8\xa6\x86",
+  "\xe8\xa6\x96", "\xe8\xaa\xbf", "\xe8\xab\xb8", "\xe8\xab\x8b", "\xe8\xac\x81", "\xe8\xab\xbe", "\xe8\xab\xad", "\xe8\xac\xb9"
+};
+
+static const char *grn_nfkc121_decompose_table_efab[] = {
+  "\xe8\xae\x8a", "\xe8\xb4\x88", "\xe8\xbc\xb8", "\xe9\x81\xb2", "\xe9\x86\x99", "\xe9\x89\xb6", "\xe9\x99\xbc", "\xe9\x9b\xa3",
+  "\xe9\x9d\x96", "\xe9\x9f\x9b", "\xe9\x9f\xbf", "\xe9\xa0\x8b", "\xe9\xa0\xbb", "\xe9\xac\x92", "\xe9\xbe\x9c", "\xf0\xa2\xa1\x8a",
+  "\xf0\xa2\xa1\x84", "\xf0\xa3\x8f\x95", "\xe3\xae\x9d", "\xe4\x80\x98", "\xe4\x80\xb9", "\xf0\xa5\x89\x89", "\xf0\xa5\xb3\x90", "\xf0\xa7\xbb\x93",
+  "\xe9\xbd\x83", "\xe9\xbe\x8e"
+};
+
+static const char *grn_nfkc121_decompose_table_efac[] = {
+  "\x66\x66", "\x66\x69", "\x66\x6c", "\x66\x66\x69", "\x66\x66\x6c", "\x73\x74", "\x73\x74", NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, "\xd5\xb4\xd5\xb6", "\xd5\xb4\xd5\xa5", "\xd5\xb4\xd5\xab", "\xd5\xbe\xd5\xb6", "\xd5\xb4\xd5\xad",
+  NULL, NULL, NULL, NULL, NULL, "\xd7\x99\xd6\xb4", NULL, "\xd7\xb2\xd6\xb7",
+  "\xd7\xa2", "\xd7\x90", "\xd7\x93", "\xd7\x94", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\xa8",
+  "\xd7\xaa", "\x2b", "\xd7\xa9\xd7\x81", "\xd7\xa9\xd7\x82", "\xd7\xa9\xd6\xbc\xd7\x81", "\xd7\xa9\xd6\xbc\xd7\x82", "\xd7\x90\xd6\xb7", "\xd7\x90\xd6\xb8",
+  "\xd7\x90\xd6\xbc", "\xd7\x91\xd6\xbc", "\xd7\x92\xd6\xbc", "\xd7\x93\xd6\xbc", "\xd7\x94\xd6\xbc", "\xd7\x95\xd6\xbc", "\xd7\x96\xd6\xbc", NULL,
+  "\xd7\x98\xd6\xbc", "\xd7\x99\xd6\xbc", "\xd7\x9a\xd6\xbc", "\xd7\x9b\xd6\xbc", "\xd7\x9c\xd6\xbc", NULL, "\xd7\x9e\xd6\xbc"
+};
+
+static const char *grn_nfkc121_decompose_table_efad[] = {
+  "\xd7\xa0\xd6\xbc", "\xd7\xa1\xd6\xbc", NULL, "\xd7\xa3\xd6\xbc", "\xd7\xa4\xd6\xbc", NULL, "\xd7\xa6\xd6\xbc", "\xd7\xa7\xd6\xbc",
+  "\xd7\xa8\xd6\xbc", "\xd7\xa9\xd6\xbc", "\xd7\xaa\xd6\xbc", "\xd7\x95\xd6\xb9", "\xd7\x91\xd6\xbf", "\xd7\x9b\xd6\xbf", "\xd7\xa4\xd6\xbf", "\xd7\x90\xd7\x9c",
+  "\xd9\xb1", "\xd9\xb1", "\xd9\xbb", "\xd9\xbb", "\xd9\xbb", "\xd9\xbb", "\xd9\xbe", "\xd9\xbe",
+  "\xd9\xbe", "\xd9\xbe", "\xda\x80", "\xda\x80", "\xda\x80", "\xda\x80", "\xd9\xba", "\xd9\xba",
+  "\xd9\xba", "\xd9\xba", "\xd9\xbf", "\xd9\xbf", "\xd9\xbf", "\xd9\xbf", "\xd9\xb9", "\xd9\xb9",
+  "\xd9\xb9", "\xd9\xb9", "\xda\xa4", "\xda\xa4", "\xda\xa4", "\xda\xa4", "\xda\xa6", "\xda\xa6",
+  "\xda\xa6", "\xda\xa6", "\xda\x84", "\xda\x84", "\xda\x84", "\xda\x84", "\xda\x83", "\xda\x83",
+  "\xda\x83", "\xda\x83", "\xda\x86", "\xda\x86", "\xda\x86", "\xda\x86", "\xda\x87", "\xda\x87"
+};
+
+static const char *grn_nfkc121_decompose_table_efae[] = {
+  "\xda\x87", "\xda\x87", "\xda\x8d", "\xda\x8d", "\xda\x8c", "\xda\x8c", "\xda\x8e", "\xda\x8e",
+  "\xda\x88", "\xda\x88", "\xda\x98", "\xda\x98", "\xda\x91", "\xda\x91", "\xda\xa9", "\xda\xa9",
+  "\xda\xa9", "\xda\xa9", "\xda\xaf", "\xda\xaf", "\xda\xaf", "\xda\xaf", "\xda\xb3", "\xda\xb3",
+  "\xda\xb3", "\xda\xb3", "\xda\xb1", "\xda\xb1", "\xda\xb1", "\xda\xb1", "\xda\xba", "\xda\xba",
+  "\xda\xbb", "\xda\xbb", "\xda\xbb", "\xda\xbb", "\xdb\x80", "\xdb\x80", "\xdb\x81", "\xdb\x81",
+  "\xdb\x81", "\xdb\x81", "\xda\xbe", "\xda\xbe", "\xda\xbe", "\xda\xbe", "\xdb\x92", "\xdb\x92",
+  "\xdb\x93", "\xdb\x93"
+};
+
+static const char *grn_nfkc121_decompose_table_efaf[] = {
+  "\xda\xad", "\xda\xad", "\xda\xad", "\xda\xad", "\xdb\x87", "\xdb\x87", "\xdb\x86", "\xdb\x86",
+  "\xdb\x88", "\xdb\x88", "\xdb\x87\xd9\xb4", "\xdb\x8b", "\xdb\x8b", "\xdb\x85", "\xdb\x85", "\xdb\x89",
+  "\xdb\x89", "\xdb\x90", "\xdb\x90", "\xdb\x90", "\xdb\x90", "\xd9\x89", "\xd9\x89", "\xd8\xa6\xd8\xa7",
+  "\xd8\xa6\xd8\xa7", "\xd8\xa6\xdb\x95", "\xd8\xa6\xdb\x95", "\xd8\xa6\xd9\x88", "\xd8\xa6\xd9\x88", "\xd8\xa6\xdb\x87", "\xd8\xa6\xdb\x87", "\xd8\xa6\xdb\x86",
+  "\xd8\xa6\xdb\x86", "\xd8\xa6\xdb\x88", "\xd8\xa6\xdb\x88", "\xd8\xa6\xdb\x90", "\xd8\xa6\xdb\x90", "\xd8\xa6\xdb\x90", "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x89",
+  "\xd8\xa6\xd9\x89", "\xdb\x8c", "\xdb\x8c", "\xdb\x8c", "\xdb\x8c"
+};
+
+static const char *grn_nfkc121_decompose_table_efb0[] = {
+  "\xd8\xa6\xd8\xac", "\xd8\xa6\xd8\xad", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x8a", "\xd8\xa8\xd8\xac", "\xd8\xa8\xd8\xad", "\xd8\xa8\xd8\xae",
+  "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x89", "\xd8\xa8\xd9\x8a", "\xd8\xaa\xd8\xac", "\xd8\xaa\xd8\xad", "\xd8\xaa\xd8\xae", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x89",
+  "\xd8\xaa\xd9\x8a", "\xd8\xab\xd8\xac", "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x89", "\xd8\xab\xd9\x8a", "\xd8\xac\xd8\xad", "\xd8\xac\xd9\x85", "\xd8\xad\xd8\xac",
+  "\xd8\xad\xd9\x85", "\xd8\xae\xd8\xac", "\xd8\xae\xd8\xad", "\xd8\xae\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae", "\xd8\xb3\xd9\x85",
+  "\xd8\xb5\xd8\xad", "\xd8\xb5\xd9\x85", "\xd8\xb6\xd8\xac", "\xd8\xb6\xd8\xad", "\xd8\xb6\xd8\xae", "\xd8\xb6\xd9\x85", "\xd8\xb7\xd8\xad", "\xd8\xb7\xd9\x85",
+  "\xd8\xb8\xd9\x85", "\xd8\xb9\xd8\xac", "\xd8\xb9\xd9\x85", "\xd8\xba\xd8\xac", "\xd8\xba\xd9\x85", "\xd9\x81\xd8\xac", "\xd9\x81\xd8\xad", "\xd9\x81\xd8\xae",
+  "\xd9\x81\xd9\x85", "\xd9\x81\xd9\x89", "\xd9\x81\xd9\x8a", "\xd9\x82\xd8\xad", "\xd9\x82\xd9\x85", "\xd9\x82\xd9\x89", "\xd9\x82\xd9\x8a", "\xd9\x83\xd8\xa7",
+  "\xd9\x83\xd8\xac", "\xd9\x83\xd8\xad", "\xd9\x83\xd8\xae", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x83\xd9\x89", "\xd9\x83\xd9\x8a", "\xd9\x84\xd8\xac"
+};
+
+static const char *grn_nfkc121_decompose_table_efb1[] = {
+  "\xd9\x84\xd8\xad", "\xd9\x84\xd8\xae", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x89", "\xd9\x84\xd9\x8a", "\xd9\x85\xd8\xac", "\xd9\x85\xd8\xad", "\xd9\x85\xd8\xae",
+  "\xd9\x85\xd9\x85", "\xd9\x85\xd9\x89", "\xd9\x85\xd9\x8a", "\xd9\x86\xd8\xac", "\xd9\x86\xd8\xad", "\xd9\x86\xd8\xae", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x89",
+  "\xd9\x86\xd9\x8a", "\xd9\x87\xd8\xac", "\xd9\x87\xd9\x85", "\xd9\x87\xd9\x89", "\xd9\x87\xd9\x8a", "\xd9\x8a\xd8\xac", "\xd9\x8a\xd8\xad", "\xd9\x8a\xd8\xae",
+  "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x89", "\xd9\x8a\xd9\x8a", "\xd8\xb0\xd9\xb0", "\xd8\xb1\xd9\xb0", "\xd9\x89\xd9\xb0", "\xd9\x8c\xd9\x91", "\xd9\x8d\xd9\x91",
+  "\xd9\x8e\xd9\x91", "\xd9\x8f\xd9\x91", "\xd9\x90\xd9\x91", "\xd9\x91\xd9\xb0", "\xd8\xa6\xd8\xb1", "\xd8\xa6\xd8\xb2", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x86",
+  "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x8a", "\xd8\xa8\xd8\xb1", "\xd8\xa8\xd8\xb2", "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x86", "\xd8\xa8\xd9\x89", "\xd8\xa8\xd9\x8a",
+  "\xd8\xaa\xd8\xb1", "\xd8\xaa\xd8\xb2", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x86", "\xd8\xaa\xd9\x89", "\xd8\xaa\xd9\x8a", "\xd8\xab\xd8\xb1", "\xd8\xab\xd8\xb2",
+  "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x86", "\xd8\xab\xd9\x89", "\xd8\xab\xd9\x8a", "\xd9\x81\xd9\x89", "\xd9\x81\xd9\x8a", "\xd9\x82\xd9\x89", "\xd9\x82\xd9\x8a"
+};
+
+static const char *grn_nfkc121_decompose_table_efb2[] = {
+  "\xd9\x83\xd8\xa7", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x83\xd9\x89", "\xd9\x83\xd9\x8a", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x89", "\xd9\x84\xd9\x8a",
+  "\xd9\x85\xd8\xa7", "\xd9\x85\xd9\x85", "\xd9\x86\xd8\xb1", "\xd9\x86\xd8\xb2", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x86", "\xd9\x86\xd9\x89", "\xd9\x86\xd9\x8a",
+  "\xd9\x89\xd9\xb0", "\xd9\x8a\xd8\xb1", "\xd9\x8a\xd8\xb2", "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x86", "\xd9\x8a\xd9\x89", "\xd9\x8a\xd9\x8a", "\xd8\xa6\xd8\xac",
+  "\xd8\xa6\xd8\xad", "\xd8\xa6\xd8\xae", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x87", "\xd8\xa8\xd8\xac", "\xd8\xa8\xd8\xad", "\xd8\xa8\xd8\xae", "\xd8\xa8\xd9\x85",
+  "\xd8\xa8\xd9\x87", "\xd8\xaa\xd8\xac", "\xd8\xaa\xd8\xad", "\xd8\xaa\xd8\xae", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x87", "\xd8\xab\xd9\x85", "\xd8\xac\xd8\xad",
+  "\xd8\xac\xd9\x85", "\xd8\xad\xd8\xac", "\xd8\xad\xd9\x85", "\xd8\xae\xd8\xac", "\xd8\xae\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae",
+  "\xd8\xb3\xd9\x85", "\xd8\xb5\xd8\xad", "\xd8\xb5\xd8\xae", "\xd8\xb5\xd9\x85", "\xd8\xb6\xd8\xac", "\xd8\xb6\xd8\xad", "\xd8\xb6\xd8\xae", "\xd8\xb6\xd9\x85",
+  "\xd8\xb7\xd8\xad", "\xd8\xb8\xd9\x85", "\xd8\xb9\xd8\xac", "\xd8\xb9\xd9\x85", "\xd8\xba\xd8\xac", "\xd8\xba\xd9\x85", "\xd9\x81\xd8\xac", "\xd9\x81\xd8\xad"
+};
+
+static const char *grn_nfkc121_decompose_table_efb3[] = {
+  "\xd9\x81\xd8\xae", "\xd9\x81\xd9\x85", "\xd9\x82\xd8\xad", "\xd9\x82\xd9\x85", "\xd9\x83\xd8\xac", "\xd9\x83\xd8\xad", "\xd9\x83\xd8\xae", "\xd9\x83\xd9\x84",
+  "\xd9\x83\xd9\x85", "\xd9\x84\xd8\xac", "\xd9\x84\xd8\xad", "\xd9\x84\xd8\xae", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x87", "\xd9\x85\xd8\xac", "\xd9\x85\xd8\xad",
+  "\xd9\x85\xd8\xae", "\xd9\x85\xd9\x85", "\xd9\x86\xd8\xac", "\xd9\x86\xd8\xad", "\xd9\x86\xd8\xae", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x87", "\xd9\x87\xd8\xac",
+  "\xd9\x87\xd9\x85", "\xd9\x87\xd9\xb0", "\xd9\x8a\xd8\xac", "\xd9\x8a\xd8\xad", "\xd9\x8a\xd8\xae", "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x87", "\xd8\xa6\xd9\x85",
+  "\xd8\xa6\xd9\x87", "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x87", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x87", "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x87", "\xd8\xb3\xd9\x85",
+  "\xd8\xb3\xd9\x87", "\xd8\xb4\xd9\x85", "\xd8\xb4\xd9\x87", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x84\xd9\x85", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x87",
+  "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x87", "\xd9\x80\xd9\x8e\xd9\x91", "\xd9\x80\xd9\x8f\xd9\x91", "\xd9\x80\xd9\x90\xd9\x91", "\xd8\xb7\xd9\x89", "\xd8\xb7\xd9\x8a", "\xd8\xb9\xd9\x89",
+  "\xd8\xb9\xd9\x8a", "\xd8\xba\xd9\x89", "\xd8\xba\xd9\x8a", "\xd8\xb3\xd9\x89", "\xd8\xb3\xd9\x8a", "\xd8\xb4\xd9\x89", "\xd8\xb4\xd9\x8a", "\xd8\xad\xd9\x89"
+};
+
+static const char *grn_nfkc121_decompose_table_efb4[] = {
+  "\xd8\xad\xd9\x8a", "\xd8\xac\xd9\x89", "\xd8\xac\xd9\x8a", "\xd8\xae\xd9\x89", "\xd8\xae\xd9\x8a", "\xd8\xb5\xd9\x89", "\xd8\xb5\xd9\x8a", "\xd8\xb6\xd9\x89",
+  "\xd8\xb6\xd9\x8a", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae", "\xd8\xb4\xd9\x85", "\xd8\xb4\xd8\xb1", "\xd8\xb3\xd8\xb1", "\xd8\xb5\xd8\xb1",
+  "\xd8\xb6\xd8\xb1", "\xd8\xb7\xd9\x89", "\xd8\xb7\xd9\x8a", "\xd8\xb9\xd9\x89", "\xd8\xb9\xd9\x8a", "\xd8\xba\xd9\x89", "\xd8\xba\xd9\x8a", "\xd8\xb3\xd9\x89",
+  "\xd8\xb3\xd9\x8a", "\xd8\xb4\xd9\x89", "\xd8\xb4\xd9\x8a", "\xd8\xad\xd9\x89", "\xd8\xad\xd9\x8a", "\xd8\xac\xd9\x89", "\xd8\xac\xd9\x8a", "\xd8\xae\xd9\x89",
+  "\xd8\xae\xd9\x8a", "\xd8\xb5\xd9\x89", "\xd8\xb5\xd9\x8a", "\xd8\xb6\xd9\x89", "\xd8\xb6\xd9\x8a", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae",
+  "\xd8\xb4\xd9\x85", "\xd8\xb4\xd8\xb1", "\xd8\xb3\xd8\xb1", "\xd8\xb5\xd8\xb1", "\xd8\xb6\xd8\xb1", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae",
+  "\xd8\xb4\xd9\x85", "\xd8\xb3\xd9\x87", "\xd8\xb4\xd9\x87", "\xd8\xb7\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae", "\xd8\xb4\xd8\xac",
+  "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae", "\xd8\xb7\xd9\x85", "\xd8\xb8\xd9\x85", "\xd8\xa7\xd9\x8b", "\xd8\xa7\xd9\x8b"
+};
+
+static const char *grn_nfkc121_decompose_table_efb5[] = {
+  "\xd8\xaa\xd8\xac\xd9\x85", "\xd8\xaa\xd8\xad\xd8\xac", "\xd8\xaa\xd8\xad\xd8\xac", "\xd8\xaa\xd8\xad\xd9\x85", "\xd8\xaa\xd8\xae\xd9\x85", "\xd8\xaa\xd9\x85\xd8\xac", "\xd8\xaa\xd9\x85\xd8\xad", "\xd8\xaa\xd9\x85\xd8\xae",
+  "\xd8\xac\xd9\x85\xd8\xad", "\xd8\xac\xd9\x85\xd8\xad", "\xd8\xad\xd9\x85\xd9\x8a", "\xd8\xad\xd9\x85\xd9\x89", "\xd8\xb3\xd8\xad\xd8\xac", "\xd8\xb3\xd8\xac\xd8\xad", "\xd8\xb3\xd8\xac\xd9\x89", "\xd8\xb3\xd9\x85\xd8\xad",
+  "\xd8\xb3\xd9\x85\xd8\xad", "\xd8\xb3\xd9\x85\xd8\xac", "\xd8\xb3\xd9\x85\xd9\x85", "\xd8\xb3\xd9\x85\xd9\x85", "\xd8\xb5\xd8\xad\xd8\xad", "\xd8\xb5\xd8\xad\xd8\xad", "\xd8\xb5\xd9\x85\xd9\x85", "\xd8\xb4\xd8\xad\xd9\x85",
+  "\xd8\xb4\xd8\xad\xd9\x85", "\xd8\xb4\xd8\xac\xd9\x8a", "\xd8\xb4\xd9\x85\xd8\xae", "\xd8\xb4\xd9\x85\xd8\xae", "\xd8\xb4\xd9\x85\xd9\x85", "\xd8\xb4\xd9\x85\xd9\x85", "\xd8\xb6\xd8\xad\xd9\x89", "\xd8\xb6\xd8\xae\xd9\x85",
+  "\xd8\xb6\xd8\xae\xd9\x85", "\xd8\xb7\xd9\x85\xd8\xad", "\xd8\xb7\xd9\x85\xd8\xad", "\xd8\xb7\xd9\x85\xd9\x85", "\xd8\xb7\xd9\x85\xd9\x8a", "\xd8\xb9\xd8\xac\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x85",
+  "\xd8\xb9\xd9\x85\xd9\x89", "\xd8\xba\xd9\x85\xd9\x85", "\xd8\xba\xd9\x85\xd9\x8a", "\xd8\xba\xd9\x85\xd9\x89", "\xd9\x81\xd8\xae\xd9\x85", "\xd9\x81\xd8\xae\xd9\x85", "\xd9\x82\xd9\x85\xd8\xad", "\xd9\x82\xd9\x85\xd9\x85"
+};
+
+static const char *grn_nfkc121_decompose_table_efb6[] = {
+  "\xd9\x84\xd8\xad\xd9\x85", "\xd9\x84\xd8\xad\xd9\x8a", "\xd9\x84\xd8\xad\xd9\x89", "\xd9\x84\xd8\xac\xd8\xac", "\xd9\x84\xd8\xac\xd8\xac", "\xd9\x84\xd8\xae\xd9\x85", "\xd9\x84\xd8\xae\xd9\x85", "\xd9\x84\xd9\x85\xd8\xad",
+  "\xd9\x84\xd9\x85\xd8\xad", "\xd9\x85\xd8\xad\xd8\xac", "\xd9\x85\xd8\xad\xd9\x85", "\xd9\x85\xd8\xad\xd9\x8a", "\xd9\x85\xd8\xac\xd8\xad", "\xd9\x85\xd8\xac\xd9\x85", "\xd9\x85\xd8\xae\xd8\xac", "\xd9\x85\xd8\xae\xd9\x85",
+  NULL, NULL, "\xd9\x85\xd8\xac\xd8\xae", "\xd9\x87\xd9\x85\xd8\xac", "\xd9\x87\xd9\x85\xd9\x85", "\xd9\x86\xd8\xad\xd9\x85", "\xd9\x86\xd8\xad\xd9\x89", "\xd9\x86\xd8\xac\xd9\x85",
+  "\xd9\x86\xd8\xac\xd9\x85", "\xd9\x86\xd8\xac\xd9\x89", "\xd9\x86\xd9\x85\xd9\x8a", "\xd9\x86\xd9\x85\xd9\x89", "\xd9\x8a\xd9\x85\xd9\x85", "\xd9\x8a\xd9\x85\xd9\x85", "\xd8\xa8\xd8\xae\xd9\x8a", "\xd8\xaa\xd8\xac\xd9\x8a",
+  "\xd8\xaa\xd8\xac\xd9\x89", "\xd8\xaa\xd8\xae\xd9\x8a", "\xd8\xaa\xd8\xae\xd9\x89", "\xd8\xaa\xd9\x85\xd9\x8a", "\xd8\xaa\xd9\x85\xd9\x89", "\xd8\xac\xd9\x85\xd9\x8a", "\xd8\xac\xd8\xad\xd9\x89", "\xd8\xac\xd9\x85\xd9\x89",
+  "\xd8\xb3\xd8\xae\xd9\x89", "\xd8\xb5\xd8\xad\xd9\x8a", "\xd8\xb4\xd8\xad\xd9\x8a", "\xd8\xb6\xd8\xad\xd9\x8a", "\xd9\x84\xd8\xac\xd9\x8a", "\xd9\x84\xd9\x85\xd9\x8a", "\xd9\x8a\xd8\xad\xd9\x8a", "\xd9\x8a\xd8\xac\xd9\x8a",
+  "\xd9\x8a\xd9\x85\xd9\x8a", "\xd9\x85\xd9\x85\xd9\x8a", "\xd9\x82\xd9\x85\xd9\x8a", "\xd9\x86\xd8\xad\xd9\x8a", "\xd9\x82\xd9\x85\xd8\xad", "\xd9\x84\xd8\xad\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x8a", "\xd9\x83\xd9\x85\xd9\x8a",
+  "\xd9\x86\xd8\xac\xd8\xad", "\xd9\x85\xd8\xae\xd9\x8a", "\xd9\x84\xd8\xac\xd9\x85", "\xd9\x83\xd9\x85\xd9\x85", "\xd9\x84\xd8\xac\xd9\x85", "\xd9\x86\xd8\xac\xd8\xad", "\xd8\xac\xd8\xad\xd9\x8a", "\xd8\xad\xd8\xac\xd9\x8a"
+};
+
+static const char *grn_nfkc121_decompose_table_efb7[] = {
+  "\xd9\x85\xd8\xac\xd9\x8a", "\xd9\x81\xd9\x85\xd9\x8a", "\xd8\xa8\xd8\xad\xd9\x8a", "\xd9\x83\xd9\x85\xd9\x85", "\xd8\xb9\xd8\xac\xd9\x85", "\xd8\xb5\xd9\x85\xd9\x85", "\xd8\xb3\xd8\xae\xd9\x8a", "\xd9\x86\xd8\xac\xd9\x8a",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xd8\xb5\xd9\x84\xdb\x92", "\xd9\x82\xd9\x84\xdb\x92", "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87", "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1", "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf", "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85", "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84", "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87",
+  "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85", "\xd8\xb5\xd9\x84\xd9\x89", "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85", "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87", "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84"
+};
+
+static const char *grn_nfkc121_decompose_table_efb8[] = {
+  "\x2c", "\xe3\x80\x81", "\xe3\x80\x82", "\x3a", "\x3b", "\x21", "\x3f", "\xe3\x80\x96",
+  "\xe3\x80\x97", "\x2e\x2e\x2e", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\x2e\x2e", "\xe2\x80\x94", "\xe2\x80\x93", "\x5f", "\x5f", "\x28", "\x29", "\x7b",
+  "\x7d", "\xe3\x80\x94", "\xe3\x80\x95", "\xe3\x80\x90", "\xe3\x80\x91", "\xe3\x80\x8a", "\xe3\x80\x8b", "\xe3\x80\x88"
+};
+
+static const char *grn_nfkc121_decompose_table_efb9[] = {
+  "\xe3\x80\x89", "\xe3\x80\x8c", "\xe3\x80\x8d", "\xe3\x80\x8e", "\xe3\x80\x8f", NULL, NULL, "\x5b",
+  "\x5d", "\xcc\x85", "\xcc\x85", "\xcc\x85", "\xcc\x85", "\x5f", "\x5f", "\x5f",
+  "\x2c", "\xe3\x80\x81", "\x2e", NULL, "\x3b", "\x3a", "\x3f", "\x21",
+  "\xe2\x80\x94", "\x28", "\x29", "\x7b", "\x7d", "\xe3\x80\x94", "\xe3\x80\x95", "\x23",
+  "\x26", "\x2a", "\x2b", "\x2d", "\x3c", "\x3e", "\x3d", NULL,
+  "\x5c", "\x24", "\x25", "\x40", NULL, NULL, NULL, NULL,
+  "\xd9\x8b", "\xd9\x80\xd9\x8b", "\xd9\x8c", NULL, "\xd9\x8d", NULL, "\xd9\x8e", "\xd9\x80\xd9\x8e",
+  "\xd9\x8f", "\xd9\x80\xd9\x8f", "\xd9\x90", "\xd9\x80\xd9\x90", "\xd9\x91", "\xd9\x80\xd9\x91", "\xd9\x92", "\xd9\x80\xd9\x92"
+};
+
+static const char *grn_nfkc121_decompose_table_efba[] = {
+  "\xd8\xa1", "\xd8\xa2", "\xd8\xa2", "\xd8\xa3", "\xd8\xa3", "\xd8\xa4", "\xd8\xa4", "\xd8\xa5",
+  "\xd8\xa5", "\xd8\xa6", "\xd8\xa6", "\xd8\xa6", "\xd8\xa6", "\xd8\xa7", "\xd8\xa7", "\xd8\xa8",
+  "\xd8\xa8", "\xd8\xa8", "\xd8\xa8", "\xd8\xa9", "\xd8\xa9", "\xd8\xaa", "\xd8\xaa", "\xd8\xaa",
+  "\xd8\xaa", "\xd8\xab", "\xd8\xab", "\xd8\xab", "\xd8\xab", "\xd8\xac", "\xd8\xac", "\xd8\xac",
+  "\xd8\xac", "\xd8\xad", "\xd8\xad", "\xd8\xad", "\xd8\xad", "\xd8\xae", "\xd8\xae", "\xd8\xae",
+  "\xd8\xae", "\xd8\xaf", "\xd8\xaf", "\xd8\xb0", "\xd8\xb0", "\xd8\xb1", "\xd8\xb1", "\xd8\xb2",
+  "\xd8\xb2", "\xd8\xb3", "\xd8\xb3", "\xd8\xb3", "\xd8\xb3", "\xd8\xb4", "\xd8\xb4", "\xd8\xb4",
+  "\xd8\xb4", "\xd8\xb5", "\xd8\xb5", "\xd8\xb5", "\xd8\xb5", "\xd8\xb6", "\xd8\xb6", "\xd8\xb6"
+};
+
+static const char *grn_nfkc121_decompose_table_efbb[] = {
+  "\xd8\xb6", "\xd8\xb7", "\xd8\xb7", "\xd8\xb7", "\xd8\xb7", "\xd8\xb8", "\xd8\xb8", "\xd8\xb8",
+  "\xd8\xb8", "\xd8\xb9", "\xd8\xb9", "\xd8\xb9", "\xd8\xb9", "\xd8\xba", "\xd8\xba", "\xd8\xba",
+  "\xd8\xba", "\xd9\x81", "\xd9\x81", "\xd9\x81", "\xd9\x81", "\xd9\x82", "\xd9\x82", "\xd9\x82",
+  "\xd9\x82", "\xd9\x83", "\xd9\x83", "\xd9\x83", "\xd9\x83", "\xd9\x84", "\xd9\x84", "\xd9\x84",
+  "\xd9\x84", "\xd9\x85", "\xd9\x85", "\xd9\x85", "\xd9\x85", "\xd9\x86", "\xd9\x86", "\xd9\x86",
+  "\xd9\x86", "\xd9\x87", "\xd9\x87", "\xd9\x87", "\xd9\x87", "\xd9\x88", "\xd9\x88", "\xd9\x89",
+  "\xd9\x89", "\xd9\x8a", "\xd9\x8a", "\xd9\x8a", "\xd9\x8a", "\xd9\x84\xd8\xa2", "\xd9\x84\xd8\xa2", "\xd9\x84\xd8\xa3",
+  "\xd9\x84\xd8\xa3", "\xd9\x84\xd8\xa5", "\xd9\x84\xd8\xa5", "\xd9\x84\xd8\xa7", "\xd9\x84\xd8\xa7"
+};
+
+static const char *grn_nfkc121_decompose_table_efbc[] = {
+  "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28",
+  "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30",
+  "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38",
+  "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f"
+};
+
+static const char *grn_nfkc121_decompose_table_efbd[] = {
+  "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67",
+  "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f",
+  "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77",
+  "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\xe2\xa6\x85",
+  "\xe2\xa6\x86", "\xe3\x80\x82", "\xe3\x80\x8c", "\xe3\x80\x8d", "\xe3\x80\x81", "\xe3\x83\xbb", "\xe3\x83\xb2", "\xe3\x82\xa1",
+  "\xe3\x82\xa3", "\xe3\x82\xa5", "\xe3\x82\xa7", "\xe3\x82\xa9", "\xe3\x83\xa3", "\xe3\x83\xa5", "\xe3\x83\xa7", "\xe3\x83\x83",
+  "\xe3\x83\xbc", "\xe3\x82\xa2", "\xe3\x82\xa4", "\xe3\x82\xa6", "\xe3\x82\xa8", "\xe3\x82\xaa", "\xe3\x82\xab", "\xe3\x82\xad",
+  "\xe3\x82\xaf", "\xe3\x82\xb1", "\xe3\x82\xb3", "\xe3\x82\xb5", "\xe3\x82\xb7", "\xe3\x82\xb9", "\xe3\x82\xbb", "\xe3\x82\xbd"
+};
+
+static const char *grn_nfkc121_decompose_table_efbe[] = {
+  "\xe3\x82\xbf", "\xe3\x83\x81", "\xe3\x83\x84", "\xe3\x83\x86", "\xe3\x83\x88", "\xe3\x83\x8a", "\xe3\x83\x8b", "\xe3\x83\x8c",
+  "\xe3\x83\x8d", "\xe3\x83\x8e", "\xe3\x83\x8f", "\xe3\x83\x92", "\xe3\x83\x95", "\xe3\x83\x98", "\xe3\x83\x9b", "\xe3\x83\x9e",
+  "\xe3\x83\x9f", "\xe3\x83\xa0", "\xe3\x83\xa1", "\xe3\x83\xa2", "\xe3\x83\xa4", "\xe3\x83\xa6", "\xe3\x83\xa8", "\xe3\x83\xa9",
+  "\xe3\x83\xaa", "\xe3\x83\xab", "\xe3\x83\xac", "\xe3\x83\xad", "\xe3\x83\xaf", "\xe3\x83\xb3", "\xe3\x82\x99", "\xe3\x82\x9a",
+  "\xe1\x85\xa0", "\xe1\x84\x80", "\xe1\x84\x81", "\xe1\x86\xaa", "\xe1\x84\x82", "\xe1\x86\xac", "\xe1\x86\xad", "\xe1\x84\x83",
+  "\xe1\x84\x84", "\xe1\x84\x85", "\xe1\x86\xb0", "\xe1\x86\xb1", "\xe1\x86\xb2", "\xe1\x86\xb3", "\xe1\x86\xb4", "\xe1\x86\xb5",
+  "\xe1\x84\x9a", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x88", "\xe1\x84\xa1", "\xe1\x84\x89", "\xe1\x84\x8a", "\xe1\x84\x8b",
+  "\xe1\x84\x8c", "\xe1\x84\x8d", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92"
+};
+
+static const char *grn_nfkc121_decompose_table_efbf[] = {
+  "\xe1\x85\xa1", "\xe1\x85\xa2", "\xe1\x85\xa3", "\xe1\x85\xa4", "\xe1\x85\xa5", "\xe1\x85\xa6", NULL, NULL,
+  "\xe1\x85\xa7", "\xe1\x85\xa8", "\xe1\x85\xa9", "\xe1\x85\xaa", "\xe1\x85\xab", "\xe1\x85\xac", NULL, NULL,
+  "\xe1\x85\xad", "\xe1\x85\xae", "\xe1\x85\xaf", "\xe1\x85\xb0", "\xe1\x85\xb1", "\xe1\x85\xb2", NULL, NULL,
+  "\xe1\x85\xb3", "\xe1\x85\xb4", "\xe1\x85\xb5", NULL, NULL, NULL, "\xc2\xa2", "\xc2\xa3",
+  "\xc2\xac", "\xcc\x84", "\xc2\xa6", "\xc2\xa5", "\xe2\x82\xa9", NULL, "\xe2\x94\x82", "\xe2\x86\x90",
+  "\xe2\x86\x91", "\xe2\x86\x92", "\xe2\x86\x93", "\xe2\x96\xa0", "\xe2\x97\x8b"
+};
+
+static const char *grn_nfkc121_decompose_table_f09090[] = {
+  "\xf0\x90\x90\xa8", "\xf0\x90\x90\xa9", "\xf0\x90\x90\xaa", "\xf0\x90\x90\xab", "\xf0\x90\x90\xac", "\xf0\x90\x90\xad", "\xf0\x90\x90\xae", "\xf0\x90\x90\xaf",
+  "\xf0\x90\x90\xb0", "\xf0\x90\x90\xb1", "\xf0\x90\x90\xb2", "\xf0\x90\x90\xb3", "\xf0\x90\x90\xb4", "\xf0\x90\x90\xb5", "\xf0\x90\x90\xb6", "\xf0\x90\x90\xb7",
+  "\xf0\x90\x90\xb8", "\xf0\x90\x90\xb9", "\xf0\x90\x90\xba", "\xf0\x90\x90\xbb", "\xf0\x90\x90\xbc", "\xf0\x90\x90\xbd", "\xf0\x90\x90\xbe", "\xf0\x90\x90\xbf",
+  "\xf0\x90\x91\x80", "\xf0\x90\x91\x81", "\xf0\x90\x91\x82", "\xf0\x90\x91\x83", "\xf0\x90\x91\x84", "\xf0\x90\x91\x85", "\xf0\x90\x91\x86", "\xf0\x90\x91\x87",
+  "\xf0\x90\x91\x88", "\xf0\x90\x91\x89", "\xf0\x90\x91\x8a", "\xf0\x90\x91\x8b", "\xf0\x90\x91\x8c", "\xf0\x90\x91\x8d", "\xf0\x90\x91\x8e", "\xf0\x90\x91\x8f"
+};
+
+static const char *grn_nfkc121_decompose_table_f09092[] = {
+  "\xf0\x90\x93\x98", "\xf0\x90\x93\x99", "\xf0\x90\x93\x9a", "\xf0\x90\x93\x9b", "\xf0\x90\x93\x9c", "\xf0\x90\x93\x9d", "\xf0\x90\x93\x9e", "\xf0\x90\x93\x9f",
+  "\xf0\x90\x93\xa0", "\xf0\x90\x93\xa1", "\xf0\x90\x93\xa2", "\xf0\x90\x93\xa3", "\xf0\x90\x93\xa4", "\xf0\x90\x93\xa5", "\xf0\x90\x93\xa6", "\xf0\x90\x93\xa7"
+};
+
+static const char *grn_nfkc121_decompose_table_f09093[] = {
+  "\xf0\x90\x93\xa8", "\xf0\x90\x93\xa9", "\xf0\x90\x93\xaa", "\xf0\x90\x93\xab", "\xf0\x90\x93\xac", "\xf0\x90\x93\xad", "\xf0\x90\x93\xae", "\xf0\x90\x93\xaf",
+  "\xf0\x90\x93\xb0", "\xf0\x90\x93\xb1", "\xf0\x90\x93\xb2", "\xf0\x90\x93\xb3", "\xf0\x90\x93\xb4", "\xf0\x90\x93\xb5", "\xf0\x90\x93\xb6", "\xf0\x90\x93\xb7",
+  "\xf0\x90\x93\xb8", "\xf0\x90\x93\xb9", "\xf0\x90\x93\xba", "\xf0\x90\x93\xbb"
+};
+
+static const char *grn_nfkc121_decompose_table_f090b2[] = {
+  "\xf0\x90\xb3\x80", "\xf0\x90\xb3\x81", "\xf0\x90\xb3\x82", "\xf0\x90\xb3\x83", "\xf0\x90\xb3\x84", "\xf0\x90\xb3\x85", "\xf0\x90\xb3\x86", "\xf0\x90\xb3\x87",
+  "\xf0\x90\xb3\x88", "\xf0\x90\xb3\x89", "\xf0\x90\xb3\x8a", "\xf0\x90\xb3\x8b", "\xf0\x90\xb3\x8c", "\xf0\x90\xb3\x8d", "\xf0\x90\xb3\x8e", "\xf0\x90\xb3\x8f",
+  "\xf0\x90\xb3\x90", "\xf0\x90\xb3\x91", "\xf0\x90\xb3\x92", "\xf0\x90\xb3\x93", "\xf0\x90\xb3\x94", "\xf0\x90\xb3\x95", "\xf0\x90\xb3\x96", "\xf0\x90\xb3\x97",
+  "\xf0\x90\xb3\x98", "\xf0\x90\xb3\x99", "\xf0\x90\xb3\x9a", "\xf0\x90\xb3\x9b", "\xf0\x90\xb3\x9c", "\xf0\x90\xb3\x9d", "\xf0\x90\xb3\x9e", "\xf0\x90\xb3\x9f",
+  "\xf0\x90\xb3\xa0", "\xf0\x90\xb3\xa1", "\xf0\x90\xb3\xa2", "\xf0\x90\xb3\xa3", "\xf0\x90\xb3\xa4", "\xf0\x90\xb3\xa5", "\xf0\x90\xb3\xa6", "\xf0\x90\xb3\xa7",
+  "\xf0\x90\xb3\xa8", "\xf0\x90\xb3\xa9", "\xf0\x90\xb3\xaa", "\xf0\x90\xb3\xab", "\xf0\x90\xb3\xac", "\xf0\x90\xb3\xad", "\xf0\x90\xb3\xae", "\xf0\x90\xb3\xaf",
+  "\xf0\x90\xb3\xb0", "\xf0\x90\xb3\xb1", "\xf0\x90\xb3\xb2"
+};
+
+static const char *grn_nfkc121_decompose_table_f091a2[] = {
+  "\xf0\x91\xa3\x80", "\xf0\x91\xa3\x81", "\xf0\x91\xa3\x82", "\xf0\x91\xa3\x83", "\xf0\x91\xa3\x84", "\xf0\x91\xa3\x85", "\xf0\x91\xa3\x86", "\xf0\x91\xa3\x87",
+  "\xf0\x91\xa3\x88", "\xf0\x91\xa3\x89", "\xf0\x91\xa3\x8a", "\xf0\x91\xa3\x8b", "\xf0\x91\xa3\x8c", "\xf0\x91\xa3\x8d", "\xf0\x91\xa3\x8e", "\xf0\x91\xa3\x8f",
+  "\xf0\x91\xa3\x90", "\xf0\x91\xa3\x91", "\xf0\x91\xa3\x92", "\xf0\x91\xa3\x93", "\xf0\x91\xa3\x94", "\xf0\x91\xa3\x95", "\xf0\x91\xa3\x96", "\xf0\x91\xa3\x97",
+  "\xf0\x91\xa3\x98", "\xf0\x91\xa3\x99", "\xf0\x91\xa3\x9a", "\xf0\x91\xa3\x9b", "\xf0\x91\xa3\x9c", "\xf0\x91\xa3\x9d", "\xf0\x91\xa3\x9e", "\xf0\x91\xa3\x9f"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d85[] = {
+  "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d86[] = {
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5", "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5", "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d90[] = {
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
+  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d91[] = {
+  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
+  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", NULL, "\x69", "\x6a",
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d92[] = {
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\x61", NULL, "\x63", "\x64",
+  NULL, NULL, "\x67", NULL, NULL, "\x6a", "\x6b", NULL,
+  NULL, "\x6e", "\x6f", "\x70", "\x71", NULL, "\x73", "\x74",
+  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
+  "\x63", "\x64", NULL, "\x66", NULL, "\x68", "\x69", "\x6a"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d93[] = {
+  "\x6b", "\x6c", "\x6d", "\x6e", NULL, "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d94[] = {
+  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", NULL, "\x64",
+  "\x65", "\x66", "\x67", NULL, NULL, "\x6a", "\x6b", "\x6c",
+  "\x6d", "\x6e", "\x6f", "\x70", "\x71", NULL, "\x73", "\x74",
+  "\x75", "\x76", "\x77", "\x78", "\x79", NULL, "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", NULL, "\x64", "\x65", "\x66", "\x67"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d95[] = {
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", NULL, "\x6f", NULL,
+  NULL, NULL, "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", NULL, "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
+  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
+  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d96[] = {
+  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d97[] = {
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
+  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
+  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
+  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d98[] = {
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d99[] = {
+  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
+  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
+  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
+  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
+  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
+  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9a[] = {
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
+  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
+  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
+  "\x77", "\x78", "\x79", "\x7a", "\xc4\xb1", "\xc8\xb7", NULL, NULL,
+  "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8",
+  "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80",
+  "\xcf\x81", "\xce\xb8", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9b[] = {
+  "\xcf\x89", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6",
+  "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe",
+  "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86",
+  "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86",
+  "\xcf\x81", "\xcf\x80", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6",
+  "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe",
+  "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xce\xb8", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86",
+  "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9c[] = {
+  "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc",
+  "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84",
+  "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8",
+  "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4",
+  "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc",
+  "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xce\xb8", "\xcf\x83", "\xcf\x84",
+  "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2",
+  "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9d[] = {
+  "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82",
+  "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82",
+  "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80", "\xce\xb1", "\xce\xb2",
+  "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba",
+  "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xce\xb8",
+  "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x87",
+  "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8",
+  "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9e[] = {
+  "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88",
+  "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80",
+  "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8",
+  "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80",
+  "\xcf\x81", "\xce\xb8", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88",
+  "\xcf\x89", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6",
+  "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe",
+  "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86"
+};
+
+static const char *grn_nfkc121_decompose_table_f09d9f[] = {
+  "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86",
+  "\xcf\x81", "\xcf\x80", "\xcf\x9d", "\xcf\x9d", NULL, NULL, "\x30", "\x31",
+  "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39",
+  "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37",
+  "\x38", "\x39", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35",
+  "\x36", "\x37", "\x38", "\x39", "\x30", "\x31", "\x32", "\x33",
+  "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x30", "\x31",
+  "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39"
+};
+
+static const char *grn_nfkc121_decompose_table_f09ea4[] = {
+  "\xf0\x9e\xa4\xa2", "\xf0\x9e\xa4\xa3", "\xf0\x9e\xa4\xa4", "\xf0\x9e\xa4\xa5", "\xf0\x9e\xa4\xa6", "\xf0\x9e\xa4\xa7", "\xf0\x9e\xa4\xa8", "\xf0\x9e\xa4\xa9",
+  "\xf0\x9e\xa4\xaa", "\xf0\x9e\xa4\xab", "\xf0\x9e\xa4\xac", "\xf0\x9e\xa4\xad", "\xf0\x9e\xa4\xae", "\xf0\x9e\xa4\xaf", "\xf0\x9e\xa4\xb0", "\xf0\x9e\xa4\xb1",
+  "\xf0\x9e\xa4\xb2", "\xf0\x9e\xa4\xb3", "\xf0\x9e\xa4\xb4", "\xf0\x9e\xa4\xb5", "\xf0\x9e\xa4\xb6", "\xf0\x9e\xa4\xb7", "\xf0\x9e\xa4\xb8", "\xf0\x9e\xa4\xb9",
+  "\xf0\x9e\xa4\xba", "\xf0\x9e\xa4\xbb", "\xf0\x9e\xa4\xbc", "\xf0\x9e\xa4\xbd", "\xf0\x9e\xa4\xbe", "\xf0\x9e\xa4\xbf", "\xf0\x9e\xa5\x80", "\xf0\x9e\xa5\x81",
+  "\xf0\x9e\xa5\x82", "\xf0\x9e\xa5\x83"
+};
+
+static const char *grn_nfkc121_decompose_table_f09eb8[] = {
+  "\xd8\xa7", "\xd8\xa8", "\xd8\xac", "\xd8\xaf", NULL, "\xd9\x88", "\xd8\xb2", "\xd8\xad",
+  "\xd8\xb7", "\xd9\x8a", "\xd9\x83", "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd8\xb3", "\xd8\xb9",
+  "\xd9\x81", "\xd8\xb5", "\xd9\x82", "\xd8\xb1", "\xd8\xb4", "\xd8\xaa", "\xd8\xab", "\xd8\xae",
+  "\xd8\xb0", "\xd8\xb6", "\xd8\xb8", "\xd8\xba", "\xd9\xae", "\xda\xba", "\xda\xa1", "\xd9\xaf",
+  NULL, "\xd8\xa8", "\xd8\xac", NULL, "\xd9\x87", NULL, NULL, "\xd8\xad",
+  NULL, "\xd9\x8a", "\xd9\x83", "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd8\xb3", "\xd8\xb9",
+  "\xd9\x81", "\xd8\xb5", "\xd9\x82", NULL, "\xd8\xb4", "\xd8\xaa", "\xd8\xab", "\xd8\xae",
+  NULL, "\xd8\xb6", NULL, "\xd8\xba"
+};
+
+static const char *grn_nfkc121_decompose_table_f09eb9[] = {
+  "\xd8\xac", NULL, NULL, NULL, NULL, "\xd8\xad", NULL, "\xd9\x8a",
+  NULL, "\xd9\x84", NULL, "\xd9\x86", "\xd8\xb3", "\xd8\xb9", NULL, "\xd8\xb5",
+  "\xd9\x82", NULL, "\xd8\xb4", NULL, NULL, "\xd8\xae", NULL, "\xd8\xb6",
+  NULL, "\xd8\xba", NULL, "\xda\xba", NULL, "\xd9\xaf", NULL, "\xd8\xa8",
+  "\xd8\xac", NULL, "\xd9\x87", NULL, NULL, "\xd8\xad", "\xd8\xb7", "\xd9\x8a",
+  "\xd9\x83", NULL, "\xd9\x85", "\xd9\x86", "\xd8\xb3", "\xd8\xb9", "\xd9\x81", "\xd8\xb5",
+  "\xd9\x82", NULL, "\xd8\xb4", "\xd8\xaa", "\xd8\xab", "\xd8\xae", NULL, "\xd8\xb6",
+  "\xd8\xb8", "\xd8\xba", "\xd9\xae", NULL, "\xda\xa1"
+};
+
+static const char *grn_nfkc121_decompose_table_f09eba[] = {
+  "\xd8\xa7", "\xd8\xa8", "\xd8\xac", "\xd8\xaf", "\xd9\x87", "\xd9\x88", "\xd8\xb2", "\xd8\xad",
+  "\xd8\xb7", "\xd9\x8a", NULL, "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd8\xb3", "\xd8\xb9",
+  "\xd9\x81", "\xd8\xb5", "\xd9\x82", "\xd8\xb1", "\xd8\xb4", "\xd8\xaa", "\xd8\xab", "\xd8\xae",
+  "\xd8\xb0", "\xd8\xb6", "\xd8\xb8", "\xd8\xba", NULL, NULL, NULL, NULL,
+  NULL, "\xd8\xa8", "\xd8\xac", "\xd8\xaf", NULL, "\xd9\x88", "\xd8\xb2", "\xd8\xad",
+  "\xd8\xb7", "\xd9\x8a", NULL, "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd8\xb3", "\xd8\xb9",
+  "\xd9\x81", "\xd8\xb5", "\xd9\x82", "\xd8\xb1", "\xd8\xb4", "\xd8\xaa", "\xd8\xab", "\xd8\xae",
+  "\xd8\xb0", "\xd8\xb6", "\xd8\xb8", "\xd8\xba"
+};
+
+static const char *grn_nfkc121_decompose_table_f09f84[] = {
+  "\x30\x2e", "\x30\x2c", "\x31\x2c", "\x32\x2c", "\x33\x2c", "\x34\x2c", "\x35\x2c", "\x36\x2c",
+  "\x37\x2c", "\x38\x2c", "\x39\x2c", NULL, NULL, NULL, NULL, NULL,
+  "\x28\x61\x29", "\x28\x62\x29", "\x28\x63\x29", "\x28\x64\x29", "\x28\x65\x29", "\x28\x66\x29", "\x28\x67\x29", "\x28\x68\x29",
+  "\x28\x69\x29", "\x28\x6a\x29", "\x28\x6b\x29", "\x28\x6c\x29", "\x28\x6d\x29", "\x28\x6e\x29", "\x28\x6f\x29", "\x28\x70\x29",
+  "\x28\x71\x29", "\x28\x72\x29", "\x28\x73\x29", "\x28\x74\x29", "\x28\x75\x29", "\x28\x76\x29", "\x28\x77\x29", "\x28\x78\x29",
+  "\x28\x79\x29", "\x28\x7a\x29", "\xe3\x80\x94\x73\xe3\x80\x95", "\x63", "\x72", "\x63\x64", "\x77\x7a", NULL,
+  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
+  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70"
+};
+
+static const char *grn_nfkc121_decompose_table_f09f85[] = {
+  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
+  "\x79", "\x7a", "\x68\x76", "\x6d\x76", "\x73\x64", "\x73\x73", "\x70\x70\x76", "\x77\x63",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\x6d\x63", "\x6d\x64", "\x6d\x72"
+};
+
+static const char *grn_nfkc121_decompose_table_f09f88[] = {
+  "\xe3\x81\xbb\xe3\x81\x8b", "\xe3\x82\xb3\xe3\x82\xb3", "\xe3\x82\xb5", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe6\x89\x8b", "\xe5\xad\x97", "\xe5\x8f\x8c", "\xe3\x83\x87", "\xe4\xba\x8c", "\xe5\xa4\x9a", "\xe8\xa7\xa3", "\xe5\xa4\xa9",
+  "\xe4\xba\xa4", "\xe6\x98\xa0", "\xe7\x84\xa1", "\xe6\x96\x99", "\xe5\x89\x8d", "\xe5\xbe\x8c", "\xe5\x86\x8d", "\xe6\x96\xb0",
+  "\xe5\x88\x9d", "\xe7\xb5\x82", "\xe7\x94\x9f", "\xe8\xb2\xa9", "\xe5\xa3\xb0", "\xe5\x90\xb9", "\xe6\xbc\x94", "\xe6\x8a\x95",
+  "\xe6\x8d\x95", "\xe4\xb8\x80", "\xe4\xb8\x89", "\xe9\x81\x8a", "\xe5\xb7\xa6", "\xe4\xb8\xad", "\xe5\x8f\xb3", "\xe6\x8c\x87",
+  "\xe8\xb5\xb0", "\xe6\x89\x93", "\xe7\xa6\x81", "\xe7\xa9\xba", "\xe5\x90\x88", "\xe6\xba\x80", "\xe6\x9c\x89", "\xe6\x9c\x88",
+  "\xe7\x94\xb3", "\xe5\x89\xb2", "\xe5\x96\xb6", "\xe9\x85\x8d"
+};
+
+static const char *grn_nfkc121_decompose_table_f09f89[] = {
+  "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95", "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95", "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95", "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95", "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95", "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95", "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95", "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95",
+  "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe5\xbe\x97", "\xe5\x8f\xaf"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa0[] = {
+  "\xe4\xb8\xbd", "\xe4\xb8\xb8", "\xe4\xb9\x81", "\xf0\xa0\x84\xa2", "\xe4\xbd\xa0", "\xe4\xbe\xae", "\xe4\xbe\xbb", "\xe5\x80\x82",
+  "\xe5\x81\xba", "\xe5\x82\x99", "\xe5\x83\xa7", "\xe5\x83\x8f", "\xe3\x92\x9e", "\xf0\xa0\x98\xba", "\xe5\x85\x8d", "\xe5\x85\x94",
+  "\xe5\x85\xa4", "\xe5\x85\xb7", "\xf0\xa0\x94\x9c", "\xe3\x92\xb9", "\xe5\x85\xa7", "\xe5\x86\x8d", "\xf0\xa0\x95\x8b", "\xe5\x86\x97",
+  "\xe5\x86\xa4", "\xe4\xbb\x8c", "\xe5\x86\xac", "\xe5\x86\xb5", "\xf0\xa9\x87\x9f", "\xe5\x87\xb5", "\xe5\x88\x83", "\xe3\x93\x9f",
+  "\xe5\x88\xbb", "\xe5\x89\x86", "\xe5\x89\xb2", "\xe5\x89\xb7", "\xe3\x94\x95", "\xe5\x8b\x87", "\xe5\x8b\x89", "\xe5\x8b\xa4",
+  "\xe5\x8b\xba", "\xe5\x8c\x85", "\xe5\x8c\x86", "\xe5\x8c\x97", "\xe5\x8d\x89", "\xe5\x8d\x91", "\xe5\x8d\x9a", "\xe5\x8d\xb3",
+  "\xe5\x8d\xbd", "\xe5\x8d\xbf", "\xe5\x8d\xbf", "\xe5\x8d\xbf", "\xf0\xa0\xa8\xac", "\xe7\x81\xb0", "\xe5\x8f\x8a", "\xe5\x8f\x9f",
+  "\xf0\xa0\xad\xa3", "\xe5\x8f\xab", "\xe5\x8f\xb1", "\xe5\x90\x86", "\xe5\x92\x9e", "\xe5\x90\xb8", "\xe5\x91\x88", "\xe5\x91\xa8"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa1[] = {
+  "\xe5\x92\xa2", "\xe5\x93\xb6", "\xe5\x94\x90", "\xe5\x95\x93", "\xe5\x95\xa3", "\xe5\x96\x84", "\xe5\x96\x84", "\xe5\x96\x99",
+  "\xe5\x96\xab", "\xe5\x96\xb3", "\xe5\x97\x82", "\xe5\x9c\x96", "\xe5\x98\x86", "\xe5\x9c\x97", "\xe5\x99\x91", "\xe5\x99\xb4",
+  "\xe5\x88\x87", "\xe5\xa3\xae", "\xe5\x9f\x8e", "\xe5\x9f\xb4", "\xe5\xa0\x8d", "\xe5\x9e\x8b", "\xe5\xa0\xb2", "\xe5\xa0\xb1",
+  "\xe5\xa2\xac", "\xf0\xa1\x93\xa4", "\xe5\xa3\xb2", "\xe5\xa3\xb7", "\xe5\xa4\x86", "\xe5\xa4\x9a", "\xe5\xa4\xa2", "\xe5\xa5\xa2",
+  "\xf0\xa1\x9a\xa8", "\xf0\xa1\x9b\xaa", "\xe5\xa7\xac", "\xe5\xa8\x9b", "\xe5\xa8\xa7", "\xe5\xa7\x98", "\xe5\xa9\xa6", "\xe3\x9b\xae",
+  "\xe3\x9b\xbc", "\xe5\xac\x88", "\xe5\xac\xbe", "\xe5\xac\xbe", "\xf0\xa1\xa7\x88", "\xe5\xaf\x83", "\xe5\xaf\x98", "\xe5\xaf\xa7",
+  "\xe5\xaf\xb3", "\xf0\xa1\xac\x98", "\xe5\xaf\xbf", "\xe5\xb0\x86", "\xe5\xbd\x93", "\xe5\xb0\xa2", "\xe3\x9e\x81", "\xe5\xb1\xa0",
+  "\xe5\xb1\xae", "\xe5\xb3\x80", "\xe5\xb2\x8d", "\xf0\xa1\xb7\xa4", "\xe5\xb5\x83", "\xf0\xa1\xb7\xa6", "\xe5\xb5\xae", "\xe5\xb5\xab"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa2[] = {
+  "\xe5\xb5\xbc", "\xe5\xb7\xa1", "\xe5\xb7\xa2", "\xe3\xa0\xaf", "\xe5\xb7\xbd", "\xe5\xb8\xa8", "\xe5\xb8\xbd", "\xe5\xb9\xa9",
+  "\xe3\xa1\xa2", "\xf0\xa2\x86\x83", "\xe3\xa1\xbc", "\xe5\xba\xb0", "\xe5\xba\xb3", "\xe5\xba\xb6", "\xe5\xbb\x8a", "\xf0\xaa\x8e\x92",
+  "\xe5\xbb\xbe", "\xf0\xa2\x8c\xb1", "\xf0\xa2\x8c\xb1", "\xe8\x88\x81", "\xe5\xbc\xa2", "\xe5\xbc\xa2", "\xe3\xa3\x87", "\xf0\xa3\x8a\xb8",
+  "\xf0\xa6\x87\x9a", "\xe5\xbd\xa2", "\xe5\xbd\xab", "\xe3\xa3\xa3", "\xe5\xbe\x9a", "\xe5\xbf\x8d", "\xe5\xbf\x97", "\xe5\xbf\xb9",
+  "\xe6\x82\x81", "\xe3\xa4\xba", "\xe3\xa4\x9c", "\xe6\x82\x94", "\xf0\xa2\x9b\x94", "\xe6\x83\x87", "\xe6\x85\x88", "\xe6\x85\x8c",
+  "\xe6\x85\x8e", "\xe6\x85\x8c", "\xe6\x85\xba", "\xe6\x86\x8e", "\xe6\x86\xb2", "\xe6\x86\xa4", "\xe6\x86\xaf", "\xe6\x87\x9e",
+  "\xe6\x87\xb2", "\xe6\x87\xb6", "\xe6\x88\x90", "\xe6\x88\x9b", "\xe6\x89\x9d", "\xe6\x8a\xb1", "\xe6\x8b\x94", "\xe6\x8d\x90",
+  "\xf0\xa2\xac\x8c", "\xe6\x8c\xbd", "\xe6\x8b\xbc", "\xe6\x8d\xa8", "\xe6\x8e\x83", "\xe6\x8f\xa4", "\xf0\xa2\xaf\xb1", "\xe6\x90\xa2"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa3[] = {
+  "\xe6\x8f\x85", "\xe6\x8e\xa9", "\xe3\xa8\xae", "\xe6\x91\xa9", "\xe6\x91\xbe", "\xe6\x92\x9d", "\xe6\x91\xb7", "\xe3\xa9\xac",
+  "\xe6\x95\x8f", "\xe6\x95\xac", "\xf0\xa3\x80\x8a", "\xe6\x97\xa3", "\xe6\x9b\xb8", "\xe6\x99\x89", "\xe3\xac\x99", "\xe6\x9a\x91",
+  "\xe3\xac\x88", "\xe3\xab\xa4", "\xe5\x86\x92", "\xe5\x86\x95", "\xe6\x9c\x80", "\xe6\x9a\x9c", "\xe8\x82\xad", "\xe4\x8f\x99",
+  "\xe6\x9c\x97", "\xe6\x9c\x9b", "\xe6\x9c\xa1", "\xe6\x9d\x9e", "\xe6\x9d\x93", "\xf0\xa3\x8f\x83", "\xe3\xad\x89", "\xe6\x9f\xba",
+  "\xe6\x9e\x85", "\xe6\xa1\x92", "\xe6\xa2\x85", "\xf0\xa3\x91\xad", "\xe6\xa2\x8e", "\xe6\xa0\x9f", "\xe6\xa4\x94", "\xe3\xae\x9d",
+  "\xe6\xa5\x82", "\xe6\xa6\xa3", "\xe6\xa7\xaa", "\xe6\xaa\xa8", "\xf0\xa3\x9a\xa3", "\xe6\xab\x9b", "\xe3\xb0\x98", "\xe6\xac\xa1",
+  "\xf0\xa3\xa2\xa7", "\xe6\xad\x94", "\xe3\xb1\x8e", "\xe6\xad\xb2", "\xe6\xae\x9f", "\xe6\xae\xba", "\xe6\xae\xbb", "\xf0\xa3\xaa\x8d",
+  "\xf0\xa1\xb4\x8b", "\xf0\xa3\xab\xba", "\xe6\xb1\x8e", "\xf0\xa3\xb2\xbc", "\xe6\xb2\xbf", "\xe6\xb3\x8d", "\xe6\xb1\xa7", "\xe6\xb4\x96"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa4[] = {
+  "\xe6\xb4\xbe", "\xe6\xb5\xb7", "\xe6\xb5\x81", "\xe6\xb5\xa9", "\xe6\xb5\xb8", "\xe6\xb6\x85", "\xf0\xa3\xb4\x9e", "\xe6\xb4\xb4",
+  "\xe6\xb8\xaf", "\xe6\xb9\xae", "\xe3\xb4\xb3", "\xe6\xbb\x8b", "\xe6\xbb\x87", "\xf0\xa3\xbb\x91", "\xe6\xb7\xb9", "\xe6\xbd\xae",
+  "\xf0\xa3\xbd\x9e", "\xf0\xa3\xbe\x8e", "\xe6\xbf\x86", "\xe7\x80\xb9", "\xe7\x80\x9e", "\xe7\x80\x9b", "\xe3\xb6\x96", "\xe7\x81\x8a",
+  "\xe7\x81\xbd", "\xe7\x81\xb7", "\xe7\x82\xad", "\xf0\xa0\x94\xa5", "\xe7\x85\x85", "\xf0\xa4\x89\xa3", "\xe7\x86\x9c", "\xf0\xa4\x8e\xab",
+  "\xe7\x88\xa8", "\xe7\x88\xb5", "\xe7\x89\x90", "\xf0\xa4\x98\x88", "\xe7\x8a\x80", "\xe7\x8a\x95", "\xf0\xa4\x9c\xb5", "\xf0\xa4\xa0\x94",
+  "\xe7\x8d\xba", "\xe7\x8e\x8b", "\xe3\xba\xac", "\xe7\x8e\xa5", "\xe3\xba\xb8", "\xe3\xba\xb8", "\xe7\x91\x87", "\xe7\x91\x9c",
+  "\xe7\x91\xb1", "\xe7\x92\x85", "\xe7\x93\x8a", "\xe3\xbc\x9b", "\xe7\x94\xa4", "\xf0\xa4\xb0\xb6", "\xe7\x94\xbe", "\xf0\xa4\xb2\x92",
+  "\xe7\x95\xb0", "\xf0\xa2\x86\x9f", "\xe7\x98\x90", "\xf0\xa4\xbe\xa1", "\xf0\xa4\xbe\xb8", "\xf0\xa5\x81\x84", "\xe3\xbf\xbc", "\xe4\x80\x88"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa5[] = {
+  "\xe7\x9b\xb4", "\xf0\xa5\x83\xb3", "\xf0\xa5\x83\xb2", "\xf0\xa5\x84\x99", "\xf0\xa5\x84\xb3", "\xe7\x9c\x9e", "\xe7\x9c\x9f", "\xe7\x9c\x9f",
+  "\xe7\x9d\x8a", "\xe4\x80\xb9", "\xe7\x9e\x8b", "\xe4\x81\x86", "\xe4\x82\x96", "\xf0\xa5\x90\x9d", "\xe7\xa1\x8e", "\xe7\xa2\x8c",
+  "\xe7\xa3\x8c", "\xe4\x83\xa3", "\xf0\xa5\x98\xa6", "\xe7\xa5\x96", "\xf0\xa5\x9a\x9a", "\xf0\xa5\x9b\x85", "\xe7\xa6\x8f", "\xe7\xa7\xab",
+  "\xe4\x84\xaf", "\xe7\xa9\x80", "\xe7\xa9\x8a", "\xe7\xa9\x8f", "\xf0\xa5\xa5\xbc", "\xf0\xa5\xaa\xa7", "\xf0\xa5\xaa\xa7", "\xe7\xab\xae",
+  "\xe4\x88\x82", "\xf0\xa5\xae\xab", "\xe7\xaf\x86", "\xe7\xaf\x89", "\xe4\x88\xa7", "\xf0\xa5\xb2\x80", "\xe7\xb3\x92", "\xe4\x8a\xa0",
+  "\xe7\xb3\xa8", "\xe7\xb3\xa3", "\xe7\xb4\x80", "\xf0\xa5\xbe\x86", "\xe7\xb5\xa3", "\xe4\x8c\x81", "\xe7\xb7\x87", "\xe7\xb8\x82",
+  "\xe7\xb9\x85", "\xe4\x8c\xb4", "\xf0\xa6\x88\xa8", "\xf0\xa6\x89\x87", "\xe4\x8d\x99", "\xf0\xa6\x8b\x99", "\xe7\xbd\xba", "\xf0\xa6\x8c\xbe",
+  "\xe7\xbe\x95", "\xe7\xbf\xba", "\xe8\x80\x85", "\xf0\xa6\x93\x9a", "\xf0\xa6\x94\xa3", "\xe8\x81\xa0", "\xf0\xa6\x96\xa8", "\xe8\x81\xb0"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa6[] = {
+  "\xf0\xa3\x8d\x9f", "\xe4\x8f\x95", "\xe8\x82\xb2", "\xe8\x84\x83", "\xe4\x90\x8b", "\xe8\x84\xbe", "\xe5\xaa\xb5", "\xf0\xa6\x9e\xa7",
+  "\xf0\xa6\x9e\xb5", "\xf0\xa3\x8e\x93", "\xf0\xa3\x8e\x9c", "\xe8\x88\x81", "\xe8\x88\x84", "\xe8\xbe\x9e", "\xe4\x91\xab", "\xe8\x8a\x91",
+  "\xe8\x8a\x8b", "\xe8\x8a\x9d", "\xe5\x8a\xb3", "\xe8\x8a\xb1", "\xe8\x8a\xb3", "\xe8\x8a\xbd", "\xe8\x8b\xa6", "\xf0\xa6\xac\xbc",
+  "\xe8\x8b\xa5", "\xe8\x8c\x9d", "\xe8\x8d\xa3", "\xe8\x8e\xad", "\xe8\x8c\xa3", "\xe8\x8e\xbd", "\xe8\x8f\xa7", "\xe8\x91\x97",
+  "\xe8\x8d\x93", "\xe8\x8f\x8a", "\xe8\x8f\x8c", "\xe8\x8f\x9c", "\xf0\xa6\xb0\xb6", "\xf0\xa6\xb5\xab", "\xf0\xa6\xb3\x95", "\xe4\x94\xab",
+  "\xe8\x93\xb1", "\xe8\x93\xb3", "\xe8\x94\x96", "\xf0\xa7\x8f\x8a", "\xe8\x95\xa4", "\xf0\xa6\xbc\xac", "\xe4\x95\x9d", "\xe4\x95\xa1",
+  "\xf0\xa6\xbe\xb1", "\xf0\xa7\x83\x92", "\xe4\x95\xab", "\xe8\x99\x90", "\xe8\x99\x9c", "\xe8\x99\xa7", "\xe8\x99\xa9", "\xe8\x9a\xa9",
+  "\xe8\x9a\x88", "\xe8\x9c\x8e", "\xe8\x9b\xa2", "\xe8\x9d\xb9", "\xe8\x9c\xa8", "\xe8\x9d\xab", "\xe8\x9e\x86", "\xe4\x97\x97"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa7[] = {
+  "\xe8\x9f\xa1", "\xe8\xa0\x81", "\xe4\x97\xb9", "\xe8\xa1\xa0", "\xe8\xa1\xa3", "\xf0\xa7\x99\xa7", "\xe8\xa3\x97", "\xe8\xa3\x9e",
+  "\xe4\x98\xb5", "\xe8\xa3\xba", "\xe3\x92\xbb", "\xf0\xa7\xa2\xae", "\xf0\xa7\xa5\xa6", "\xe4\x9a\xbe", "\xe4\x9b\x87", "\xe8\xaa\xa0",
+  "\xe8\xab\xad", "\xe8\xae\x8a", "\xe8\xb1\x95", "\xf0\xa7\xb2\xa8", "\xe8\xb2\xab", "\xe8\xb3\x81", "\xe8\xb4\x9b", "\xe8\xb5\xb7",
+  "\xf0\xa7\xbc\xaf", "\xf0\xa0\xa0\x84", "\xe8\xb7\x8b", "\xe8\xb6\xbc", "\xe8\xb7\xb0", "\xf0\xa0\xa3\x9e", "\xe8\xbb\x94", "\xe8\xbc\xb8",
+  "\xf0\xa8\x97\x92", "\xf0\xa8\x97\xad", "\xe9\x82\x94", "\xe9\x83\xb1", "\xe9\x84\x91", "\xf0\xa8\x9c\xae", "\xe9\x84\x9b", "\xe9\x88\xb8",
+  "\xe9\x8b\x97", "\xe9\x8b\x98", "\xe9\x89\xbc", "\xe9\x8f\xb9", "\xe9\x90\x95", "\xf0\xa8\xaf\xba", "\xe9\x96\x8b", "\xe4\xa6\x95",
+  "\xe9\x96\xb7", "\xf0\xa8\xb5\xb7", "\xe4\xa7\xa6", "\xe9\x9b\x83", "\xe5\xb6\xb2", "\xe9\x9c\xa3", "\xf0\xa9\x85\x85", "\xf0\xa9\x88\x9a",
+  "\xe4\xa9\xae", "\xe4\xa9\xb6", "\xe9\x9f\xa0", "\xf0\xa9\x90\x8a", "\xe4\xaa\xb2", "\xf0\xa9\x92\x96", "\xe9\xa0\x8b", "\xe9\xa0\x8b"
+};
+
+static const char *grn_nfkc121_decompose_table_f0afa8[] = {
+  "\xe9\xa0\xa9", "\xf0\xa9\x96\xb6", "\xe9\xa3\xa2", "\xe4\xac\xb3", "\xe9\xa4\xa9", "\xe9\xa6\xa7", "\xe9\xa7\x82", "\xe9\xa7\xbe",
+  "\xe4\xaf\x8e", "\xf0\xa9\xac\xb0", "\xe9\xac\x92", "\xe9\xb1\x80", "\xe9\xb3\xbd", "\xe4\xb3\x8e", "\xe4\xb3\xad", "\xe9\xb5\xa7",
+  "\xf0\xaa\x83\x8e", "\xe4\xb3\xb8", "\xf0\xaa\x84\x85", "\xf0\xaa\x88\x8e", "\xf0\xaa\x8a\x91", "\xe9\xba\xbb", "\xe4\xb5\x96", "\xe9\xbb\xb9",
+  "\xe9\xbb\xbe", "\xe9\xbc\x85", "\xe9\xbc\x8f", "\xe9\xbc\x96", "\xe9\xbc\xbb", "\xf0\xaa\x98\x80"
+};
+
+const char *
+grn_nfkc121_decompose(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x41 &&
+        utf8[0] <= 0x5a) {
+      return grn_nfkc121_decompose_table_[utf8[0] - 0x41];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc2 :
+      if (utf8[1] >= 0xa0 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_c2[utf8[1] - 0xa0];
+      }
+      break;
+    case 0xc3 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0x9e) {
+        return grn_nfkc121_decompose_table_c3[utf8[1] - 0x80];
+      }
+      break;
+    case 0xc4 :
+      return grn_nfkc121_decompose_table_c4[utf8[1] - 0x80];
+    case 0xc5 :
+      return grn_nfkc121_decompose_table_c5[utf8[1] - 0x80];
+    case 0xc6 :
+      if (utf8[1] >= 0x81 &&
+          utf8[1] <= 0xbc) {
+        return grn_nfkc121_decompose_table_c6[utf8[1] - 0x81];
+      }
+      break;
+    case 0xc7 :
+      if (utf8[1] >= 0x84 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_c7[utf8[1] - 0x84];
+      }
+      break;
+    case 0xc8 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_c8[utf8[1] - 0x80];
+      }
+      break;
+    case 0xc9 :
+      if (utf8[1] >= 0x81 &&
+          utf8[1] <= 0x8e) {
+        return grn_nfkc121_decompose_table_c9[utf8[1] - 0x81];
+      }
+      break;
+    case 0xca :
+      if (utf8[1] >= 0xb0 &&
+          utf8[1] <= 0xb8) {
+        return grn_nfkc121_decompose_table_ca[utf8[1] - 0xb0];
+      }
+      break;
+    case 0xcb :
+      if (utf8[1] >= 0x98 &&
+          utf8[1] <= 0xa4) {
+        return grn_nfkc121_decompose_table_cb[utf8[1] - 0x98];
+      }
+      break;
+    case 0xcd :
+      return grn_nfkc121_decompose_table_cd[utf8[1] - 0x80];
+    case 0xce :
+      if (utf8[1] >= 0x84 &&
+          utf8[1] <= 0xab) {
+        return grn_nfkc121_decompose_table_ce[utf8[1] - 0x84];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x8f &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_decompose_table_cf[utf8[1] - 0x8f];
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xaf) {
+        return grn_nfkc121_decompose_table_d0[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd1 :
+      if (utf8[1] >= 0xa0 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_d1[utf8[1] - 0xa0];
+      }
+      break;
+    case 0xd2 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_d2[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd3 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_decompose_table_d3[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd4 :
+      return grn_nfkc121_decompose_table_d4[utf8[1] - 0x80];
+    case 0xd5 :
+      if (utf8[1] >= 0x80 &&
+          utf8[1] <= 0x96) {
+        return grn_nfkc121_decompose_table_d5[utf8[1] - 0x80];
+      }
+      break;
+    case 0xd6 :
+      if (utf8[1] == 0x87) {
+        return "\xd5\xa5\xd6\x82";
+      }
+      break;
+    case 0xd9 :
+      if (utf8[1] >= 0xb5 &&
+          utf8[1] <= 0xb8) {
+        return grn_nfkc121_decompose_table_d9[utf8[1] - 0xb5];
+      }
+      break;
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xa5 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_decompose_table_e0a5[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x9c &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_decompose_table_e0a7[utf8[2] - 0x9c];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0xb3 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_decompose_table_e0a8[utf8[2] - 0xb3];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x99 &&
+            utf8[2] <= 0x9e) {
+          return grn_nfkc121_decompose_table_e0a9[utf8[2] - 0x99];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x9c &&
+            utf8[2] <= 0x9d) {
+          return grn_nfkc121_decompose_table_e0ad[utf8[2] - 0x9c];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] == 0xb3) {
+          return "\xe0\xb9\x8d\xe0\xb8\xb2";
+        }
+        break;
+      case 0xba :
+        if (utf8[2] == 0xb3) {
+          return "\xe0\xbb\x8d\xe0\xba\xb2";
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x9c &&
+            utf8[2] <= 0x9d) {
+          return grn_nfkc121_decompose_table_e0bb[utf8[2] - 0x9c];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] == 0x8c) {
+          return "\xe0\xbc\x8b";
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_decompose_table_e0bd[utf8[2] - 0x83];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_decompose_table_e0be[utf8[2] - 0x81];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0x82 :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e182[utf8[2] - 0xa0];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_decompose_table_e183[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e18e[utf8[2] - 0xa0];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb5) {
+          return grn_nfkc121_decompose_table_e18f[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0xac &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e1b4[utf8[2] - 0xac];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_decompose_table_e1b5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x9b &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e1b6[utf8[2] - 0x9b];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e1b8[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e1b9[utf8[2] - 0x80];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e1ba[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e1bb[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e1bc[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_decompose_table_e1bd[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e1be[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e1bf[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe2 :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e280[utf8[2] - 0x80];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x87 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e281[utf8[2] - 0x87];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_decompose_table_e282[utf8[2] - 0x80];
+        }
+        break;
+      case 0x84 :
+        return grn_nfkc121_decompose_table_e284[utf8[2] - 0x80];
+      case 0x85 :
+        return grn_nfkc121_decompose_table_e285[utf8[2] - 0x80];
+      case 0x86 :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0x89) {
+          return grn_nfkc121_decompose_table_e286[utf8[2] - 0x83];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0xac &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_decompose_table_e288[utf8[2] - 0xac];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0xa9 &&
+            utf8[2] <= 0xaa) {
+          return grn_nfkc121_decompose_table_e28c[utf8[2] - 0xa9];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e291[utf8[2] - 0xa0];
+        }
+        break;
+      case 0x92 :
+        return grn_nfkc121_decompose_table_e292[utf8[2] - 0x80];
+      case 0x93 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xaa) {
+          return grn_nfkc121_decompose_table_e293[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] == 0x8c) {
+          return "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab";
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0xb4 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_decompose_table_e2a9[utf8[2] - 0xb4];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] == 0x9c) {
+          return "\xe2\xab\x9d\xcc\xb8";
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xae) {
+          return grn_nfkc121_decompose_table_e2b0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e2b1[utf8[2] - 0xa0];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e2b2[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb2) {
+          return grn_nfkc121_decompose_table_e2b3[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] == 0xaf) {
+          return "\xe2\xb5\xa1";
+        }
+        break;
+      case 0xba :
+        if (utf8[2] == 0x9f) {
+          return "\xe6\xaf\x8d";
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] == 0xb3) {
+          return "\xe9\xbe\x9f";
+        }
+        break;
+      case 0xbc :
+        return grn_nfkc121_decompose_table_e2bc[utf8[2] - 0x80];
+      case 0xbd :
+        return grn_nfkc121_decompose_table_e2bd[utf8[2] - 0x80];
+      case 0xbe :
+        return grn_nfkc121_decompose_table_e2be[utf8[2] - 0x80];
+      case 0xbf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x95) {
+          return grn_nfkc121_decompose_table_e2bf[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xe3 :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xba) {
+          return grn_nfkc121_decompose_table_e380[utf8[2] - 0x80];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x9b &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_decompose_table_e382[utf8[2] - 0x9b];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] == 0xbf) {
+          return "\xe3\x82\xb3\xe3\x83\x88";
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0xb1 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_e384[utf8[2] - 0xb1];
+        }
+        break;
+      case 0x85 :
+        return grn_nfkc121_decompose_table_e385[utf8[2] - 0x80];
+      case 0x86 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_decompose_table_e386[utf8[2] - 0x80];
+        }
+        break;
+      case 0x88 :
+        return grn_nfkc121_decompose_table_e388[utf8[2] - 0x80];
+      case 0x89 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_e389[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8a :
+        return grn_nfkc121_decompose_table_e38a[utf8[2] - 0x80];
+      case 0x8b :
+        return grn_nfkc121_decompose_table_e38b[utf8[2] - 0x80];
+      case 0x8c :
+        return grn_nfkc121_decompose_table_e38c[utf8[2] - 0x80];
+      case 0x8d :
+        return grn_nfkc121_decompose_table_e38d[utf8[2] - 0x80];
+      case 0x8e :
+        return grn_nfkc121_decompose_table_e38e[utf8[2] - 0x80];
+      case 0x8f :
+        return grn_nfkc121_decompose_table_e38f[utf8[2] - 0x80];
+      default :
+        break;
+      }
+      break;
+    case 0xea :
+      switch (utf8[1]) {
+      case 0x99 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_decompose_table_ea99[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x9d) {
+          return grn_nfkc121_decompose_table_ea9a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0xa2 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_ea9c[utf8[2] - 0xa2];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_ea9d[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_decompose_table_ea9e[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0xb8 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_decompose_table_ea9f[utf8[2] - 0xb8];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x9c &&
+            utf8[2] <= 0x9f) {
+          return grn_nfkc121_decompose_table_eaad[utf8[2] - 0x9c];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xef :
+      switch (utf8[1]) {
+      case 0xa4 :
+        return grn_nfkc121_decompose_table_efa4[utf8[2] - 0x80];
+      case 0xa5 :
+        return grn_nfkc121_decompose_table_efa5[utf8[2] - 0x80];
+      case 0xa6 :
+        return grn_nfkc121_decompose_table_efa6[utf8[2] - 0x80];
+      case 0xa7 :
+        return grn_nfkc121_decompose_table_efa7[utf8[2] - 0x80];
+      case 0xa8 :
+        return grn_nfkc121_decompose_table_efa8[utf8[2] - 0x80];
+      case 0xa9 :
+        return grn_nfkc121_decompose_table_efa9[utf8[2] - 0x80];
+      case 0xaa :
+        return grn_nfkc121_decompose_table_efaa[utf8[2] - 0x80];
+      case 0xab :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x99) {
+          return grn_nfkc121_decompose_table_efab[utf8[2] - 0x80];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_efac[utf8[2] - 0x80];
+        }
+        break;
+      case 0xad :
+        return grn_nfkc121_decompose_table_efad[utf8[2] - 0x80];
+      case 0xae :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb1) {
+          return grn_nfkc121_decompose_table_efae[utf8[2] - 0x80];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x93 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_efaf[utf8[2] - 0x93];
+        }
+        break;
+      case 0xb0 :
+        return grn_nfkc121_decompose_table_efb0[utf8[2] - 0x80];
+      case 0xb1 :
+        return grn_nfkc121_decompose_table_efb1[utf8[2] - 0x80];
+      case 0xb2 :
+        return grn_nfkc121_decompose_table_efb2[utf8[2] - 0x80];
+      case 0xb3 :
+        return grn_nfkc121_decompose_table_efb3[utf8[2] - 0x80];
+      case 0xb4 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_decompose_table_efb4[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_efb5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb6 :
+        return grn_nfkc121_decompose_table_efb6[utf8[2] - 0x80];
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_decompose_table_efb7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_efb8[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb9 :
+        return grn_nfkc121_decompose_table_efb9[utf8[2] - 0x80];
+      case 0xba :
+        return grn_nfkc121_decompose_table_efba[utf8[2] - 0x80];
+      case 0xbb :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_decompose_table_efbb[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_decompose_table_efbc[utf8[2] - 0x81];
+        }
+        break;
+      case 0xbd :
+        return grn_nfkc121_decompose_table_efbd[utf8[2] - 0x80];
+      case 0xbe :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xbe) {
+          return grn_nfkc121_decompose_table_efbe[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x82 &&
+            utf8[2] <= 0xae) {
+          return grn_nfkc121_decompose_table_efbf[utf8[2] - 0x82];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xf0 :
+      switch (utf8[1]) {
+      case 0x90 :
+        switch (utf8[2]) {
+        case 0x90 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa7) {
+            return grn_nfkc121_decompose_table_f09090[utf8[3] - 0x80];
+          }
+          break;
+        case 0x92 :
+          if (utf8[3] >= 0xb0 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_decompose_table_f09092[utf8[3] - 0xb0];
+          }
+          break;
+        case 0x93 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x93) {
+            return grn_nfkc121_decompose_table_f09093[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb2 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xb2) {
+            return grn_nfkc121_decompose_table_f090b2[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x91 :
+        switch (utf8[2]) {
+        case 0xa2 :
+          if (utf8[3] >= 0xa0 &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_decompose_table_f091a2[utf8[3] - 0xa0];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9d :
+        switch (utf8[2]) {
+        case 0x85 :
+          if (utf8[3] >= 0x9e &&
+              utf8[3] <= 0xa4) {
+            return grn_nfkc121_decompose_table_f09d85[utf8[3] - 0x9e];
+          }
+          break;
+        case 0x86 :
+          if (utf8[3] >= 0xbb &&
+              utf8[3] <= 0xbf) {
+            return grn_nfkc121_decompose_table_f09d86[utf8[3] - 0xbb];
+          }
+          break;
+        case 0x87 :
+          if (utf8[3] == 0x80) {
+            return "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf";
+          }
+          break;
+        case 0x90 :
+          return grn_nfkc121_decompose_table_f09d90[utf8[3] - 0x80];
+        case 0x91 :
+          return grn_nfkc121_decompose_table_f09d91[utf8[3] - 0x80];
+        case 0x92 :
+          return grn_nfkc121_decompose_table_f09d92[utf8[3] - 0x80];
+        case 0x93 :
+          return grn_nfkc121_decompose_table_f09d93[utf8[3] - 0x80];
+        case 0x94 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbe) {
+            return grn_nfkc121_decompose_table_f09d94[utf8[3] - 0x80];
+          }
+          break;
+        case 0x95 :
+          return grn_nfkc121_decompose_table_f09d95[utf8[3] - 0x80];
+        case 0x96 :
+          return grn_nfkc121_decompose_table_f09d96[utf8[3] - 0x80];
+        case 0x97 :
+          return grn_nfkc121_decompose_table_f09d97[utf8[3] - 0x80];
+        case 0x98 :
+          return grn_nfkc121_decompose_table_f09d98[utf8[3] - 0x80];
+        case 0x99 :
+          return grn_nfkc121_decompose_table_f09d99[utf8[3] - 0x80];
+        case 0x9a :
+          return grn_nfkc121_decompose_table_f09d9a[utf8[3] - 0x80];
+        case 0x9b :
+          return grn_nfkc121_decompose_table_f09d9b[utf8[3] - 0x80];
+        case 0x9c :
+          return grn_nfkc121_decompose_table_f09d9c[utf8[3] - 0x80];
+        case 0x9d :
+          return grn_nfkc121_decompose_table_f09d9d[utf8[3] - 0x80];
+        case 0x9e :
+          return grn_nfkc121_decompose_table_f09d9e[utf8[3] - 0x80];
+        case 0x9f :
+          return grn_nfkc121_decompose_table_f09d9f[utf8[3] - 0x80];
+        default :
+          break;
+        }
+        break;
+      case 0x9e :
+        switch (utf8[2]) {
+        case 0xa4 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xa1) {
+            return grn_nfkc121_decompose_table_f09ea4[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_decompose_table_f09eb8[utf8[3] - 0x80];
+          }
+          break;
+        case 0xb9 :
+          if (utf8[3] >= 0x82 &&
+              utf8[3] <= 0xbe) {
+            return grn_nfkc121_decompose_table_f09eb9[utf8[3] - 0x82];
+          }
+          break;
+        case 0xba :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_decompose_table_f09eba[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0x9f :
+        switch (utf8[2]) {
+        case 0x84 :
+          return grn_nfkc121_decompose_table_f09f84[utf8[3] - 0x80];
+        case 0x85 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xac) {
+            return grn_nfkc121_decompose_table_f09f85[utf8[3] - 0x80];
+          }
+          break;
+        case 0x86 :
+          if (utf8[3] == 0x90) {
+            return "\x64\x6a";
+          }
+          break;
+        case 0x88 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0xbb) {
+            return grn_nfkc121_decompose_table_f09f88[utf8[3] - 0x80];
+          }
+          break;
+        case 0x89 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x91) {
+            return grn_nfkc121_decompose_table_f09f89[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      case 0xaf :
+        switch (utf8[2]) {
+        case 0xa0 :
+          return grn_nfkc121_decompose_table_f0afa0[utf8[3] - 0x80];
+        case 0xa1 :
+          return grn_nfkc121_decompose_table_f0afa1[utf8[3] - 0x80];
+        case 0xa2 :
+          return grn_nfkc121_decompose_table_f0afa2[utf8[3] - 0x80];
+        case 0xa3 :
+          return grn_nfkc121_decompose_table_f0afa3[utf8[3] - 0x80];
+        case 0xa4 :
+          return grn_nfkc121_decompose_table_f0afa4[utf8[3] - 0x80];
+        case 0xa5 :
+          return grn_nfkc121_decompose_table_f0afa5[utf8[3] - 0x80];
+        case 0xa6 :
+          return grn_nfkc121_decompose_table_f0afa6[utf8[3] - 0x80];
+        case 0xa7 :
+          return grn_nfkc121_decompose_table_f0afa7[utf8[3] - 0x80];
+        case 0xa8 :
+          if (utf8[3] >= 0x80 &&
+              utf8[3] <= 0x9d) {
+            return grn_nfkc121_decompose_table_f0afa8[utf8[3] - 0x80];
+          }
+          break;
+        default :
+          break;
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_[] = {
+  "\xc3\xa0", NULL, NULL, NULL, "\xc3\xa8", NULL, NULL, NULL,
+  "\xc3\xac", NULL, NULL, NULL, NULL, "\xc7\xb9", "\xc3\xb2", NULL,
+  NULL, NULL, NULL, NULL, "\xc3\xb9", NULL, "\xe1\xba\x81", NULL,
+  "\xe1\xbb\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_c3[] = {
+  "\xe1\xba\xa7", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbb\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe1\xbb\x93", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xc7\x9c"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_c4[] = {
+  "\xe1\xba\xb1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xb8\x95"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_c6[] = {
+  "\xe1\xbb\x9d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_ce[] = {
+  "\xe1\xbd\xb0", NULL, NULL, NULL, "\xe1\xbd\xb2", NULL, "\xe1\xbd\xb4", NULL,
+  "\xe1\xbd\xb6", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_cf[] = {
+  "\xe1\xbd\xba", NULL, NULL, NULL, "\xe1\xbd\xbc", "\xe1\xbf\x92", "\xe1\xbf\xa2"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_d0[] = {
+  "\xd1\x90", NULL, NULL, "\xd1\x9d"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_e1bc[] = {
+  "\xe1\xbc\x82", "\xe1\xbc\x83", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\x92", "\xe1\xbc\x93", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xa2", "\xe1\xbc\xa3", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xb2", "\xe1\xbc\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc80_table_e1bd[] = {
+  "\xe1\xbd\x82", "\xe1\xbd\x83", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\x92", "\xe1\xbd\x93", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xa2", "\xe1\xbd\xa3"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc80(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc80_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] >= 0xa2 &&
+          utf8[1] <= 0xbc) {
+        return grn_nfkc121_compose_prefix_cc80_table_c3[utf8[1] - 0xa2];
+      }
+      break;
+    case 0xc4 :
+      if (utf8[1] >= 0x83 &&
+          utf8[1] <= 0x93) {
+        return grn_nfkc121_compose_prefix_cc80_table_c4[utf8[1] - 0x83];
+      }
+      break;
+    case 0xc5 :
+      if (utf8[1] == 0x8d) {
+        return "\xe1\xb9\x91";
+      }
+      break;
+    case 0xc6 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xb0) {
+        return grn_nfkc121_compose_prefix_cc80_table_c6[utf8[1] - 0xa1];
+      }
+      break;
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_compose_prefix_cc80_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x85 &&
+          utf8[1] <= 0x8b) {
+        return grn_nfkc121_compose_prefix_cc80_table_cf[utf8[1] - 0x85];
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] >= 0xb5 &&
+          utf8[1] <= 0xb8) {
+        return grn_nfkc121_compose_prefix_cc80_table_d0[utf8[1] - 0xb5];
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb1) {
+          return grn_nfkc121_compose_prefix_cc80_table_e1bc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa1) {
+          return grn_nfkc121_compose_prefix_cc80_table_e1bd[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_[] = {
+  "\xc3\xa1", NULL, "\xc4\x87", NULL, "\xc3\xa9", NULL, "\xc7\xb5", NULL,
+  "\xc3\xad", NULL, "\xe1\xb8\xb1", "\xc4\xba", "\xe1\xb8\xbf", "\xc5\x84", "\xc3\xb3", "\xe1\xb9\x95",
+  NULL, "\xc5\x95", "\xc5\x9b", NULL, "\xc3\xba", NULL, "\xe1\xba\x83", NULL,
+  "\xc3\xbd", "\xc5\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_c3[] = {
+  "\xe1\xba\xa5", NULL, NULL, "\xc7\xbb", "\xc7\xbd", "\xe1\xb8\x89", NULL, NULL,
+  "\xe1\xba\xbf", NULL, NULL, NULL, NULL, "\xe1\xb8\xaf", NULL, NULL,
+  NULL, NULL, "\xe1\xbb\x91", "\xe1\xb9\x8d", NULL, NULL, "\xc7\xbf", NULL,
+  NULL, NULL, "\xc7\x98"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_c4[] = {
+  "\xe1\xba\xaf", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xb8\x97"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_c5[] = {
+  "\xe1\xb9\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xe1\xb9\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_c6[] = {
+  "\xe1\xbb\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_ce[] = {
+  "\xce\xac", NULL, NULL, NULL, "\xce\xad", NULL, "\xce\xae", NULL,
+  "\xce\xaf", NULL, NULL, NULL, NULL, NULL, "\xcf\x8c"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_cf[] = {
+  "\xcf\x8d", NULL, NULL, NULL, "\xcf\x8e", "\xce\x90", "\xce\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_d0[] = {
+  "\xd1\x93", NULL, NULL, NULL, NULL, NULL, NULL, "\xd1\x9c"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_e1bc[] = {
+  "\xe1\xbc\x84", "\xe1\xbc\x85", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\x94", "\xe1\xbc\x95", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xa4", "\xe1\xbc\xa5", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xb4", "\xe1\xbc\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc81_table_e1bd[] = {
+  "\xe1\xbd\x84", "\xe1\xbd\x85", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\x94", "\xe1\xbd\x95", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xa4", "\xe1\xbd\xa5"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc81(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_cc81_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] >= 0xa2 &&
+          utf8[1] <= 0xbc) {
+        return grn_nfkc121_compose_prefix_cc81_table_c3[utf8[1] - 0xa2];
+      }
+      break;
+    case 0xc4 :
+      if (utf8[1] >= 0x83 &&
+          utf8[1] <= 0x93) {
+        return grn_nfkc121_compose_prefix_cc81_table_c4[utf8[1] - 0x83];
+      }
+      break;
+    case 0xc5 :
+      if (utf8[1] >= 0x8d &&
+          utf8[1] <= 0xa9) {
+        return grn_nfkc121_compose_prefix_cc81_table_c5[utf8[1] - 0x8d];
+      }
+      break;
+    case 0xc6 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xb0) {
+        return grn_nfkc121_compose_prefix_cc81_table_c6[utf8[1] - 0xa1];
+      }
+      break;
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_compose_prefix_cc81_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x85 &&
+          utf8[1] <= 0x8b) {
+        return grn_nfkc121_compose_prefix_cc81_table_cf[utf8[1] - 0x85];
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] >= 0xb3 &&
+          utf8[1] <= 0xba) {
+        return grn_nfkc121_compose_prefix_cc81_table_d0[utf8[1] - 0xb3];
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb1) {
+          return grn_nfkc121_compose_prefix_cc81_table_e1bc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa1) {
+          return grn_nfkc121_compose_prefix_cc81_table_e1bd[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc82_table_[] = {
+  "\xc3\xa2", NULL, "\xc4\x89", NULL, "\xc3\xaa", NULL, "\xc4\x9d", "\xc4\xa5",
+  "\xc3\xae", "\xc4\xb5", NULL, NULL, NULL, NULL, "\xc3\xb4", NULL,
+  NULL, NULL, "\xc5\x9d", NULL, "\xc3\xbb", NULL, "\xc5\xb5", NULL,
+  "\xc5\xb7", "\xe1\xba\x91"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc82_table_e1ba[] = {
+  "\xe1\xba\xad", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbb\x87"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc82(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_cc82_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xba :
+        if (utf8[2] >= 0xa1 &&
+            utf8[2] <= 0xb9) {
+          return grn_nfkc121_compose_prefix_cc82_table_e1ba[utf8[2] - 0xa1];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] == 0x8d) {
+          return "\xe1\xbb\x99";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc83_table_[] = {
+  "\xc3\xa3", NULL, NULL, NULL, "\xe1\xba\xbd", NULL, NULL, NULL,
+  "\xc4\xa9", NULL, NULL, NULL, NULL, "\xc3\xb1", "\xc3\xb5", NULL,
+  NULL, NULL, NULL, NULL, "\xc5\xa9", "\xe1\xb9\xbd", NULL, NULL,
+  "\xe1\xbb\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc83_table_c3[] = {
+  "\xe1\xba\xab", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbb\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe1\xbb\x97"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc83_table_c6[] = {
+  "\xe1\xbb\xa1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xaf"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc83(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc83_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] >= 0xa2 &&
+          utf8[1] <= 0xb4) {
+        return grn_nfkc121_compose_prefix_cc83_table_c3[utf8[1] - 0xa2];
+      }
+      break;
+    case 0xc4 :
+      if (utf8[1] == 0x83) {
+        return "\xe1\xba\xb5";
+      }
+      break;
+    case 0xc6 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xb0) {
+        return grn_nfkc121_compose_prefix_cc83_table_c6[utf8[1] - 0xa1];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc88_table_[] = {
+  "\xc3\xa4", NULL, NULL, NULL, "\xc3\xab", NULL, NULL, "\xe1\xb8\xa7",
+  "\xc3\xaf", NULL, NULL, NULL, NULL, NULL, "\xc3\xb6", NULL,
+  NULL, NULL, NULL, "\xe1\xba\x97", "\xc3\xbc", NULL, "\xe1\xba\x85", "\xe1\xba\x8d",
+  "\xc3\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc88_table_d0[] = {
+  "\xd3\x93", NULL, NULL, NULL, NULL, "\xd1\x91", "\xd3\x9d", "\xd3\x9f",
+  "\xd3\xa5", NULL, NULL, NULL, NULL, NULL, "\xd3\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc88_table_d1[] = {
+  "\xd3\xb1", NULL, NULL, NULL, "\xd3\xb5", NULL, NULL, NULL,
+  "\xd3\xb9", NULL, "\xd3\xad", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, "\xd1\x97"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc88_table_d3[] = {
+  "\xd3\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xd3\xab"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc88(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc88_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] == 0xb5) {
+        return "\xe1\xb9\x8f";
+      }
+      break;
+    case 0xc5 :
+      if (utf8[1] == 0xab) {
+        return "\xe1\xb9\xbb";
+      }
+      break;
+    case 0xce :
+      if (utf8[1] == 0xb9) {
+        return "\xcf\x8a";
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] == 0x85) {
+        return "\xcf\x8b";
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] >= 0xb0 &&
+          utf8[1] <= 0xbe) {
+        return grn_nfkc121_compose_prefix_cc88_table_d0[utf8[1] - 0xb0];
+      }
+      break;
+    case 0xd1 :
+      if (utf8[1] >= 0x83 &&
+          utf8[1] <= 0x96) {
+        return grn_nfkc121_compose_prefix_cc88_table_d1[utf8[1] - 0x83];
+      }
+      break;
+    case 0xd3 :
+      if (utf8[1] >= 0x99 &&
+          utf8[1] <= 0xa9) {
+        return grn_nfkc121_compose_prefix_cc88_table_d3[utf8[1] - 0x99];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc8a_table_[] = {
+  "\xc3\xa5", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xc5\xaf", NULL, "\xe1\xba\x98", NULL,
+  "\xe1\xba\x99"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc8a(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc8a_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cca7_table_[] = {
+  "\xc3\xa7", "\xe1\xb8\x91", "\xc8\xa9", NULL, "\xc4\xa3", "\xe1\xb8\xa9", NULL, NULL,
+  "\xc4\xb7", "\xc4\xbc", NULL, "\xc5\x86", NULL, NULL, NULL, "\xc5\x97",
+  "\xc5\x9f", "\xc5\xa3"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca7(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x63 &&
+        utf8[0] <= 0x74) {
+      return grn_nfkc121_compose_prefix_cca7_table_[utf8[0] - 0x63];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc84_table_[] = {
+  "\xc4\x81", NULL, NULL, NULL, "\xc4\x93", NULL, "\xe1\xb8\xa1", NULL,
+  "\xc4\xab", NULL, NULL, NULL, NULL, NULL, "\xc5\x8d", NULL,
+  NULL, NULL, NULL, NULL, "\xc5\xab", NULL, NULL, NULL,
+  "\xc8\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc84_table_c3[] = {
+  "\xc7\x9f", NULL, "\xc7\xa3", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xc8\xad", "\xc8\xab", NULL, NULL, NULL, NULL, NULL,
+  "\xc7\x96"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc84_table_c8[] = {
+  "\xc7\xa1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xc8\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc84_table_ce[] = {
+  "\xe1\xbe\xb1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbf\x91"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc84(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc84_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] >= 0xa4 &&
+          utf8[1] <= 0xbc) {
+        return grn_nfkc121_compose_prefix_cc84_table_c3[utf8[1] - 0xa4];
+      }
+      break;
+    case 0xc7 :
+      if (utf8[1] == 0xab) {
+        return "\xc7\xad";
+      }
+      break;
+    case 0xc8 :
+      if (utf8[1] >= 0xa7 &&
+          utf8[1] <= 0xaf) {
+        return grn_nfkc121_compose_prefix_cc84_table_c8[utf8[1] - 0xa7];
+      }
+      break;
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xb9) {
+        return grn_nfkc121_compose_prefix_cc84_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] == 0x85) {
+        return "\xe1\xbf\xa1";
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] == 0xb8) {
+        return "\xd3\xa3";
+      }
+      break;
+    case 0xd1 :
+      if (utf8[1] == 0x83) {
+        return "\xd3\xaf";
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xb8 :
+        if (utf8[2] == 0xb7) {
+          return "\xe1\xb8\xb9";
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] == 0x9b) {
+          return "\xe1\xb9\x9d";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc86_table_[] = {
+  "\xc4\x83", NULL, NULL, NULL, "\xc4\x95", NULL, "\xc4\x9f", NULL,
+  "\xc4\xad", NULL, NULL, NULL, NULL, NULL, "\xc5\x8f", NULL,
+  NULL, NULL, NULL, NULL, "\xc5\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc86_table_ce[] = {
+  "\xe1\xbe\xb0", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbf\x90"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc86_table_d0[] = {
+  "\xd3\x91", NULL, NULL, NULL, NULL, "\xd3\x97", "\xd3\x82", NULL,
+  "\xd0\xb9"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc86(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cc86_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc8 :
+      if (utf8[1] == 0xa9) {
+        return "\xe1\xb8\x9d";
+      }
+      break;
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xb9) {
+        return grn_nfkc121_compose_prefix_cc86_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] == 0x85) {
+        return "\xe1\xbf\xa0";
+      }
+      break;
+    case 0xd0 :
+      if (utf8[1] >= 0xb0 &&
+          utf8[1] <= 0xb8) {
+        return grn_nfkc121_compose_prefix_cc86_table_d0[utf8[1] - 0xb0];
+      }
+      break;
+    case 0xd1 :
+      if (utf8[1] == 0x83) {
+        return "\xd1\x9e";
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xba :
+        if (utf8[2] == 0xa1) {
+          return "\xe1\xba\xb7";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cca8_table_[] = {
+  "\xc4\x85", NULL, NULL, NULL, "\xc4\x99", NULL, NULL, NULL,
+  "\xc4\xaf", NULL, NULL, NULL, NULL, NULL, "\xc7\xab", NULL,
+  NULL, NULL, NULL, NULL, "\xc5\xb3"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca8(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cca8_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc87_table_[] = {
+  "\xc8\xa7", "\xe1\xb8\x83", "\xc4\x8b", "\xe1\xb8\x8b", "\xc4\x97", "\xe1\xb8\x9f", "\xc4\xa1", "\xe1\xb8\xa3",
+  NULL, NULL, NULL, NULL, "\xe1\xb9\x81", "\xe1\xb9\x85", "\xc8\xaf", "\xe1\xb9\x97",
+  NULL, "\xe1\xb9\x99", "\xe1\xb9\xa1", "\xe1\xb9\xab", NULL, NULL, "\xe1\xba\x87", "\xe1\xba\x8b",
+  "\xe1\xba\x8f", "\xc5\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc87_table_c5[] = {
+  "\xe1\xb9\xa5", NULL, NULL, NULL, NULL, NULL, "\xe1\xb9\xa7"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc87(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_cc87_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc5 :
+      if (utf8[1] >= 0x9b &&
+          utf8[1] <= 0xa1) {
+        return grn_nfkc121_compose_prefix_cc87_table_c5[utf8[1] - 0x9b];
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xb9 :
+        if (utf8[2] == 0xa3) {
+          return "\xe1\xb9\xa9";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc8c_table_[] = {
+  "\xc7\x8e", NULL, "\xc4\x8d", "\xc4\x8f", "\xc4\x9b", NULL, "\xc7\xa7", "\xc8\x9f",
+  "\xc7\x90", "\xc7\xb0", "\xc7\xa9", "\xc4\xbe", NULL, "\xc5\x88", "\xc7\x92", NULL,
+  NULL, "\xc5\x99", "\xc5\xa1", "\xc5\xa5", "\xc7\x94", NULL, NULL, NULL,
+  NULL, "\xc5\xbe"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc8c(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_cc8c_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] == 0xbc) {
+        return "\xc7\x9a";
+      }
+      break;
+    case 0xca :
+      if (utf8[1] == 0x92) {
+        return "\xc7\xaf";
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc8b_table_[] = {
+  "\xc5\x91", NULL, NULL, NULL, NULL, NULL, "\xc5\xb1"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc8b(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x6f &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cc8b_table_[utf8[0] - 0x6f];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xd1 :
+      if (utf8[1] == 0x83) {
+        return "\xd3\xb3";
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc9b_table_[] = {
+  "\xc6\xa1", NULL, NULL, NULL, NULL, NULL, "\xc6\xb0"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc9b(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x6f &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cc9b_table_[utf8[0] - 0x6f];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc8f_table_[] = {
+  "\xc8\x81", NULL, NULL, NULL, "\xc8\x85", NULL, NULL, NULL,
+  "\xc8\x89", NULL, NULL, NULL, NULL, NULL, "\xc8\x8d", NULL,
+  NULL, "\xc8\x91", NULL, NULL, "\xc8\x95"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc8f(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cc8f_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xd1 :
+      if (utf8[1] == 0xb5) {
+        return "\xd1\xb7";
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc91_table_[] = {
+  "\xc8\x83", NULL, NULL, NULL, "\xc8\x87", NULL, NULL, NULL,
+  "\xc8\x8b", NULL, NULL, NULL, NULL, NULL, "\xc8\x8f", NULL,
+  NULL, "\xc8\x93", NULL, NULL, "\xc8\x97"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc91(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_cc91_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cca6_table_[] = {
+  "\xc8\x99", "\xc8\x9b"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca6(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x73 &&
+        utf8[0] <= 0x74) {
+      return grn_nfkc121_compose_prefix_cca6_table_[utf8[0] - 0x73];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_d993(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xd8 :
+      if (utf8[1] == 0xa7) {
+        return "\xd8\xa2";
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_d994_table_d9[] = {
+  "\xd8\xa4", NULL, "\xd8\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_d994_table_db[] = {
+  "\xdb\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xdb\x93", NULL, NULL, "\xdb\x80"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_d994(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xd8 :
+      if (utf8[1] == 0xa7) {
+        return "\xd8\xa3";
+      }
+      break;
+    case 0xd9 :
+      if (utf8[1] >= 0x88 &&
+          utf8[1] <= 0x8a) {
+        return grn_nfkc121_compose_prefix_d994_table_d9[utf8[1] - 0x88];
+      }
+      break;
+    case 0xdb :
+      if (utf8[1] >= 0x81 &&
+          utf8[1] <= 0x95) {
+        return grn_nfkc121_compose_prefix_d994_table_db[utf8[1] - 0x81];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_d995(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xd8 :
+      if (utf8[1] == 0xa7) {
+        return "\xd8\xa5";
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e0a4bc_table_e0a4[] = {
+  "\xe0\xa4\xa9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe0\xa4\xb1", NULL, NULL, "\xe0\xa4\xb4"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0a4bc(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xa4 :
+        if (utf8[2] >= 0xa8 &&
+            utf8[2] <= 0xb3) {
+          return grn_nfkc121_compose_prefix_e0a4bc_table_e0a4[utf8[2] - 0xa8];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0a6be(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xa7 :
+        if (utf8[2] == 0x87) {
+          return "\xe0\xa7\x8b";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0a797(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xa7 :
+        if (utf8[2] == 0x87) {
+          return "\xe0\xa7\x8c";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0ad96(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xad :
+        if (utf8[2] == 0x87) {
+          return "\xe0\xad\x88";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0acbe(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xad :
+        if (utf8[2] == 0x87) {
+          return "\xe0\xad\x8b";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0ad97(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xad :
+        if (utf8[2] == 0x87) {
+          return "\xe0\xad\x8c";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0af97(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xae :
+        if (utf8[2] == 0x92) {
+          return "\xe0\xae\x94";
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] == 0x86) {
+          return "\xe0\xaf\x8c";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e0aebe_table_e0af[] = {
+  "\xe0\xaf\x8a", "\xe0\xaf\x8b"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0aebe(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xaf :
+        if (utf8[2] >= 0x86 &&
+            utf8[2] <= 0x87) {
+          return grn_nfkc121_compose_prefix_e0aebe_table_e0af[utf8[2] - 0x86];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b196(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb1 :
+        if (utf8[2] == 0x86) {
+          return "\xe0\xb1\x88";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e0b395_table_e0b3[] = {
+  "\xe0\xb3\x87", NULL, NULL, NULL, "\xe0\xb3\x8b"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b395(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb2 :
+        if (utf8[2] == 0xbf) {
+          return "\xe0\xb3\x80";
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x86 &&
+            utf8[2] <= 0x8a) {
+          return grn_nfkc121_compose_prefix_e0b395_table_e0b3[utf8[2] - 0x86];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b396(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb3 :
+        if (utf8[2] == 0x86) {
+          return "\xe0\xb3\x88";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b382(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb3 :
+        if (utf8[2] == 0x86) {
+          return "\xe0\xb3\x8a";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e0b4be_table_e0b5[] = {
+  "\xe0\xb5\x8a", "\xe0\xb5\x8b"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b4be(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb5 :
+        if (utf8[2] >= 0x86 &&
+            utf8[2] <= 0x87) {
+          return grn_nfkc121_compose_prefix_e0b4be_table_e0b5[utf8[2] - 0x86];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b597(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb5 :
+        if (utf8[2] == 0x86) {
+          return "\xe0\xb5\x8c";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e0b78a_table_e0b7[] = {
+  "\xe0\xb7\x9a", NULL, NULL, "\xe0\xb7\x9d"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b78a(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb7 :
+        if (utf8[2] >= 0x99 &&
+            utf8[2] <= 0x9c) {
+          return grn_nfkc121_compose_prefix_e0b78a_table_e0b7[utf8[2] - 0x99];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b78f(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb7 :
+        if (utf8[2] == 0x99) {
+          return "\xe0\xb7\x9c";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e0b79f(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe0 :
+      switch (utf8[1]) {
+      case 0xb7 :
+        if (utf8[2] == 0x99) {
+          return "\xe0\xb7\x9e";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e180ae(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] == 0xa5) {
+          return "\xe1\x80\xa6";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e1acb5_table_e1ac[] = {
+  "\xe1\xac\x86", NULL, "\xe1\xac\x88", NULL, "\xe1\xac\x8a", NULL, "\xe1\xac\x8c", NULL,
+  "\xe1\xac\x8e", NULL, NULL, NULL, "\xe1\xac\x92", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, "\xe1\xac\xbb", NULL, "\xe1\xac\xbd",
+  NULL, "\xe1\xad\x80", "\xe1\xad\x81"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e1acb5(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xac :
+        if (utf8[2] >= 0x85 &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_compose_prefix_e1acb5_table_e1ac[utf8[2] - 0x85];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] == 0x82) {
+          return "\xe1\xad\x83";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca5(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] == 0x61) {
+      return "\xe1\xb8\x81";
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cca3_table_[] = {
+  "\xe1\xba\xa1", "\xe1\xb8\x85", NULL, "\xe1\xb8\x8d", "\xe1\xba\xb9", NULL, NULL, "\xe1\xb8\xa5",
+  "\xe1\xbb\x8b", NULL, "\xe1\xb8\xb3", "\xe1\xb8\xb7", "\xe1\xb9\x83", "\xe1\xb9\x87", "\xe1\xbb\x8d", NULL,
+  NULL, "\xe1\xb9\x9b", "\xe1\xb9\xa3", "\xe1\xb9\xad", "\xe1\xbb\xa5", "\xe1\xb9\xbf", "\xe1\xba\x89", NULL,
+  "\xe1\xbb\xb5", "\xe1\xba\x93"
+};
+
+static const char *grn_nfkc121_compose_prefix_cca3_table_c6[] = {
+  "\xe1\xbb\xa3", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xb1"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca3(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_cca3_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc6 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xb0) {
+        return grn_nfkc121_compose_prefix_cca3_table_c6[utf8[1] - 0xa1];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_ccb1_table_[] = {
+  "\xe1\xb8\x87", NULL, "\xe1\xb8\x8f", NULL, NULL, NULL, "\xe1\xba\x96", NULL,
+  NULL, "\xe1\xb8\xb5", "\xe1\xb8\xbb", NULL, "\xe1\xb9\x89", NULL, NULL, NULL,
+  "\xe1\xb9\x9f", NULL, "\xe1\xb9\xaf", NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xba\x95"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_ccb1(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x62 &&
+        utf8[0] <= 0x7a) {
+      return grn_nfkc121_compose_prefix_ccb1_table_[utf8[0] - 0x62];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_ccad_table_[] = {
+  "\xe1\xb8\x93", "\xe1\xb8\x99", NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xb8\xbd", NULL, "\xe1\xb9\x8b", NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xb9\xb1", "\xe1\xb9\xb7"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_ccad(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x64 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_ccad_table_[utf8[0] - 0x64];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_ccb0_table_[] = {
+  "\xe1\xb8\x9b", NULL, NULL, NULL, "\xe1\xb8\xad", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xb9\xb5"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_ccb0(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x65 &&
+        utf8[0] <= 0x75) {
+      return grn_nfkc121_compose_prefix_ccb0_table_[utf8[0] - 0x65];
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_ccae(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] == 0x68) {
+      return "\xe1\xb8\xab";
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cca4(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] == 0x75) {
+      return "\xe1\xb9\xb3";
+    } else {
+      return NULL;
+    }
+  } else {
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc89_table_[] = {
+  "\xe1\xba\xa3", NULL, NULL, NULL, "\xe1\xba\xbb", NULL, NULL, NULL,
+  "\xe1\xbb\x89", NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\x8f", NULL,
+  NULL, NULL, NULL, NULL, "\xe1\xbb\xa7", NULL, NULL, NULL,
+  "\xe1\xbb\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc89_table_c3[] = {
+  "\xe1\xba\xa9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbb\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, "\xe1\xbb\x95"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc89_table_c6[] = {
+  "\xe1\xbb\x9f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xad"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc89(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x61 &&
+        utf8[0] <= 0x79) {
+      return grn_nfkc121_compose_prefix_cc89_table_[utf8[0] - 0x61];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xc3 :
+      if (utf8[1] >= 0xa2 &&
+          utf8[1] <= 0xb4) {
+        return grn_nfkc121_compose_prefix_cc89_table_c3[utf8[1] - 0xa2];
+      }
+      break;
+    case 0xc4 :
+      if (utf8[1] == 0x83) {
+        return "\xe1\xba\xb3";
+      }
+      break;
+    case 0xc6 :
+      if (utf8[1] >= 0xa1 &&
+          utf8[1] <= 0xb0) {
+        return grn_nfkc121_compose_prefix_cc89_table_c6[utf8[1] - 0xa1];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc93_table_ce[] = {
+  "\xe1\xbc\x80", NULL, NULL, NULL, "\xe1\xbc\x90", NULL, "\xe1\xbc\xa0", NULL,
+  "\xe1\xbc\xb0", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc93_table_cf[] = {
+  "\xe1\xbf\xa4", NULL, NULL, NULL, "\xe1\xbd\x90", NULL, NULL, NULL,
+  "\xe1\xbd\xa0"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc93(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_compose_prefix_cc93_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x81 &&
+          utf8[1] <= 0x89) {
+        return grn_nfkc121_compose_prefix_cc93_table_cf[utf8[1] - 0x81];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cc94_table_ce[] = {
+  "\xe1\xbc\x81", NULL, NULL, NULL, "\xe1\xbc\x91", NULL, "\xe1\xbc\xa1", NULL,
+  "\xe1\xbc\xb1", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x81"
+};
+
+static const char *grn_nfkc121_compose_prefix_cc94_table_cf[] = {
+  "\xe1\xbf\xa5", NULL, NULL, NULL, "\xe1\xbd\x91", NULL, NULL, NULL,
+  "\xe1\xbd\xa1"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cc94(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xbf) {
+        return grn_nfkc121_compose_prefix_cc94_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x81 &&
+          utf8[1] <= 0x89) {
+        return grn_nfkc121_compose_prefix_cc94_table_cf[utf8[1] - 0x81];
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cd82_table_ce[] = {
+  "\xe1\xbe\xb6", NULL, NULL, NULL, NULL, NULL, "\xe1\xbf\x86", NULL,
+  "\xe1\xbf\x96"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd82_table_cf[] = {
+  "\xe1\xbf\xa6", NULL, NULL, NULL, "\xe1\xbf\xb6", "\xe1\xbf\x97", "\xe1\xbf\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd82_table_e1bc[] = {
+  "\xe1\xbc\x86", "\xe1\xbc\x87", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xa6", "\xe1\xbc\xa7", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbc\xb6", "\xe1\xbc\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd82_table_e1bd[] = {
+  "\xe1\xbd\x96", "\xe1\xbd\x97", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbd\xa6", "\xe1\xbd\xa7"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cd82(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xce :
+      if (utf8[1] >= 0xb1 &&
+          utf8[1] <= 0xb9) {
+        return grn_nfkc121_compose_prefix_cd82_table_ce[utf8[1] - 0xb1];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x85 &&
+          utf8[1] <= 0x8b) {
+        return grn_nfkc121_compose_prefix_cd82_table_cf[utf8[1] - 0x85];
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb1) {
+          return grn_nfkc121_compose_prefix_cd82_table_e1bc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xa1) {
+          return grn_nfkc121_compose_prefix_cd82_table_e1bd[utf8[2] - 0x90];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_cd85_table_ce[] = {
+  "\xe1\xbe\xb4", NULL, "\xe1\xbf\x84", NULL, NULL, "\xe1\xbe\xb3", NULL, NULL,
+  NULL, NULL, NULL, "\xe1\xbf\x83"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd85_table_cf[] = {
+  "\xe1\xbf\xb3", NULL, NULL, NULL, NULL, "\xe1\xbf\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd85_table_e1bc[] = {
+  "\xe1\xbe\x80", "\xe1\xbe\x81", "\xe1\xbe\x82", "\xe1\xbe\x83", "\xe1\xbe\x84", "\xe1\xbe\x85", "\xe1\xbe\x86", "\xe1\xbe\x87",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbe\x90", "\xe1\xbe\x91", "\xe1\xbe\x92", "\xe1\xbe\x93", "\xe1\xbe\x94", "\xe1\xbe\x95", "\xe1\xbe\x96", "\xe1\xbe\x97"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd85_table_e1bd[] = {
+  "\xe1\xbe\xa0", "\xe1\xbe\xa1", "\xe1\xbe\xa2", "\xe1\xbe\xa3", "\xe1\xbe\xa4", "\xe1\xbe\xa5", "\xe1\xbe\xa6", "\xe1\xbe\xa7",
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbe\xb2", NULL, NULL, NULL, "\xe1\xbf\x82", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xe1\xbf\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_cd85_table_e1bf[] = {
+  "\xe1\xbf\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe1\xbf\xb7"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_cd85(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xce :
+      if (utf8[1] >= 0xac &&
+          utf8[1] <= 0xb7) {
+        return grn_nfkc121_compose_prefix_cd85_table_ce[utf8[1] - 0xac];
+      }
+      break;
+    case 0xcf :
+      if (utf8[1] >= 0x89 &&
+          utf8[1] <= 0x8e) {
+        return grn_nfkc121_compose_prefix_cd85_table_cf[utf8[1] - 0x89];
+      }
+      break;
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xa7) {
+          return grn_nfkc121_compose_prefix_cd85_table_e1bc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0xa0 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_cd85_table_e1bd[utf8[2] - 0xa0];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] == 0xb6) {
+          return "\xe1\xbe\xb7";
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x86 &&
+            utf8[2] <= 0xb6) {
+          return grn_nfkc121_compose_prefix_cd85_table_e1bf[utf8[2] - 0x86];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_[] = {
+  "\xe2\x89\xae", "\xe2\x89\xa0", "\xe2\x89\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_e286[] = {
+  "\xe2\x86\x9a", NULL, "\xe2\x86\x9b", NULL, "\xe2\x86\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_e287[] = {
+  "\xe2\x87\x8d", NULL, "\xe2\x87\x8f", NULL, "\xe2\x87\x8e"
+};
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_e288[] = {
+  "\xe2\x88\x84", NULL, NULL, NULL, NULL, "\xe2\x88\x89", NULL, NULL,
+  "\xe2\x88\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe2\x88\xa4", NULL, "\xe2\x88\xa6", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xe2\x89\x81"
+};
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_e289[] = {
+  "\xe2\x89\x84", NULL, "\xe2\x89\x87", NULL, NULL, "\xe2\x89\x89", NULL, NULL,
+  NULL, NULL, "\xe2\x89\xad", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x89\xa2", NULL,
+  NULL, "\xe2\x89\xb0", "\xe2\x89\xb1", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x89\xb4",
+  "\xe2\x89\xb5", NULL, NULL, "\xe2\x89\xb8", "\xe2\x89\xb9", NULL, NULL, "\xe2\x8a\x80",
+  "\xe2\x8a\x81", "\xe2\x8b\xa0", "\xe2\x8b\xa1"
+};
+
+static const char *grn_nfkc121_compose_prefix_ccb8_table_e28a[] = {
+  "\xe2\x8a\x84", "\xe2\x8a\x85", NULL, NULL, "\xe2\x8a\x88", "\xe2\x8a\x89", NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x8b\xa2",
+  "\xe2\x8b\xa3", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe2\x8a\xac", NULL, NULL, NULL, NULL, NULL, "\xe2\x8a\xad", "\xe2\x8a\xae",
+  NULL, "\xe2\x8a\xaf", NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xe2\x8b\xaa", "\xe2\x8b\xab", "\xe2\x8b\xac", "\xe2\x8b\xad"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_ccb8(const unsigned char *utf8)
+{
+  if (utf8[0] < 0x80) {
+    if (utf8[0] >= 0x3c &&
+        utf8[0] <= 0x3e) {
+      return grn_nfkc121_compose_prefix_ccb8_table_[utf8[0] - 0x3c];
+    } else {
+      return NULL;
+    }
+  } else {
+    switch (utf8[0]) {
+    case 0xe2 :
+      switch (utf8[1]) {
+      case 0x86 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0x94) {
+          return grn_nfkc121_compose_prefix_ccb8_table_e286[utf8[2] - 0x90];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0x94) {
+          return grn_nfkc121_compose_prefix_ccb8_table_e287[utf8[2] - 0x90];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_ccb8_table_e288[utf8[2] - 0x83];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x83 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_compose_prefix_ccb8_table_e289[utf8[2] - 0x83];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x82 &&
+            utf8[2] <= 0xb5) {
+          return grn_nfkc121_compose_prefix_ccb8_table_e28a[utf8[2] - 0x82];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e38299_table_e381[] = {
+  "\xe3\x82\x94", NULL, NULL, NULL, NULL, "\xe3\x81\x8c", NULL, "\xe3\x81\x8e",
+  NULL, "\xe3\x81\x90", NULL, "\xe3\x81\x92", NULL, "\xe3\x81\x94", NULL, "\xe3\x81\x96",
+  NULL, "\xe3\x81\x98", NULL, "\xe3\x81\x9a", NULL, "\xe3\x81\x9c", NULL, "\xe3\x81\x9e",
+  NULL, "\xe3\x81\xa0", NULL, "\xe3\x81\xa2", NULL, NULL, "\xe3\x81\xa5", NULL,
+  "\xe3\x81\xa7", NULL, "\xe3\x81\xa9", NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xe3\x81\xb0", NULL, NULL, "\xe3\x81\xb3", NULL, NULL, "\xe3\x81\xb6",
+  NULL, NULL, "\xe3\x81\xb9", NULL, NULL, "\xe3\x81\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e38299_table_e382[] = {
+  "\xe3\x82\x9e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, "\xe3\x83\xb4", NULL, NULL, NULL, NULL, "\xe3\x82\xac", NULL,
+  "\xe3\x82\xae", NULL, "\xe3\x82\xb0", NULL, "\xe3\x82\xb2", NULL, "\xe3\x82\xb4", NULL,
+  "\xe3\x82\xb6", NULL, "\xe3\x82\xb8", NULL, "\xe3\x82\xba", NULL, "\xe3\x82\xbc", NULL,
+  "\xe3\x82\xbe", NULL, "\xe3\x83\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e38299_table_e383[] = {
+  "\xe3\x83\x82", NULL, NULL, "\xe3\x83\x85", NULL, "\xe3\x83\x87", NULL, "\xe3\x83\x89",
+  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x83\x90", NULL,
+  NULL, "\xe3\x83\x93", NULL, NULL, "\xe3\x83\x96", NULL, NULL, "\xe3\x83\x99",
+  NULL, NULL, "\xe3\x83\x9c", NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x83\xb7", "\xe3\x83\xb8",
+  "\xe3\x83\xb9", "\xe3\x83\xba", NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xe3\x83\xbe"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e38299(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe3 :
+      switch (utf8[1]) {
+      case 0x81 :
+        if (utf8[2] >= 0x86 &&
+            utf8[2] <= 0xbb) {
+          return grn_nfkc121_compose_prefix_e38299_table_e381[utf8[2] - 0x86];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x9d &&
+            utf8[2] <= 0xbf) {
+          return grn_nfkc121_compose_prefix_e38299_table_e382[utf8[2] - 0x9d];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x81 &&
+            utf8[2] <= 0xbd) {
+          return grn_nfkc121_compose_prefix_e38299_table_e383[utf8[2] - 0x81];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e3829a_table_e381[] = {
+  "\xe3\x81\xb1", NULL, NULL, "\xe3\x81\xb4", NULL, NULL, "\xe3\x81\xb7", NULL,
+  NULL, "\xe3\x81\xba", NULL, NULL, "\xe3\x81\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e3829a_table_e383[] = {
+  "\xe3\x83\x91", NULL, NULL, "\xe3\x83\x94", NULL, NULL, "\xe3\x83\x97", NULL,
+  NULL, "\xe3\x83\x9a", NULL, NULL, "\xe3\x83\x9d"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e3829a(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe3 :
+      switch (utf8[1]) {
+      case 0x81 :
+        if (utf8[2] >= 0xaf &&
+            utf8[2] <= 0xbb) {
+          return grn_nfkc121_compose_prefix_e3829a_table_e381[utf8[2] - 0xaf];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x8f &&
+            utf8[2] <= 0x9b) {
+          return grn_nfkc121_compose_prefix_e3829a_table_e383[utf8[2] - 0x8f];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e185a1_table_e184[] = {
+  "\xea\xb0\x80", "\xea\xb9\x8c", "\xeb\x82\x98", "\xeb\x8b\xa4", "\xeb\x94\xb0", "\xeb\x9d\xbc", "\xeb\xa7\x88", "\xeb\xb0\x94",
+  "\xeb\xb9\xa0", "\xec\x82\xac", "\xec\x8b\xb8", "\xec\x95\x84", "\xec\x9e\x90", "\xec\xa7\x9c", "\xec\xb0\xa8", "\xec\xb9\xb4",
+  "\xed\x83\x80", "\xed\x8c\x8c", "\xed\x95\x98"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e185a1(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xe1 :
+      switch (utf8[1]) {
+      case 0x84 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0x92) {
+          return grn_nfkc121_compose_prefix_e185a1_table_e184[utf8[2] - 0x80];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab0[] = {
+  "\xea\xb0\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb0\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb0\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab1[] = {
+  "\xea\xb1\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb1\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab2[] = {
+  "\xea\xb2\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb2\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab3[] = {
+  "\xea\xb3\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb3\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb3\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab4[] = {
+  "\xea\xb4\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb4\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab5[] = {
+  "\xea\xb5\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb5\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab6[] = {
+  "\xea\xb6\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb6\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab7[] = {
+  "\xea\xb7\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb7\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb7\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab8[] = {
+  "\xea\xb8\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb8\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eab9[] = {
+  "\xea\xb9\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb9\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eaba[] = {
+  "\xea\xba\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xba\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xba\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eabb[] = {
+  "\xea\xbb\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbb\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eabc[] = {
+  "\xea\xbc\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbc\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eabd[] = {
+  "\xea\xbd\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbd\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eabe[] = {
+  "\xea\xbe\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbe\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xbe\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eabf[] = {
+  "\xea\xbf\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbf\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb80[] = {
+  "\xeb\x80\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x80\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb81[] = {
+  "\xeb\x81\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x81\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x81\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb82[] = {
+  "\xeb\x82\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x82\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb83[] = {
+  "\xeb\x83\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x83\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb84[] = {
+  "\xeb\x84\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x84\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb85[] = {
+  "\xeb\x85\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x85\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x85\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb86[] = {
+  "\xeb\x86\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x86\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb87[] = {
+  "\xeb\x87\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x87\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb88[] = {
+  "\xeb\x88\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x88\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x88\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb89[] = {
+  "\xeb\x89\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x89\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8a[] = {
+  "\xeb\x8a\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8a\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8b[] = {
+  "\xeb\x8b\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8b\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8c[] = {
+  "\xeb\x8c\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8c\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8c\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8d[] = {
+  "\xeb\x8d\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8d\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8e[] = {
+  "\xeb\x8e\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8e\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb8f[] = {
+  "\xeb\x8f\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8f\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8f\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb90[] = {
+  "\xeb\x90\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x90\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb91[] = {
+  "\xeb\x91\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x91\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb92[] = {
+  "\xeb\x92\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x92\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb93[] = {
+  "\xeb\x93\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x93\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x93\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb94[] = {
+  "\xeb\x94\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x94\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb95[] = {
+  "\xeb\x95\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x95\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb96[] = {
+  "\xeb\x96\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x96\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x96\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb97[] = {
+  "\xeb\x97\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x97\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb98[] = {
+  "\xeb\x98\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x98\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb99[] = {
+  "\xeb\x99\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x99\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9a[] = {
+  "\xeb\x9a\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9a\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9a\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9b[] = {
+  "\xeb\x9b\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9b\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9c[] = {
+  "\xeb\x9c\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9c\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9d[] = {
+  "\xeb\x9d\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9d\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9d\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9e[] = {
+  "\xeb\x9e\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9e\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eb9f[] = {
+  "\xeb\x9f\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9f\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba0[] = {
+  "\xeb\xa0\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa0\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba1[] = {
+  "\xeb\xa1\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa1\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa1\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba2[] = {
+  "\xeb\xa2\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa2\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba3[] = {
+  "\xeb\xa3\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa3\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba4[] = {
+  "\xeb\xa4\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa4\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa4\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba5[] = {
+  "\xeb\xa5\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa5\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba6[] = {
+  "\xeb\xa6\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa6\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba7[] = {
+  "\xeb\xa7\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa7\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba8[] = {
+  "\xeb\xa8\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa8\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa8\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eba9[] = {
+  "\xeb\xa9\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa9\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebaa[] = {
+  "\xeb\xaa\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaa\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebab[] = {
+  "\xeb\xab\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xab\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xab\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebac[] = {
+  "\xeb\xac\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xac\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebad[] = {
+  "\xeb\xad\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xad\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebae[] = {
+  "\xeb\xae\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xae\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebaf[] = {
+  "\xeb\xaf\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaf\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xaf\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb0[] = {
+  "\xeb\xb0\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb0\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb1[] = {
+  "\xeb\xb1\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb1\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb2[] = {
+  "\xeb\xb2\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb2\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb2\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb3[] = {
+  "\xeb\xb3\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb3\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb4[] = {
+  "\xeb\xb4\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb4\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb5[] = {
+  "\xeb\xb5\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb5\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb6[] = {
+  "\xeb\xb6\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb6\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb6\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb7[] = {
+  "\xeb\xb7\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb7\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb8[] = {
+  "\xeb\xb8\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb8\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebb9[] = {
+  "\xeb\xb9\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb9\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb9\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebba[] = {
+  "\xeb\xba\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xba\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebbb[] = {
+  "\xeb\xbb\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbb\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebbc[] = {
+  "\xeb\xbc\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbc\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebbd[] = {
+  "\xeb\xbd\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbd\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xbd\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebbe[] = {
+  "\xeb\xbe\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbe\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ebbf[] = {
+  "\xeb\xbf\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbf\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec80[] = {
+  "\xec\x80\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x80\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x80\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec81[] = {
+  "\xec\x81\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x81\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec82[] = {
+  "\xec\x82\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x82\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec83[] = {
+  "\xec\x83\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x83\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec84[] = {
+  "\xec\x84\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x84\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x84\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec85[] = {
+  "\xec\x85\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x85\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec86[] = {
+  "\xec\x86\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x86\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec87[] = {
+  "\xec\x87\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x87\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x87\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec88[] = {
+  "\xec\x88\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x88\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec89[] = {
+  "\xec\x89\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x89\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8a[] = {
+  "\xec\x8a\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8a\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8b[] = {
+  "\xec\x8b\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8b\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8b\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8c[] = {
+  "\xec\x8c\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8c\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8d[] = {
+  "\xec\x8d\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8d\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8e[] = {
+  "\xec\x8e\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8e\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8e\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec8f[] = {
+  "\xec\x8f\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8f\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec90[] = {
+  "\xec\x90\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x90\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec91[] = {
+  "\xec\x91\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x91\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec92[] = {
+  "\xec\x92\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x92\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x92\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec93[] = {
+  "\xec\x93\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x93\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec94[] = {
+  "\xec\x94\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x94\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec95[] = {
+  "\xec\x95\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x95\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x95\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec96[] = {
+  "\xec\x96\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x96\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec97[] = {
+  "\xec\x97\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x97\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec98[] = {
+  "\xec\x98\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x98\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec99[] = {
+  "\xec\x99\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x99\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x99\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9a[] = {
+  "\xec\x9a\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9a\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9b[] = {
+  "\xec\x9b\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9b\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9c[] = {
+  "\xec\x9c\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9c\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x9c\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9d[] = {
+  "\xec\x9d\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9d\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9e[] = {
+  "\xec\x9e\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9e\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ec9f[] = {
+  "\xec\x9f\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9f\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca0[] = {
+  "\xec\xa0\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa0\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa0\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca1[] = {
+  "\xec\xa1\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa1\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca2[] = {
+  "\xec\xa2\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa2\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca3[] = {
+  "\xec\xa3\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa3\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa3\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca4[] = {
+  "\xec\xa4\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa4\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca5[] = {
+  "\xec\xa5\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa5\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca6[] = {
+  "\xec\xa6\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa6\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca7[] = {
+  "\xec\xa7\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa7\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa7\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca8[] = {
+  "\xec\xa8\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa8\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_eca9[] = {
+  "\xec\xa9\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa9\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecaa[] = {
+  "\xec\xaa\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaa\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xaa\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecab[] = {
+  "\xec\xab\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xab\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecac[] = {
+  "\xec\xac\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xac\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecad[] = {
+  "\xec\xad\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xad\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecae[] = {
+  "\xec\xae\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xae\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xae\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecaf[] = {
+  "\xec\xaf\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaf\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb0[] = {
+  "\xec\xb0\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb0\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb1[] = {
+  "\xec\xb1\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb1\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb1\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb2[] = {
+  "\xec\xb2\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb2\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb3[] = {
+  "\xec\xb3\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb3\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb4[] = {
+  "\xec\xb4\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb4\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb5[] = {
+  "\xec\xb5\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb5\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb5\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb6[] = {
+  "\xec\xb6\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb6\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb7[] = {
+  "\xec\xb7\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb7\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb8[] = {
+  "\xec\xb8\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb8\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb8\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecb9[] = {
+  "\xec\xb9\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb9\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecba[] = {
+  "\xec\xba\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xba\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecbb[] = {
+  "\xec\xbb\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbb\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecbc[] = {
+  "\xec\xbc\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbc\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbc\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecbd[] = {
+  "\xec\xbd\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbd\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecbe[] = {
+  "\xec\xbe\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbe\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ecbf[] = {
+  "\xec\xbf\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbf\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbf\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed80[] = {
+  "\xed\x80\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x80\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed81[] = {
+  "\xed\x81\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x81\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed82[] = {
+  "\xed\x82\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x82\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed83[] = {
+  "\xed\x83\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x83\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x83\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed84[] = {
+  "\xed\x84\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x84\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed85[] = {
+  "\xed\x85\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x85\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed86[] = {
+  "\xed\x86\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x86\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x86\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed87[] = {
+  "\xed\x87\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x87\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed88[] = {
+  "\xed\x88\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x88\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed89[] = {
+  "\xed\x89\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x89\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8a[] = {
+  "\xed\x8a\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8a\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8a\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8b[] = {
+  "\xed\x8b\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8b\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8c[] = {
+  "\xed\x8c\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8c\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8d[] = {
+  "\xed\x8d\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8d\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8d\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8e[] = {
+  "\xed\x8e\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8e\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed8f[] = {
+  "\xed\x8f\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8f\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed90[] = {
+  "\xed\x90\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x90\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed91[] = {
+  "\xed\x91\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x91\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x91\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed92[] = {
+  "\xed\x92\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x92\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed93[] = {
+  "\xed\x93\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x93\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed94[] = {
+  "\xed\x94\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x94\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x94\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed95[] = {
+  "\xed\x95\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x95\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed96[] = {
+  "\xed\x96\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x96\xad"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed97[] = {
+  "\xed\x97\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x97\xa5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed98[] = {
+  "\xed\x98\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x98\x9d", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x98\xb9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed99[] = {
+  "\xed\x99\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x99\xb1"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed9a[] = {
+  "\xed\x9a\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9a\xa9"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed9b[] = {
+  "\xed\x9b\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9b\xa1", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x9b\xbd"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed9c[] = {
+  "\xed\x9c\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9c\xb5"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a8_table_ed9d[] = {
+  "\xed\x9d\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9d\xad"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e186a8(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xea :
+      switch (utf8[1]) {
+      case 0xb0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eab9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eaba[utf8[2] - 0x84];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eabb[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eabc[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eabd[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eabe[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eabf[utf8[2] - 0x94];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xeb :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb80[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb81[utf8[2] - 0x84];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb82[utf8[2] - 0x98];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb83[utf8[2] - 0x90];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb84[utf8[2] - 0x88];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb85[utf8[2] - 0x80];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb86[utf8[2] - 0x94];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb87[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb88[utf8[2] - 0x84];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb89[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8a[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8b[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8c[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8d[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8e[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb8f[utf8[2] - 0x84];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb90[utf8[2] - 0x98];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb91[utf8[2] - 0x90];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb92[utf8[2] - 0x88];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb93[utf8[2] - 0x80];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb94[utf8[2] - 0x94];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb95[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb96[utf8[2] - 0x84];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb97[utf8[2] - 0x98];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb98[utf8[2] - 0x90];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb99[utf8[2] - 0x88];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eb9f[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba0[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba1[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba2[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba3[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba4[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba5[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba6[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba7[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba8[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eba9[utf8[2] - 0x94];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebaa[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebab[utf8[2] - 0x84];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebac[utf8[2] - 0x98];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebad[utf8[2] - 0x90];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebae[utf8[2] - 0x88];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebaf[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb0[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb1[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb2[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb3[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb4[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb5[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb6[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb7[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb8[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebb9[utf8[2] - 0x84];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebba[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebbb[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebbc[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebbd[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebbe[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ebbf[utf8[2] - 0x8c];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xec :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec80[utf8[2] - 0x84];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec81[utf8[2] - 0x98];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec82[utf8[2] - 0x90];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec83[utf8[2] - 0x88];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec84[utf8[2] - 0x80];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec85[utf8[2] - 0x94];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec86[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec87[utf8[2] - 0x84];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec88[utf8[2] - 0x98];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec89[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8a[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8b[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8c[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8d[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8e[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec8f[utf8[2] - 0x98];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec90[utf8[2] - 0x90];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec91[utf8[2] - 0x88];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec92[utf8[2] - 0x80];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec93[utf8[2] - 0x94];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec94[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec95[utf8[2] - 0x84];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec96[utf8[2] - 0x98];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec97[utf8[2] - 0x90];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec98[utf8[2] - 0x88];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec99[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9a[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9b[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9c[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9d[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9e[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ec9f[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_eca9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecaa[utf8[2] - 0x84];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecab[utf8[2] - 0x98];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecac[utf8[2] - 0x90];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecad[utf8[2] - 0x88];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecae[utf8[2] - 0x80];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecaf[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb0[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb1[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb2[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb3[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb4[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb6[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb7[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb8[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecb9[utf8[2] - 0x98];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecba[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecbb[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecbc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecbd[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecbe[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ecbf[utf8[2] - 0x84];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xed :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed80[utf8[2] - 0x98];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed81[utf8[2] - 0x90];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed82[utf8[2] - 0x88];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed83[utf8[2] - 0x80];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed84[utf8[2] - 0x94];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed85[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed86[utf8[2] - 0x84];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed87[utf8[2] - 0x98];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed88[utf8[2] - 0x90];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed89[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed8f[utf8[2] - 0x90];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed90[utf8[2] - 0x88];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed91[utf8[2] - 0x80];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed92[utf8[2] - 0x94];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed93[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed94[utf8[2] - 0x84];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed95[utf8[2] - 0x98];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed96[utf8[2] - 0x90];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed97[utf8[2] - 0x88];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed98[utf8[2] - 0x80];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed99[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed9a[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed9b[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed9c[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a8_table_ed9d[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] == 0x88) {
+          return "\xed\x9e\x89";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab0[] = {
+  "\xea\xb0\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb0\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb0\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab1[] = {
+  "\xea\xb1\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb1\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab2[] = {
+  "\xea\xb2\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb2\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab3[] = {
+  "\xea\xb3\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb3\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb3\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab4[] = {
+  "\xea\xb4\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb4\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab5[] = {
+  "\xea\xb5\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb5\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab6[] = {
+  "\xea\xb6\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb6\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab7[] = {
+  "\xea\xb7\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb7\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb7\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab8[] = {
+  "\xea\xb8\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb8\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eab9[] = {
+  "\xea\xb9\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb9\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eaba[] = {
+  "\xea\xba\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xba\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xba\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eabb[] = {
+  "\xea\xbb\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbb\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eabc[] = {
+  "\xea\xbc\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbc\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eabd[] = {
+  "\xea\xbd\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbd\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eabe[] = {
+  "\xea\xbe\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbe\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xbe\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eabf[] = {
+  "\xea\xbf\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbf\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb80[] = {
+  "\xeb\x80\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x80\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb81[] = {
+  "\xeb\x81\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x81\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x81\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb82[] = {
+  "\xeb\x82\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x82\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb83[] = {
+  "\xeb\x83\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x83\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb84[] = {
+  "\xeb\x84\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x84\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb85[] = {
+  "\xeb\x85\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x85\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x85\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb86[] = {
+  "\xeb\x86\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x86\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb87[] = {
+  "\xeb\x87\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x87\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb88[] = {
+  "\xeb\x88\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x88\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x88\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb89[] = {
+  "\xeb\x89\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x89\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8a[] = {
+  "\xeb\x8a\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8a\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8b[] = {
+  "\xeb\x8b\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8b\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8c[] = {
+  "\xeb\x8c\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8c\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8c\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8d[] = {
+  "\xeb\x8d\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8d\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8e[] = {
+  "\xeb\x8e\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8e\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb8f[] = {
+  "\xeb\x8f\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8f\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8f\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb90[] = {
+  "\xeb\x90\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x90\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb91[] = {
+  "\xeb\x91\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x91\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb92[] = {
+  "\xeb\x92\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x92\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb93[] = {
+  "\xeb\x93\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x93\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x93\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb94[] = {
+  "\xeb\x94\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x94\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb95[] = {
+  "\xeb\x95\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x95\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb96[] = {
+  "\xeb\x96\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x96\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x96\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb97[] = {
+  "\xeb\x97\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x97\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb98[] = {
+  "\xeb\x98\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x98\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb99[] = {
+  "\xeb\x99\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x99\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9a[] = {
+  "\xeb\x9a\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9a\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9a\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9b[] = {
+  "\xeb\x9b\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9b\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9c[] = {
+  "\xeb\x9c\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9c\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9d[] = {
+  "\xeb\x9d\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9d\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9d\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9e[] = {
+  "\xeb\x9e\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9e\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eb9f[] = {
+  "\xeb\x9f\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9f\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba0[] = {
+  "\xeb\xa0\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa0\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba1[] = {
+  "\xeb\xa1\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa1\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa1\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba2[] = {
+  "\xeb\xa2\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa2\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba3[] = {
+  "\xeb\xa3\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa3\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba4[] = {
+  "\xeb\xa4\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa4\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa4\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba5[] = {
+  "\xeb\xa5\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa5\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba6[] = {
+  "\xeb\xa6\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa6\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba7[] = {
+  "\xeb\xa7\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa7\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba8[] = {
+  "\xeb\xa8\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa8\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa8\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eba9[] = {
+  "\xeb\xa9\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa9\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebaa[] = {
+  "\xeb\xaa\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaa\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebab[] = {
+  "\xeb\xab\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xab\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xab\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebac[] = {
+  "\xeb\xac\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xac\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebad[] = {
+  "\xeb\xad\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xad\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebae[] = {
+  "\xeb\xae\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xae\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebaf[] = {
+  "\xeb\xaf\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaf\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xaf\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb0[] = {
+  "\xeb\xb0\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb0\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb1[] = {
+  "\xeb\xb1\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb1\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb2[] = {
+  "\xeb\xb2\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb2\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb2\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb3[] = {
+  "\xeb\xb3\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb3\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb4[] = {
+  "\xeb\xb4\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb4\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb5[] = {
+  "\xeb\xb5\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb5\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb6[] = {
+  "\xeb\xb6\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb6\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb6\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb7[] = {
+  "\xeb\xb7\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb7\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb8[] = {
+  "\xeb\xb8\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb8\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebb9[] = {
+  "\xeb\xb9\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb9\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb9\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebba[] = {
+  "\xeb\xba\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xba\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebbb[] = {
+  "\xeb\xbb\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbb\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebbc[] = {
+  "\xeb\xbc\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbc\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebbd[] = {
+  "\xeb\xbd\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbd\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xbd\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebbe[] = {
+  "\xeb\xbe\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbe\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ebbf[] = {
+  "\xeb\xbf\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbf\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec80[] = {
+  "\xec\x80\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x80\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x80\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec81[] = {
+  "\xec\x81\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x81\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec82[] = {
+  "\xec\x82\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x82\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec83[] = {
+  "\xec\x83\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x83\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec84[] = {
+  "\xec\x84\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x84\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x84\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec85[] = {
+  "\xec\x85\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x85\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec86[] = {
+  "\xec\x86\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x86\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec87[] = {
+  "\xec\x87\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x87\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x87\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec88[] = {
+  "\xec\x88\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x88\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec89[] = {
+  "\xec\x89\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x89\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8a[] = {
+  "\xec\x8a\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8a\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8b[] = {
+  "\xec\x8b\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8b\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8b\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8c[] = {
+  "\xec\x8c\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8c\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8d[] = {
+  "\xec\x8d\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8d\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8e[] = {
+  "\xec\x8e\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8e\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8e\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec8f[] = {
+  "\xec\x8f\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8f\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec90[] = {
+  "\xec\x90\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x90\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec91[] = {
+  "\xec\x91\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x91\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec92[] = {
+  "\xec\x92\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x92\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x92\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec93[] = {
+  "\xec\x93\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x93\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec94[] = {
+  "\xec\x94\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x94\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec95[] = {
+  "\xec\x95\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x95\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x95\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec96[] = {
+  "\xec\x96\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x96\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec97[] = {
+  "\xec\x97\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x97\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec98[] = {
+  "\xec\x98\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x98\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec99[] = {
+  "\xec\x99\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x99\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x99\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9a[] = {
+  "\xec\x9a\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9a\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9b[] = {
+  "\xec\x9b\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9b\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9c[] = {
+  "\xec\x9c\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9c\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x9c\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9d[] = {
+  "\xec\x9d\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9d\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9e[] = {
+  "\xec\x9e\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9e\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ec9f[] = {
+  "\xec\x9f\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9f\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca0[] = {
+  "\xec\xa0\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa0\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa0\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca1[] = {
+  "\xec\xa1\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa1\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca2[] = {
+  "\xec\xa2\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa2\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca3[] = {
+  "\xec\xa3\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa3\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa3\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca4[] = {
+  "\xec\xa4\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa4\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca5[] = {
+  "\xec\xa5\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa5\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca6[] = {
+  "\xec\xa6\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa6\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca7[] = {
+  "\xec\xa7\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa7\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa7\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca8[] = {
+  "\xec\xa8\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa8\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_eca9[] = {
+  "\xec\xa9\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa9\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecaa[] = {
+  "\xec\xaa\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaa\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xaa\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecab[] = {
+  "\xec\xab\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xab\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecac[] = {
+  "\xec\xac\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xac\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecad[] = {
+  "\xec\xad\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xad\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecae[] = {
+  "\xec\xae\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xae\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xae\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecaf[] = {
+  "\xec\xaf\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaf\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb0[] = {
+  "\xec\xb0\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb0\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb1[] = {
+  "\xec\xb1\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb1\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb1\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb2[] = {
+  "\xec\xb2\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb2\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb3[] = {
+  "\xec\xb3\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb3\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb4[] = {
+  "\xec\xb4\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb4\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb5[] = {
+  "\xec\xb5\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb5\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb5\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb6[] = {
+  "\xec\xb6\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb6\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb7[] = {
+  "\xec\xb7\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb7\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb8[] = {
+  "\xec\xb8\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb8\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb8\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecb9[] = {
+  "\xec\xb9\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb9\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecba[] = {
+  "\xec\xba\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xba\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecbb[] = {
+  "\xec\xbb\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbb\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecbc[] = {
+  "\xec\xbc\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbc\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbc\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecbd[] = {
+  "\xec\xbd\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbd\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecbe[] = {
+  "\xec\xbe\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbe\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ecbf[] = {
+  "\xec\xbf\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbf\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbf\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed80[] = {
+  "\xed\x80\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x80\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed81[] = {
+  "\xed\x81\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x81\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed82[] = {
+  "\xed\x82\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x82\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed83[] = {
+  "\xed\x83\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x83\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x83\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed84[] = {
+  "\xed\x84\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x84\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed85[] = {
+  "\xed\x85\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x85\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed86[] = {
+  "\xed\x86\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x86\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x86\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed87[] = {
+  "\xed\x87\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x87\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed88[] = {
+  "\xed\x88\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x88\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed89[] = {
+  "\xed\x89\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x89\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8a[] = {
+  "\xed\x8a\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8a\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8a\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8b[] = {
+  "\xed\x8b\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8b\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8c[] = {
+  "\xed\x8c\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8c\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8d[] = {
+  "\xed\x8d\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8d\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8d\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8e[] = {
+  "\xed\x8e\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8e\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed8f[] = {
+  "\xed\x8f\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8f\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed90[] = {
+  "\xed\x90\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x90\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed91[] = {
+  "\xed\x91\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x91\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x91\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed92[] = {
+  "\xed\x92\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x92\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed93[] = {
+  "\xed\x93\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x93\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed94[] = {
+  "\xed\x94\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x94\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x94\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed95[] = {
+  "\xed\x95\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x95\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed96[] = {
+  "\xed\x96\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x96\xae"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed97[] = {
+  "\xed\x97\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x97\xa6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed98[] = {
+  "\xed\x98\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x98\x9e", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x98\xba"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed99[] = {
+  "\xed\x99\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x99\xb2"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed9a[] = {
+  "\xed\x9a\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9a\xaa"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed9b[] = {
+  "\xed\x9b\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9b\xa2", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x9b\xbe"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed9c[] = {
+  "\xed\x9c\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9c\xb6"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186a9_table_ed9d[] = {
+  "\xed\x9d\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9d\xae"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e186a9(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xea :
+      switch (utf8[1]) {
+      case 0xb0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eab9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eaba[utf8[2] - 0x84];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eabb[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eabc[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eabd[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eabe[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eabf[utf8[2] - 0x94];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xeb :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb80[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb81[utf8[2] - 0x84];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb82[utf8[2] - 0x98];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb83[utf8[2] - 0x90];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb84[utf8[2] - 0x88];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb85[utf8[2] - 0x80];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb86[utf8[2] - 0x94];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb87[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb88[utf8[2] - 0x84];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb89[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8a[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8b[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8c[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8d[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8e[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb8f[utf8[2] - 0x84];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb90[utf8[2] - 0x98];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb91[utf8[2] - 0x90];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb92[utf8[2] - 0x88];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb93[utf8[2] - 0x80];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb94[utf8[2] - 0x94];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb95[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb96[utf8[2] - 0x84];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb97[utf8[2] - 0x98];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb98[utf8[2] - 0x90];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb99[utf8[2] - 0x88];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eb9f[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba0[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba1[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba2[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba3[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba4[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba5[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba6[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba7[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba8[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eba9[utf8[2] - 0x94];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebaa[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebab[utf8[2] - 0x84];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebac[utf8[2] - 0x98];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebad[utf8[2] - 0x90];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebae[utf8[2] - 0x88];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebaf[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb0[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb1[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb2[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb3[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb4[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb5[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb6[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb7[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb8[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebb9[utf8[2] - 0x84];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebba[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebbb[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebbc[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebbd[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebbe[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ebbf[utf8[2] - 0x8c];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xec :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec80[utf8[2] - 0x84];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec81[utf8[2] - 0x98];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec82[utf8[2] - 0x90];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec83[utf8[2] - 0x88];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec84[utf8[2] - 0x80];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec85[utf8[2] - 0x94];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec86[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec87[utf8[2] - 0x84];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec88[utf8[2] - 0x98];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec89[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8a[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8b[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8c[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8d[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8e[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec8f[utf8[2] - 0x98];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec90[utf8[2] - 0x90];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec91[utf8[2] - 0x88];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec92[utf8[2] - 0x80];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec93[utf8[2] - 0x94];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec94[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec95[utf8[2] - 0x84];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec96[utf8[2] - 0x98];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec97[utf8[2] - 0x90];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec98[utf8[2] - 0x88];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec99[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9a[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9b[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9c[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9d[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9e[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ec9f[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_eca9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecaa[utf8[2] - 0x84];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecab[utf8[2] - 0x98];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecac[utf8[2] - 0x90];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecad[utf8[2] - 0x88];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecae[utf8[2] - 0x80];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecaf[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb0[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb1[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb2[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb3[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb4[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb6[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb7[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb8[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecb9[utf8[2] - 0x98];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecba[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecbb[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecbc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecbd[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecbe[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ecbf[utf8[2] - 0x84];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xed :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed80[utf8[2] - 0x98];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed81[utf8[2] - 0x90];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed82[utf8[2] - 0x88];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed83[utf8[2] - 0x80];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed84[utf8[2] - 0x94];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed85[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed86[utf8[2] - 0x84];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed87[utf8[2] - 0x98];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed88[utf8[2] - 0x90];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed89[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed8f[utf8[2] - 0x90];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed90[utf8[2] - 0x88];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed91[utf8[2] - 0x80];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed92[utf8[2] - 0x94];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed93[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed94[utf8[2] - 0x84];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed95[utf8[2] - 0x98];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed96[utf8[2] - 0x90];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed97[utf8[2] - 0x88];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed98[utf8[2] - 0x80];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed99[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed9a[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed9b[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed9c[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186a9_table_ed9d[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] == 0x88) {
+          return "\xed\x9e\x8a";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab0[] = {
+  "\xea\xb0\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb0\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb0\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab1[] = {
+  "\xea\xb1\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb1\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab2[] = {
+  "\xea\xb2\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb2\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab3[] = {
+  "\xea\xb3\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb3\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb3\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab4[] = {
+  "\xea\xb4\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb4\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab5[] = {
+  "\xea\xb5\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb5\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab6[] = {
+  "\xea\xb6\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb6\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab7[] = {
+  "\xea\xb7\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb7\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb7\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab8[] = {
+  "\xea\xb8\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb8\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eab9[] = {
+  "\xea\xb9\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb9\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eaba[] = {
+  "\xea\xba\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xba\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xba\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eabb[] = {
+  "\xea\xbb\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbb\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eabc[] = {
+  "\xea\xbc\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbc\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eabd[] = {
+  "\xea\xbd\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbd\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eabe[] = {
+  "\xea\xbe\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbe\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xbe\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eabf[] = {
+  "\xea\xbf\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbf\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb80[] = {
+  "\xeb\x80\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x80\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb81[] = {
+  "\xeb\x81\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x81\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x81\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb82[] = {
+  "\xeb\x82\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x82\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb83[] = {
+  "\xeb\x83\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x83\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb84[] = {
+  "\xeb\x84\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x84\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb85[] = {
+  "\xeb\x85\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x85\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x85\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb86[] = {
+  "\xeb\x86\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x86\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb87[] = {
+  "\xeb\x87\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x87\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb88[] = {
+  "\xeb\x88\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x88\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x88\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb89[] = {
+  "\xeb\x89\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x89\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8a[] = {
+  "\xeb\x8a\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8a\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8b[] = {
+  "\xeb\x8b\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8b\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8c[] = {
+  "\xeb\x8c\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8c\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8c\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8d[] = {
+  "\xeb\x8d\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8d\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8e[] = {
+  "\xeb\x8e\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8e\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb8f[] = {
+  "\xeb\x8f\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8f\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8f\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb90[] = {
+  "\xeb\x90\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x90\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb91[] = {
+  "\xeb\x91\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x91\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb92[] = {
+  "\xeb\x92\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x92\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb93[] = {
+  "\xeb\x93\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x93\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x93\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb94[] = {
+  "\xeb\x94\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x94\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb95[] = {
+  "\xeb\x95\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x95\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb96[] = {
+  "\xeb\x96\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x96\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x96\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb97[] = {
+  "\xeb\x97\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x97\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb98[] = {
+  "\xeb\x98\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x98\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb99[] = {
+  "\xeb\x99\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x99\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9a[] = {
+  "\xeb\x9a\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9a\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9a\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9b[] = {
+  "\xeb\x9b\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9b\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9c[] = {
+  "\xeb\x9c\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9c\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9d[] = {
+  "\xeb\x9d\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9d\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9d\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9e[] = {
+  "\xeb\x9e\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9e\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eb9f[] = {
+  "\xeb\x9f\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9f\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba0[] = {
+  "\xeb\xa0\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa0\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba1[] = {
+  "\xeb\xa1\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa1\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa1\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba2[] = {
+  "\xeb\xa2\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa2\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba3[] = {
+  "\xeb\xa3\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa3\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba4[] = {
+  "\xeb\xa4\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa4\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa4\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba5[] = {
+  "\xeb\xa5\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa5\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba6[] = {
+  "\xeb\xa6\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa6\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba7[] = {
+  "\xeb\xa7\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa7\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba8[] = {
+  "\xeb\xa8\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa8\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xa8\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eba9[] = {
+  "\xeb\xa9\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xa9\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebaa[] = {
+  "\xeb\xaa\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaa\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebab[] = {
+  "\xeb\xab\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xab\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xab\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebac[] = {
+  "\xeb\xac\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xac\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebad[] = {
+  "\xeb\xad\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xad\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebae[] = {
+  "\xeb\xae\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xae\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebaf[] = {
+  "\xeb\xaf\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xaf\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xaf\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb0[] = {
+  "\xeb\xb0\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb0\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb1[] = {
+  "\xeb\xb1\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb1\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb2[] = {
+  "\xeb\xb2\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb2\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb2\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb3[] = {
+  "\xeb\xb3\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb3\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb4[] = {
+  "\xeb\xb4\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb4\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb5[] = {
+  "\xeb\xb5\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb5\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb6[] = {
+  "\xeb\xb6\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb6\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb6\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb7[] = {
+  "\xeb\xb7\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb7\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb8[] = {
+  "\xeb\xb8\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb8\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebb9[] = {
+  "\xeb\xb9\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xb9\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xb9\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebba[] = {
+  "\xeb\xba\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xba\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebbb[] = {
+  "\xeb\xbb\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbb\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebbc[] = {
+  "\xeb\xbc\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbc\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebbd[] = {
+  "\xeb\xbd\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbd\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\xbd\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebbe[] = {
+  "\xeb\xbe\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbe\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ebbf[] = {
+  "\xeb\xbf\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\xbf\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec80[] = {
+  "\xec\x80\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x80\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x80\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec81[] = {
+  "\xec\x81\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x81\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec82[] = {
+  "\xec\x82\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x82\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec83[] = {
+  "\xec\x83\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x83\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec84[] = {
+  "\xec\x84\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x84\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x84\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec85[] = {
+  "\xec\x85\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x85\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec86[] = {
+  "\xec\x86\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x86\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec87[] = {
+  "\xec\x87\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x87\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x87\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec88[] = {
+  "\xec\x88\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x88\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec89[] = {
+  "\xec\x89\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x89\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8a[] = {
+  "\xec\x8a\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8a\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8b[] = {
+  "\xec\x8b\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8b\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8b\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8c[] = {
+  "\xec\x8c\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8c\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8d[] = {
+  "\xec\x8d\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8d\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8e[] = {
+  "\xec\x8e\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8e\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x8e\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec8f[] = {
+  "\xec\x8f\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x8f\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec90[] = {
+  "\xec\x90\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x90\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec91[] = {
+  "\xec\x91\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x91\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec92[] = {
+  "\xec\x92\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x92\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x92\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec93[] = {
+  "\xec\x93\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x93\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec94[] = {
+  "\xec\x94\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x94\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec95[] = {
+  "\xec\x95\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x95\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x95\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec96[] = {
+  "\xec\x96\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x96\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec97[] = {
+  "\xec\x97\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x97\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec98[] = {
+  "\xec\x98\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x98\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec99[] = {
+  "\xec\x99\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x99\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x99\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9a[] = {
+  "\xec\x9a\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9a\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9b[] = {
+  "\xec\x9b\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9b\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9c[] = {
+  "\xec\x9c\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9c\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\x9c\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9d[] = {
+  "\xec\x9d\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9d\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9e[] = {
+  "\xec\x9e\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9e\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ec9f[] = {
+  "\xec\x9f\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\x9f\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca0[] = {
+  "\xec\xa0\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa0\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa0\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca1[] = {
+  "\xec\xa1\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa1\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca2[] = {
+  "\xec\xa2\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa2\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca3[] = {
+  "\xec\xa3\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa3\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa3\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca4[] = {
+  "\xec\xa4\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa4\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca5[] = {
+  "\xec\xa5\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa5\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca6[] = {
+  "\xec\xa6\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa6\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca7[] = {
+  "\xec\xa7\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa7\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xa7\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca8[] = {
+  "\xec\xa8\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa8\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_eca9[] = {
+  "\xec\xa9\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xa9\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecaa[] = {
+  "\xec\xaa\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaa\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xaa\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecab[] = {
+  "\xec\xab\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xab\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecac[] = {
+  "\xec\xac\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xac\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecad[] = {
+  "\xec\xad\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xad\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecae[] = {
+  "\xec\xae\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xae\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xae\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecaf[] = {
+  "\xec\xaf\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xaf\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb0[] = {
+  "\xec\xb0\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb0\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb1[] = {
+  "\xec\xb1\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb1\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb1\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb2[] = {
+  "\xec\xb2\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb2\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb3[] = {
+  "\xec\xb3\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb3\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb4[] = {
+  "\xec\xb4\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb4\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb5[] = {
+  "\xec\xb5\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb5\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb5\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb6[] = {
+  "\xec\xb6\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb6\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb7[] = {
+  "\xec\xb7\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb7\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb8[] = {
+  "\xec\xb8\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb8\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xb8\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecb9[] = {
+  "\xec\xb9\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xb9\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecba[] = {
+  "\xec\xba\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xba\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecbb[] = {
+  "\xec\xbb\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbb\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecbc[] = {
+  "\xec\xbc\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbc\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbc\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecbd[] = {
+  "\xec\xbd\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbd\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecbe[] = {
+  "\xec\xbe\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbe\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ecbf[] = {
+  "\xec\xbf\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xec\xbf\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xec\xbf\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed80[] = {
+  "\xed\x80\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x80\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed81[] = {
+  "\xed\x81\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x81\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed82[] = {
+  "\xed\x82\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x82\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed83[] = {
+  "\xed\x83\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x83\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x83\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed84[] = {
+  "\xed\x84\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x84\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed85[] = {
+  "\xed\x85\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x85\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed86[] = {
+  "\xed\x86\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x86\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x86\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed87[] = {
+  "\xed\x87\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x87\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed88[] = {
+  "\xed\x88\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x88\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed89[] = {
+  "\xed\x89\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x89\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8a[] = {
+  "\xed\x8a\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8a\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8a\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8b[] = {
+  "\xed\x8b\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8b\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8c[] = {
+  "\xed\x8c\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8c\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8d[] = {
+  "\xed\x8d\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8d\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x8d\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8e[] = {
+  "\xed\x8e\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8e\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed8f[] = {
+  "\xed\x8f\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x8f\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed90[] = {
+  "\xed\x90\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x90\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed91[] = {
+  "\xed\x91\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x91\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x91\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed92[] = {
+  "\xed\x92\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x92\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed93[] = {
+  "\xed\x93\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x93\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed94[] = {
+  "\xed\x94\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x94\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x94\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed95[] = {
+  "\xed\x95\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x95\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed96[] = {
+  "\xed\x96\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x96\xaf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed97[] = {
+  "\xed\x97\x8b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x97\xa7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed98[] = {
+  "\xed\x98\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x98\x9f", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x98\xbb"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed99[] = {
+  "\xed\x99\x97", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x99\xb3"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed9a[] = {
+  "\xed\x9a\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9a\xab"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed9b[] = {
+  "\xed\x9b\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9b\xa3", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xed\x9b\xbf"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed9c[] = {
+  "\xed\x9c\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9c\xb7"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186aa_table_ed9d[] = {
+  "\xed\x9d\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xed\x9d\xaf"
+};
+
+static grn_inline const char *
+grn_nfkc121_compose_prefix_e186aa(const unsigned char *utf8)
+{
+  {
+    switch (utf8[0]) {
+    case 0xea :
+      switch (utf8[1]) {
+      case 0xb0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eab9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eaba[utf8[2] - 0x84];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eabb[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eabc[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eabd[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eabe[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eabf[utf8[2] - 0x94];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xeb :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb80[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb81[utf8[2] - 0x84];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb82[utf8[2] - 0x98];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb83[utf8[2] - 0x90];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb84[utf8[2] - 0x88];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb85[utf8[2] - 0x80];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb86[utf8[2] - 0x94];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb87[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb88[utf8[2] - 0x84];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb89[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8a[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8b[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8c[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8d[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8e[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb8f[utf8[2] - 0x84];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb90[utf8[2] - 0x98];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb91[utf8[2] - 0x90];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb92[utf8[2] - 0x88];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb93[utf8[2] - 0x80];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb94[utf8[2] - 0x94];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb95[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb96[utf8[2] - 0x84];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb97[utf8[2] - 0x98];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb98[utf8[2] - 0x90];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb99[utf8[2] - 0x88];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eb9f[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba0[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba1[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba2[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba3[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba4[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba5[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba6[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba7[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba8[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eba9[utf8[2] - 0x94];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebaa[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebab[utf8[2] - 0x84];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebac[utf8[2] - 0x98];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebad[utf8[2] - 0x90];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebae[utf8[2] - 0x88];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebaf[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb0[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb1[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb2[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb3[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb4[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb5[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb6[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb7[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb8[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebb9[utf8[2] - 0x84];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebba[utf8[2] - 0x98];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebbb[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebbc[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebbd[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebbe[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ebbf[utf8[2] - 0x8c];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xec :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec80[utf8[2] - 0x84];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec81[utf8[2] - 0x98];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec82[utf8[2] - 0x90];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec83[utf8[2] - 0x88];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec84[utf8[2] - 0x80];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec85[utf8[2] - 0x94];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec86[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec87[utf8[2] - 0x84];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec88[utf8[2] - 0x98];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec89[utf8[2] - 0x90];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8a[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8b[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8c[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8d[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8e[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec8f[utf8[2] - 0x98];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec90[utf8[2] - 0x90];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec91[utf8[2] - 0x88];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec92[utf8[2] - 0x80];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec93[utf8[2] - 0x94];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec94[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec95[utf8[2] - 0x84];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec96[utf8[2] - 0x98];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec97[utf8[2] - 0x90];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec98[utf8[2] - 0x88];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec99[utf8[2] - 0x80];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9a[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9b[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9c[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9d[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9e[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9f :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ec9f[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa0 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca0[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa1 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca1[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa2 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca2[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xa3 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca3[utf8[2] - 0x84];
+        }
+        break;
+      case 0xa4 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca4[utf8[2] - 0x98];
+        }
+        break;
+      case 0xa5 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca5[utf8[2] - 0x90];
+        }
+        break;
+      case 0xa6 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca6[utf8[2] - 0x88];
+        }
+        break;
+      case 0xa7 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca7[utf8[2] - 0x80];
+        }
+        break;
+      case 0xa8 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca8[utf8[2] - 0x94];
+        }
+        break;
+      case 0xa9 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_eca9[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xaa :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecaa[utf8[2] - 0x84];
+        }
+        break;
+      case 0xab :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecab[utf8[2] - 0x98];
+        }
+        break;
+      case 0xac :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecac[utf8[2] - 0x90];
+        }
+        break;
+      case 0xad :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecad[utf8[2] - 0x88];
+        }
+        break;
+      case 0xae :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecae[utf8[2] - 0x80];
+        }
+        break;
+      case 0xaf :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecaf[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb0 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb0[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb1 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb1[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb2 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb2[utf8[2] - 0x98];
+        }
+        break;
+      case 0xb3 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb3[utf8[2] - 0x90];
+        }
+        break;
+      case 0xb4 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb4[utf8[2] - 0x88];
+        }
+        break;
+      case 0xb5 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb5[utf8[2] - 0x80];
+        }
+        break;
+      case 0xb6 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb6[utf8[2] - 0x94];
+        }
+        break;
+      case 0xb7 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb7[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xb8 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb8[utf8[2] - 0x84];
+        }
+        break;
+      case 0xb9 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecb9[utf8[2] - 0x98];
+        }
+        break;
+      case 0xba :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecba[utf8[2] - 0x90];
+        }
+        break;
+      case 0xbb :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecbb[utf8[2] - 0x88];
+        }
+        break;
+      case 0xbc :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecbc[utf8[2] - 0x80];
+        }
+        break;
+      case 0xbd :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecbd[utf8[2] - 0x94];
+        }
+        break;
+      case 0xbe :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecbe[utf8[2] - 0x8c];
+        }
+        break;
+      case 0xbf :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ecbf[utf8[2] - 0x84];
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    case 0xed :
+      switch (utf8[1]) {
+      case 0x80 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed80[utf8[2] - 0x98];
+        }
+        break;
+      case 0x81 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed81[utf8[2] - 0x90];
+        }
+        break;
+      case 0x82 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed82[utf8[2] - 0x88];
+        }
+        break;
+      case 0x83 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed83[utf8[2] - 0x80];
+        }
+        break;
+      case 0x84 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed84[utf8[2] - 0x94];
+        }
+        break;
+      case 0x85 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed85[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x86 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed86[utf8[2] - 0x84];
+        }
+        break;
+      case 0x87 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed87[utf8[2] - 0x98];
+        }
+        break;
+      case 0x88 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed88[utf8[2] - 0x90];
+        }
+        break;
+      case 0x89 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed89[utf8[2] - 0x88];
+        }
+        break;
+      case 0x8a :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8a[utf8[2] - 0x80];
+        }
+        break;
+      case 0x8b :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8b[utf8[2] - 0x94];
+        }
+        break;
+      case 0x8c :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8c[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x8d :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8d[utf8[2] - 0x84];
+        }
+        break;
+      case 0x8e :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8e[utf8[2] - 0x98];
+        }
+        break;
+      case 0x8f :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed8f[utf8[2] - 0x90];
+        }
+        break;
+      case 0x90 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed90[utf8[2] - 0x88];
+        }
+        break;
+      case 0x91 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed91[utf8[2] - 0x80];
+        }
+        break;
+      case 0x92 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed92[utf8[2] - 0x94];
+        }
+        break;
+      case 0x93 :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed93[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x94 :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed94[utf8[2] - 0x84];
+        }
+        break;
+      case 0x95 :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed95[utf8[2] - 0x98];
+        }
+        break;
+      case 0x96 :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed96[utf8[2] - 0x90];
+        }
+        break;
+      case 0x97 :
+        if (utf8[2] >= 0x88 &&
+            utf8[2] <= 0xa4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed97[utf8[2] - 0x88];
+        }
+        break;
+      case 0x98 :
+        if (utf8[2] >= 0x80 &&
+            utf8[2] <= 0xb8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed98[utf8[2] - 0x80];
+        }
+        break;
+      case 0x99 :
+        if (utf8[2] >= 0x94 &&
+            utf8[2] <= 0xb0) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed99[utf8[2] - 0x94];
+        }
+        break;
+      case 0x9a :
+        if (utf8[2] >= 0x8c &&
+            utf8[2] <= 0xa8) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed9a[utf8[2] - 0x8c];
+        }
+        break;
+      case 0x9b :
+        if (utf8[2] >= 0x84 &&
+            utf8[2] <= 0xbc) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed9b[utf8[2] - 0x84];
+        }
+        break;
+      case 0x9c :
+        if (utf8[2] >= 0x98 &&
+            utf8[2] <= 0xb4) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed9c[utf8[2] - 0x98];
+        }
+        break;
+      case 0x9d :
+        if (utf8[2] >= 0x90 &&
+            utf8[2] <= 0xac) {
+          return grn_nfkc121_compose_prefix_e186aa_table_ed9d[utf8[2] - 0x90];
+        }
+        break;
+      case 0x9e :
+        if (utf8[2] == 0x88) {
+          return "\xed\x9e\x8b";
+        }
+        break;
+      default :
+        break;
+      }
+      break;
+    default :
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab0[] = {
+  "\xea\xb0\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb0\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb0\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab1[] = {
+  "\xea\xb1\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb1\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab2[] = {
+  "\xea\xb2\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb2\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab3[] = {
+  "\xea\xb3\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb3\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb4\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab4[] = {
+  "\xea\xb4\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb4\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab5[] = {
+  "\xea\xb5\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb5\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab6[] = {
+  "\xea\xb6\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb6\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab7[] = {
+  "\xea\xb7\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb7\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xb7\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab8[] = {
+  "\xea\xb8\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb8\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eab9[] = {
+  "\xea\xb9\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xb9\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eaba[] = {
+  "\xea\xba\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xba\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xbb\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eabb[] = {
+  "\xea\xbb\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbb\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eabc[] = {
+  "\xea\xbc\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbc\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eabd[] = {
+  "\xea\xbd\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbd\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eabe[] = {
+  "\xea\xbe\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbe\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xea\xbe\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eabf[] = {
+  "\xea\xbf\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xea\xbf\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb80[] = {
+  "\xeb\x80\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x80\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb81[] = {
+  "\xeb\x81\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x81\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x82\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb82[] = {
+  "\xeb\x82\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x82\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb83[] = {
+  "\xeb\x83\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x83\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb84[] = {
+  "\xeb\x84\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x84\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb85[] = {
+  "\xeb\x85\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x85\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x85\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb86[] = {
+  "\xeb\x86\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x86\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb87[] = {
+  "\xeb\x87\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x87\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb88[] = {
+  "\xeb\x88\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x88\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x89\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb89[] = {
+  "\xeb\x89\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x89\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8a[] = {
+  "\xeb\x8a\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8a\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8b[] = {
+  "\xeb\x8b\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8b\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8c[] = {
+  "\xeb\x8c\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8c\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x8c\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8d[] = {
+  "\xeb\x8d\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8d\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8e[] = {
+  "\xeb\x8e\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8e\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb8f[] = {
+  "\xeb\x8f\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x8f\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x90\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb90[] = {
+  "\xeb\x90\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x90\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb91[] = {
+  "\xeb\x91\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x91\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb92[] = {
+  "\xeb\x92\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x92\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb93[] = {
+  "\xeb\x93\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x93\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x93\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb94[] = {
+  "\xeb\x94\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x94\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb95[] = {
+  "\xeb\x95\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x95\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb96[] = {
+  "\xeb\x96\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x96\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x97\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb97[] = {
+  "\xeb\x97\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x97\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb98[] = {
+  "\xeb\x98\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x98\xb0"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb99[] = {
+  "\xeb\x99\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x99\xa8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9a[] = {
+  "\xeb\x9a\x84", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9a\xa0", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9a\xbc"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9b[] = {
+  "\xeb\x9b\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9b\xb4"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9c[] = {
+  "\xeb\x9c\x90", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9c\xac"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9d[] = {
+  "\xeb\x9d\x88", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9d\xa4", NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  "\xeb\x9e\x80"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9e[] = {
+  "\xeb\x9e\x9c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, "\xeb\x9e\xb8"
+};
+
+static const char *grn_nfkc121_compose_prefix_e186ab_table_eb9f[] = {
+  "\xeb\x9f\x94", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL,