しらいです。

 file & directory 管理ツール FDclone 2.09 の patch その 9
です。

Submitted-by: shirai@chandra2
Archive-name: FD-2.09.patch/part09

---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is `FD-2.09.shar.09' (part 9 of FD-2.09.patch).
# Do not concatenate these parts, unpack them in order with `/bin/sh'.
# File `FD-2.09.patch' is being continued...
#
echo=echo
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  $echo 'WARNING: not restoring timestamps.  Consider getting and'
  $echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
if test ! -r _sh00904/seq; then
  $echo 'Please unpack part 1 first!'
  exit 1
fi
shar_sequence=`cat _sh00904/seq`
if test "$shar_sequence" != 9; then
  $echo 'Please unpack part' "$shar_sequence" 'next!'
  exit 1
fi
if test ! -f _sh00904/new; then
  $echo 'x -' 'STILL SKIPPING' 'FD-2.09.patch'
else
  $echo 'x -' 'continuing file' 'FD-2.09.patch'
  sed 's/^X//' << 'SHAR_EOF' >> FD-2.09.patch &&
+         FZ_XYUU, FZ_YORI, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RE2, FZ_RE5,
+         FZ_WO}},
+
+       /* FukuJo-Shika */
+       {FZ_SHIKA, 2, {0x2437, 0x242b}, 106,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I7, FZ_I9, FZ_IKU, FZ_U3,
+         FZ_OKU, FZ_ORU, FZ_KA3, FZ_KARA3, FZ_GA4, FZ_GARI, FZ_GARU, FZ_KI,
+         FZ_KI2, FZ_KI4, FZ_KIRI, FZ_GI, FZ_KU3, FZ_KU4, FZ_KU5, FZ_KURAI,
+         FZ_KURU, FZ_GU, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4, FZ_SHIMAU,
+         FZ_JIRU, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURU, FZ_ZUTSU, FZ_ZURU, FZ_TA,
+         FZ_TARI2, FZ_DA2, FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_TSU,
+         FZ_TSUTSU, FZ_TE2, FZ_DE, FZ_DE4, FZ_DE5, FZ_TO, FZ_TO3, FZ_TO4,
+         FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI3, FZ_NARU2, FZ_NI, FZ_NI3,
+         FZ_NI5, FZ_NI6, FZ_NU, FZ_NU2, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI,
+         FZ_BI, FZ_BU, FZ_HE, FZ_HODO, FZ_MADE, FZ_MI, FZ_MI4, FZ_MU, FZ_ME2,
+         FZ_YARA2, FZ_YARU, FZ_XYUU, FZ_YORI2, FZ_YORU, FZ_RI2, FZ_RU, FZ_RU2,
+         FZ_RU3, FZ_WO}},
+
+       /* HeiJo-Nari */
+       {FZ_NARI3, 2, {0x244a, 0x246a}, 82,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I7, FZ_IKU, FZ_U3, FZ_OKU,
+         FZ_ORU, FZ_KARA3, FZ_GARI, FZ_GARU, FZ_KI2, FZ_KI4, FZ_KIRI, FZ_GI,
+         FZ_KU3, FZ_KU4, FZ_KU5, FZ_KURAI, FZ_KURU, FZ_GU, FZ_GURAI, FZ_GE2,
+         FZ_SA3, FZ_SHI4, FZ_SHIMAU, FZ_JIRU, FZ_SU, FZ_SU3, FZ_SURU,
+         FZ_ZUTSU, FZ_ZURU, FZ_TA, FZ_DA, FZ_DA2, FZ_DAKE, FZ_CHI, FZ_TSU,
+         FZ_DE5, FZ_NAGARA, FZ_NARU2, FZ_NI3, FZ_NI5, FZ_NI6, FZ_NU, FZ_NU2,
+         FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BI, FZ_BU, FZ_HE, FZ_MADE, FZ_MI, FZ_MI4,
+         FZ_MU, FZ_ME2, FZ_YARU, FZ_YORU, FZ_RI2, FZ_RU, FZ_RU2, FZ_RU3}},
+
+       /* HeiJo-Dano */
+       {FZ_DANO, 2, {0x2440, 0x244e}, 130,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_KEIDOU, HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN,
+         HN_SETUCH, HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I6, FZ_I7, FZ_IKU,
+         FZ_IKE, FZ_U, FZ_U3, FZ_E, FZ_OKU, FZ_OKE, FZ_ORU, FZ_ORE, FZ_KA3,
+         FZ_KARA3, FZ_GARI, FZ_GARU, FZ_GARE, FZ_KI, FZ_KI4, FZ_KIRI, FZ_GI,
+         FZ_KU3, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_GU, FZ_GURAI, FZ_KE, FZ_GE,
+         FZ_GE2, FZ_KOI, FZ_SA3, FZ_SHI4, FZ_SHIMAU, FZ_SHIMAE, FZ_SHIRO,
+         FZ_JIYO, FZ_JIRU, FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SEYO, FZ_ZEYO, FZ_TA, FZ_TARI2, FZ_TARU,
+         FZ_TARE, FZ_DA2, FZ_DAKE, FZ_DARI, FZ_CHI, FZ_TSU, FZ_TE, FZ_DE5,
+         FZ_TO4, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI3,
+         FZ_NARU2, FZ_NARE, FZ_NARE2, FZ_NI3, FZ_NI6, FZ_NU, FZ_NU2, FZ_NE,
+         FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BU, FZ_HE, FZ_BE,
+         FZ_MAI, FZ_MADE, FZ_MI, FZ_MI4, FZ_MU, FZ_ME, FZ_ME2, FZ_YA2,
+         FZ_YARA2, FZ_YARU, FZ_YARE, FZ_YO, FZ_YOU, FZ_YORI2, FZ_YORU,
+         FZ_YORE, FZ_RI2, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE, FZ_RE2, FZ_RO4, FZ_WO,
+         FZ_N}},
+
+       /* HeiJo-Ya */
+       {FZ_YA2, 1, {0x2464}, 57,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_KARA3, FZ_GARI, FZ_KI4, FZ_KIRI,
+         FZ_GI, FZ_KURAI, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4, FZ_ZUTSU,
+         FZ_TARI2, FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_DE5, FZ_TO4,
+         FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI3, FZ_NI3, FZ_NI6, FZ_NO2,
+         FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_HE, FZ_MADE, FZ_MI, FZ_MI4,
+         FZ_ME2, FZ_YORI2, FZ_RI2}},
+
+       /* FukuJo-Made */
+       {FZ_MADE, 2, {0x245e, 0x2447}, 93,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I7, FZ_IKU, FZ_U3, FZ_OKU,
+         FZ_ORU, FZ_GARI, FZ_GARU, FZ_KI4, FZ_KIRI, FZ_GI, FZ_KU3, FZ_KURAI,
+         FZ_KURU, FZ_GU, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_ZARU, FZ_SHI4,
+         FZ_SHIMAU, FZ_JIRU, FZ_SU3, FZ_SURU, FZ_ZUTSU, FZ_ZURU, FZ_TA,
+         FZ_TARI2, FZ_TARU, FZ_DA2, FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_TSU,
+         FZ_TSUTSU, FZ_TE2, FZ_DE4, FZ_DE5, FZ_TO3, FZ_TO4, FZ_NA, FZ_NAGARA,
+         FZ_NAZO, FZ_NADO, FZ_NARI3, FZ_NARU2, FZ_NI3, FZ_NI5, FZ_NI6, FZ_NU,
+         FZ_NU2, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BU, FZ_HE,
+         FZ_HODO, FZ_MI, FZ_MI4, FZ_MU, FZ_ME2, FZ_YA2, FZ_YARA2, FZ_YARU,
+         FZ_YORU, FZ_RI2, FZ_RU, FZ_RU2, FZ_RU3}},
+
+       /* KakuJo-To */
+       {FZ_TO4, 1, {0x2448}, 95,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_KEIDOU, HN_FUKUSI, HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO,
+         HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_I6,
+         FZ_IKE, FZ_E, FZ_OKE, FZ_ORE, FZ_KA3, FZ_KARA3, FZ_GARI, FZ_GARE,
+         FZ_KI4, FZ_KIRI, FZ_GI, FZ_KURAI, FZ_KURE, FZ_GURAI, FZ_KE, FZ_GE,
+         FZ_GE2, FZ_KOI, FZ_SA3, FZ_SAE, FZ_SHI4, FZ_SHIKA, FZ_SHIMAE,
+         FZ_SHIRO, FZ_JIYO, FZ_JIRO, FZ_SURA, FZ_ZUTSU, FZ_SE, FZ_SE2,
+         FZ_SEYO, FZ_ZEYO, FZ_TARE, FZ_DAKE, FZ_DANO, FZ_CHI, FZ_TE, FZ_NA6,
+         FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI2, FZ_NARI3, FZ_NARE, FZ_NARE2,
+         FZ_NI3, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_HE,
+         FZ_BE, FZ_HODO, FZ_MADE, FZ_MI, FZ_MI4, FZ_ME, FZ_ME2, FZ_YA2,
+         FZ_YARA2, FZ_YARE, FZ_YO, FZ_YORE, FZ_RI2, FZ_RE, FZ_RE2, FZ_RO4,
+         FZ_WA3}},
+
+       /* KakuJo-Yori */
+       {FZ_YORI2, 2, {0x2468, 0x246a}, 82,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I7, FZ_IKU, FZ_U3, FZ_OKU,
+         FZ_ORU, FZ_KA3, FZ_GARI, FZ_GARU, FZ_KI4, FZ_KIRI, FZ_GI, FZ_KU3,
+         FZ_KURAI, FZ_KURU, FZ_GU, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_ZARU, FZ_SHI4,
+         FZ_SHIKA, FZ_SHIMAU, FZ_JIRU, FZ_SU3, FZ_SURU, FZ_ZUTSU, FZ_ZURU,
+         FZ_TA, FZ_TARU, FZ_DA2, FZ_DAKE, FZ_DANO, FZ_CHI, FZ_TSU, FZ_TO4,
+         FZ_NA, FZ_NAZO, FZ_NADO, FZ_NARU2, FZ_NI3, FZ_NU, FZ_NU2, FZ_NO2,
+         FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BU, FZ_MADE, FZ_MI, FZ_MI4,
+         FZ_MU, FZ_ME2, FZ_YA2, FZ_YARU, FZ_YORU, FZ_RI2, FZ_RU, FZ_RU2,
+         FZ_RU3}},
+
+       /* KakuJo-Kara */
+       {FZ_KARA3, 2, {0x242b, 0x2469}, 52,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_GARI, FZ_KI4, FZ_KIRI, FZ_GI,
+         FZ_KURAI, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4, FZ_ZUTSU, FZ_DAKE,
+         FZ_DANO, FZ_CHI, FZ_TE2, FZ_DE4, FZ_TO4, FZ_NAZO, FZ_NADO, FZ_NARI3,
+         FZ_NI3, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_HODO, FZ_MI,
+         FZ_MI4, FZ_ME2, FZ_YA2, FZ_RI2}},
+
+       /* KakuJo-De */
+       {FZ_DE5, 1, {0x2447}, 83,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I, FZ_I4, FZ_I7, FZ_IKU, FZ_U3, FZ_OKU,
+         FZ_ORU, FZ_KA3, FZ_KARA3, FZ_GARI, FZ_GARU, FZ_KI4, FZ_KIRI, FZ_GI,
+         FZ_KU3, FZ_KURAI, FZ_KURU, FZ_GU, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4,
+         FZ_SHIMAU, FZ_JIRU, FZ_SU3, FZ_SURU, FZ_ZUTSU, FZ_ZURU, FZ_DAKE,
+         FZ_DANO, FZ_CHI, FZ_TSU, FZ_TO4, FZ_NAGARA, FZ_NAZO, FZ_NADO,
+         FZ_NARI2, FZ_NARI3, FZ_NARU2, FZ_NI3, FZ_NU, FZ_NU2, FZ_NO2, FZ_NO3,
+         FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BU, FZ_HODO, FZ_MADE, FZ_MI, FZ_MI4,
+         FZ_MU, FZ_ME2, FZ_YA2, FZ_YARA2, FZ_YARU, FZ_YORU, FZ_RI2, FZ_RU,
+         FZ_RU2, FZ_RU3, FZ_WA3}},
+
+       /* KakuJo-Wo */
+       {FZ_WO, 1, {0x2472}, 59,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_KA3, FZ_KARA3, FZ_GARI, FZ_KI4,
+         FZ_KIRI, FZ_GI, FZ_KURAI, FZ_GURAI, FZ_GE2, FZ_KOSO, FZ_SA3, FZ_SAE,
+         FZ_ZARU, FZ_SHI4, FZ_SURA, FZ_ZUTSU, FZ_DAKE, FZ_DANO, FZ_CHI,
+         FZ_TO4, FZ_NAZO, FZ_NADO, FZ_NARI2, FZ_NARI3, FZ_NI3, FZ_NO2, FZ_NO3,
+         FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_HODO, FZ_MADE, FZ_MI, FZ_MI4, FZ_ME2,
+         FZ_YA2, FZ_YARA2, FZ_RI2}},
+
+       /* KakuJo-He */
+       {FZ_HE, 1, {0x2458}, 51,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_SA_MEI,
+         HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH,
+         HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_GARI, FZ_KI4, FZ_KIRI, FZ_GI,
+         FZ_KURAI, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4, FZ_ZUTSU, FZ_DAKE,
+         FZ_DANO, FZ_CHI, FZ_TO4, FZ_NAZO, FZ_NADO, FZ_NARI3, FZ_NI3, FZ_NO2,
+         FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_HODO, FZ_MI, FZ_MI4, FZ_ME2,
+         FZ_YA2, FZ_YARA2, FZ_RI2}},
+
+       /* KakuJo-Ni */
+       {FZ_NI6, 1, {0x244b}, 105,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_1DOU,
+         HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_FUKUSI, HN_SETUBI, HN_JOSUU,
+         HN_SETOJO, HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_SA_M_S, HN_SETUDO,
+         FZ_I4, FZ_I5, FZ_I8, FZ_IKE, FZ_E, FZ_OKE, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA3, FZ_GARI, FZ_GARI2, FZ_GARE, FZ_KI2, FZ_KI4, FZ_KI5,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KURAI, FZ_KURE3, FZ_GURAI, FZ_KE, FZ_GE,
+         FZ_GE2, FZ_SA3, FZ_SAE, FZ_SASE, FZ_SARE, FZ_SHI4, FZ_SHI5, FZ_SHI6,
+         FZ_SHI7, FZ_SHIMAE, FZ_SHIME, FZ_JI, FZ_JI2, FZ_SURA, FZ_ZU,
+         FZ_ZUTSU, FZ_SE2, FZ_SE4, FZ_DAKE, FZ_DANO, FZ_CHI, FZ_CHI2, FZ_TE,
+         FZ_DEKI, FZ_TO4, FZ_NAZO, FZ_NADO, FZ_NARI2, FZ_NARI3, FZ_NARE2,
+         FZ_NI3, FZ_NI4, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI,
+         FZ_BI2, FZ_BE, FZ_HODO, FZ_MADE, FZ_MI, FZ_MI2, FZ_MI3, FZ_MI4,
+         FZ_ME, FZ_ME2, FZ_YA2, FZ_YARA2, FZ_YARE, FZ_YUE, FZ_RARE, FZ_RI2,
+         FZ_RI3, FZ_RE2, FZ_RE5}},
+
+       /* KakuJo-No */
+       {FZ_NO3, 1, {0x244e}, 74,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_1YOU,
+         HN_SA_MEI, HN_KEIDOU, HN_FUKUSI, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_I5,
+         FZ_KA3, FZ_KARA3, FZ_GARI, FZ_GARI2, FZ_KI4, FZ_KI5, FZ_KIRI, FZ_GI,
+         FZ_GI2, FZ_KURAI, FZ_GURAI, FZ_GE2, FZ_SA3, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_JI, FZ_ZUTSU, FZ_DAKE, FZ_CHI, FZ_CHI2, FZ_TE2, FZ_DE4,
+         FZ_DE5, FZ_TO3, FZ_TO4, FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI2,
+         FZ_NARI3, FZ_NI3, FZ_NI4, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BI2, FZ_HE,
+         FZ_HODO, FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_ME2, FZ_YA2, FZ_YARA2,
+         FZ_YORI2, FZ_RI2, FZ_RI3}},
+
+       /* KakuJo-Ga */
+       {FZ_GA4, 1, {0x242c}, 74,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_GIJI,
+         HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI, HN_1YOU,
+         HN_SA_MEI, HN_SETUBI, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN,
+         HN_SETUCH, HN_SA_M_S, HN_SETUDO, FZ_I4, FZ_I5, FZ_KA3, FZ_KARA3,
+         FZ_GARI, FZ_GARI2, FZ_KI4, FZ_KI5, FZ_KIRI, FZ_GI, FZ_GI2, FZ_KURAI,
+         FZ_GURAI, FZ_GE2, FZ_KOSO, FZ_SA3, FZ_SAE, FZ_SHI4, FZ_SHI5, FZ_SHI6,
+         FZ_SHIKA, FZ_JI, FZ_SURA, FZ_ZUTSU, FZ_DAKE, FZ_DANO, FZ_CHI,
+         FZ_CHI2, FZ_DEMO, FZ_TO4, FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARI3,
+         FZ_NI3, FZ_NI4, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_BAKARI, FZ_BI, FZ_BI2,
+         FZ_HODO, FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_ME2, FZ_MO2, FZ_YA2,
+         FZ_YARA2, FZ_RI2, FZ_RI3}},
+
+       /* ShuuJo-Na */
+       {FZ_NA6, 1, {0x244a}, 23,
+        {FZ_I9, FZ_IKU, FZ_U3, FZ_OKU, FZ_ORU, FZ_GARU, FZ_KU3, FZ_KURU,
+         FZ_GU, FZ_SHIMAU, FZ_JIRU, FZ_SU3, FZ_SURU, FZ_ZURU, FZ_TSU,
+         FZ_NARU2, FZ_NU2, FZ_BU, FZ_MU, FZ_YARU, FZ_YORU, FZ_RU2, FZ_RU3}},
+
+       /* ShuuJo-Wa */
+       {FZ_WA3, 1, {0x246f}, 33,
+        {FZ_I, FZ_I7, FZ_IKU, FZ_U3, FZ_OKU, FZ_ORU, FZ_GARU, FZ_KU3, FZ_KURU,
+         FZ_GU, FZ_SHIMAU, FZ_JIRU, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURU, FZ_ZURU,
+         FZ_TA, FZ_DA, FZ_DA2, FZ_DA3, FZ_TSU, FZ_DESU, FZ_NARU2, FZ_NU2,
+         FZ_BU, FZ_MU, FZ_YARU, FZ_YORU, FZ_RU, FZ_RU2, FZ_RU3, FZ_N}},
+
+       /* KuTouten */
+       {FZ_KUTEN, 1, {0x2123}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_ZENPERIOD, 1, {0x2125}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_PERIOD, 1, {'.'}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_QUEST, 1, {'?'}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_ZENQUEST, 1, {0x2129}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_BAN, 1, {'!'}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_ZENBAN, 1, {0x212a}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_TOUTEN, 1, {0x2122}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+       {FZ_COMMA, 1, {','}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+};
+#define        CONLISTSIZ      arraysize(conlist)
+static contable shuutanlist[] = {
+       /* svkanren */
+       {SH_svkanren, 0, {0}, 238,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I6,
+         FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U, FZ_U2, FZ_U3, FZ_E,
+         FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE, FZ_KA3, FZ_KANE,
+         FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4, FZ_GARI, FZ_GARI2,
+         FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5, FZ_KI7,
+         FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4, FZ_KU5,
+         FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI, FZ_KOSO, FZ_SA3,
+         FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5,
+         FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU,
+         FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2, FZ_JIYO, FZ_JIRU,
+         FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU, FZ_ZU, FZ_ZUTSU,
+         FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO, FZ_SOU, FZ_SOU2,
+         FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA, FZ_DA2, FZ_DA3,
+         FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE,
+         FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO,
+         FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6, FZ_NAGARA, FZ_NAZO,
+         FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3, FZ_NARU, FZ_NARU2,
+         FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5, FZ_NI6,
+         FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO, FZ_MAI,
+         FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME, FZ_ME2,
+         FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE, FZ_XYUU,
+         FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU, FZ_YORE,
+         FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2, FZ_RU3, FZ_RE,
+         FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+
+       /* svkantan */
+       {SH_svkantan, 0, {0}, 264,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_KA5DOU, HN_GA5DOU, HN_SA5DOU, HN_TA5DOU, HN_NA5DOU, HN_BA5DOU,
+         HN_MA5DOU, HN_RA5DOU, HN_WA5DOU, HN_1DOU, HN_SAHDOU, HN_ZAHDOU,
+         HN_1YOU, HN_KA_IKU, HN_KO_KO, HN_KI_KI, HN_KU_KU, HN_SA_MEI,
+         HN_SI_SI, HN_SU_SU, HN_SE_SE, HN_RA_KUD, HN_KEIYOU, HN_KEIDOU,
+         HN_KD_TAR, HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_TANKAN, HN_SETTOU,
+         HN_SETUBI, HN_SETOSU, HN_JOSUU, HN_SETOJO, HN_SETUJO, HN_SETUJN,
+         HN_SETOCH, HN_SETUCH, HN_SETO_O, HN_SETO_K, HN_KD_STB, HN_SA_M_S,
+         HN_SETUDO, HN_KE_SED, FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST,
+         FZ_TOUTEN, FZ_KUTEN, FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I,
+         FZ_I4, FZ_I5, FZ_I6, FZ_I7, FZ_I9, FZ_IKI, FZ_IKU, FZ_IKE, FZ_U,
+         FZ_U2, FZ_U3, FZ_E, FZ_OKI, FZ_OKU, FZ_OKE, FZ_ORI, FZ_ORU, FZ_ORE,
+         FZ_KA3, FZ_KANE, FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4,
+         FZ_GARI, FZ_GARI2, FZ_GARU, FZ_GARE, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4,
+         FZ_KI5, FZ_KI7, FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3,
+         FZ_KU4, FZ_KU5, FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE, FZ_KURE3,
+         FZ_GU, FZ_GURAI, FZ_KE, FZ_KEDO, FZ_KEREDO, FZ_GE, FZ_GE2, FZ_KOI,
+         FZ_KOSO, FZ_SA3, FZ_SAE, FZ_SASE, FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2,
+         FZ_SHI4, FZ_SHI5, FZ_SHI6, FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA,
+         FZ_SHIMAI, FZ_SHIMAU, FZ_SHIMAE, FZ_SHIME, FZ_SHIRO, FZ_JI, FZ_JI2,
+         FZ_JIYO, FZ_JIRU, FZ_JIRO, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU,
+         FZ_ZU, FZ_ZUTSU, FZ_ZURU, FZ_SE, FZ_SE2, FZ_SE4, FZ_SEYO, FZ_ZEYO,
+         FZ_SOU, FZ_SOU2, FZ_TA, FZ_TARI, FZ_TARI2, FZ_TARU, FZ_TARE, FZ_DA,
+         FZ_DA2, FZ_DA3, FZ_DAKE, FZ_DANO, FZ_DARI, FZ_CHI, FZ_CHI2, FZ_TSU,
+         FZ_TSUTSU, FZ_TE, FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4, FZ_DE5, FZ_DEKI,
+         FZ_DESU, FZ_DEMO, FZ_TO, FZ_TO3, FZ_TO4, FZ_DO, FZ_NA, FZ_NA6,
+         FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2, FZ_NARI3,
+         FZ_NARU, FZ_NARU2, FZ_NARE, FZ_NARE2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4,
+         FZ_NI5, FZ_NI6, FZ_NU, FZ_NU2, FZ_NE, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA,
+         FZ_BA3, FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_BE, FZ_HODO,
+         FZ_MAI, FZ_MADE, FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME,
+         FZ_ME2, FZ_MO2, FZ_YA, FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_YARE,
+         FZ_XYUU, FZ_YUE, FZ_YO, FZ_YOU, FZ_YOU2, FZ_YORI, FZ_YORI2, FZ_YORU,
+         FZ_YORE, FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3, FZ_RU, FZ_RU2,
+         FZ_RU3, FZ_RE, FZ_RE2, FZ_RE5, FZ_RO4, FZ_WA3, FZ_WO, FZ_N}},
+
+       /* svbunsetsu */
+       {SH_svbunsetsu, 0, {0}, 206,
+        {HN_SUUJI, HN_KANA, HN_EISUU, HN_KIGOU, HN_HEIKAKKO, HN_KAIKAKKO,
+         HN_GIJI, HN_MEISHI, HN_JINMEI, HN_CHIMEI, HN_KOYUU, HN_SUUSHI,
+         HN_1DOU, HN_1YOU, HN_SA_MEI, HN_SI_SI, HN_KEIDOU, HN_KD_TAR,
+         HN_FUKUSI, HN_RENTAI, HN_SETKAN, HN_SETUBI, HN_JOSUU, HN_SETOJO,
+         HN_SETUJO, HN_SETUJN, HN_SETUCH, HN_KD_STB, HN_SA_M_S, HN_SETUDO,
+         FZ_BAN, FZ_COMMA, FZ_PERIOD, FZ_QUEST, FZ_TOUTEN, FZ_KUTEN,
+         FZ_ZENPERIOD, FZ_ZENQUEST, FZ_ZENBAN, FZ_I, FZ_I4, FZ_I5, FZ_I7,
+         FZ_I9, FZ_IKI, FZ_IKU, FZ_U, FZ_U2, FZ_U3, FZ_OKI, FZ_OKU, FZ_ORI,
+         FZ_ORU, FZ_KA3, FZ_KANE, FZ_KARA2, FZ_KARA3, FZ_KARE, FZ_GA3, FZ_GA4,
+         FZ_GARI, FZ_GARI2, FZ_GARU, FZ_KI, FZ_KI2, FZ_KI3, FZ_KI4, FZ_KI5,
+         FZ_KI7, FZ_KIRI, FZ_GI, FZ_GI2, FZ_KU, FZ_KU2, FZ_KU3, FZ_KU4,
+         FZ_KU5, FZ_KUSENI, FZ_KURAI, FZ_KURU, FZ_KURE3, FZ_GU, FZ_GURAI,
+         FZ_KEDO, FZ_KEREDO, FZ_GE2, FZ_KOSO, FZ_SA3, FZ_SAE, FZ_SASE,
+         FZ_SARE, FZ_ZARU, FZ_SHI, FZ_SHI2, FZ_SHI4, FZ_SHI5, FZ_SHI6,
+         FZ_SHI7, FZ_SHI8, FZ_SHI9, FZ_SHIKA, FZ_SHIMAI, FZ_SHIMAU, FZ_SHIME,
+         FZ_JI, FZ_JI2, FZ_JIRU, FZ_SU, FZ_SU2, FZ_SU3, FZ_SURA, FZ_SURU,
+         FZ_ZU, FZ_ZUTSU, FZ_ZURU, FZ_SE4, FZ_SOU, FZ_SOU2, FZ_TA, FZ_TARI,
+         FZ_TARI2, FZ_TARU, FZ_DA, FZ_DA2, FZ_DA3, FZ_DAKE, FZ_DANO, FZ_DARI,
+         FZ_CHI, FZ_CHI2, FZ_TSU, FZ_TSUTSU, FZ_TE2, FZ_DE, FZ_DE2, FZ_DE4,
+         FZ_DE5, FZ_DEKI, FZ_DESU, FZ_DEMO, FZ_TO, FZ_TO3, FZ_TO4, FZ_DO,
+         FZ_NA, FZ_NAGARA, FZ_NAZO, FZ_NADO, FZ_NARA, FZ_NARI, FZ_NARI2,
+         FZ_NARI3, FZ_NARU, FZ_NARU2, FZ_NI, FZ_NI2, FZ_NI3, FZ_NI4, FZ_NI5,
+         FZ_NI6, FZ_NU, FZ_NU2, FZ_NO2, FZ_NO3, FZ_NOMI, FZ_HA, FZ_BA3,
+         FZ_BAKARI, FZ_BI, FZ_BI2, FZ_BU, FZ_HE, FZ_HODO, FZ_MAI, FZ_MADE,
+         FZ_MI, FZ_MI2, FZ_MI4, FZ_MITAI, FZ_MU, FZ_ME2, FZ_MO2, FZ_YA,
+         FZ_YA2, FZ_YARA2, FZ_YARI, FZ_YARU, FZ_XYUU, FZ_YUE, FZ_YOU, FZ_YOU2,
+         FZ_YORI, FZ_YORI2, FZ_YORU, FZ_RA, FZ_RARE, FZ_RI, FZ_RI2, FZ_RI3,
+         FZ_RU, FZ_RU2, FZ_RU3, FZ_RE5, FZ_WA3, FZ_WO, FZ_N}},
+};
+#define        SHUUTANLISTSIZ  arraysize(shuutanlist)
+
+
+static u_char *NEAR realloc2(buf, size)
+VOID_P buf;
+ALLOC_T size;
+{
+       return((buf) ? (u_char *)realloc(buf, size) : (u_char *)malloc(size));
+}
+
+static int NEAR addstrbuf(len)
+ALLOC_T len;
+{
+       u_char *cp;
+       ALLOC_T size;
+
+       len += maxstr;
+       size = (strbufsize) ? strbufsize : BUFUNIT;
+       while (size < len) size *= 2;
+       if (size <= strbufsize) return(0);
+       if (!(cp = realloc2(strbuf, size))) return(-1);
+       strbuf = cp;
+       strbufsize = size;
+
+       return(0);
+}
+
+static int NEAR adddictlist(ptr, klen, size)
+ALLOC_T ptr, klen, size;
+{
+       dicttable *new;
+
+       if (maxdict >= dictlistsize) {
+               new = (dicttable *)realloc2(dictlist,
+                       (dictlistsize + BUFUNIT) * sizeof(dicttable));
+               if (!new) return(-1);
+               dictlist = new;
+               dictlistsize += BUFUNIT;
+       }
+
+       dictlist[maxdict].ptr = ptr;
+       dictlist[maxdict].klen = klen;
+       dictlist[maxdict].size = size;
+       dictlist[maxdict].max = 0;
+       maxdict++;
+
+       return(0);
+}
+
+static int NEAR setkbuf(klen, kbuf)
+int klen;
+u_short *kbuf;
+{
+       int i;
+
+       if (addstrbuf(1 + klen * 2) < 0) return(-1);
+       strbuf[maxstr++] = klen;
+       for (i = 0; i < klen; i++) {
+               strbuf[maxstr++] = (kbuf[i] & 0xff);
+               strbuf[maxstr++] = ((kbuf[i] >> 8) & 0xff);
+       }
+
+       return(0);
+}
+
+static int NEAR setjisbuf(s, roman, bias)
+char *s;
+int roman, bias;
+{
+       u_short kbuf[MAXUTYPE(u_char) - 1];
+       int i, n;
+
+       n = str2jis(kbuf, arraysize(kbuf), s);
+       if (roman) {
+               for (i = 0; i < n - 1; i++) {
+                       if (kbuf[i] != J_U || kbuf[i + 1] != J_DAKUTEN)
+                               continue;
+                       kbuf[i] = J_VU;
+                       memmove((char *)&(kbuf[i + 1]), (char *)&(kbuf[i + 2]),
+                               (--n - i - 1) * sizeof(u_short));
+               }
+       }
+       if (bias < BIASLISTSIZ) {
+               for (i = 0; i < biaslist[bias].klen; i++)
+                       if (kbuf[n - 1] == biaslist[bias].kbuf[i]) break;
+               if (i < biaslist[bias].klen) n--;
+       }
+
+       return(setkbuf(n, kbuf));
+}
+
+static int NEAR setword(w)
+u_int w;
+{
+       if (addstrbuf(2) < 0) return(-1);
+       strbuf[maxstr++] = (w & 0xff);
+       strbuf[maxstr++] = ((w >> 8) & 0xff);
+
+       return(0);
+}
+
+static int NEAR sethinsi(len, idlist)
+int len;
+u_short *idlist;
+{
+       int i;
+
+       if (addstrbuf(2 + len * 2) < 0) return(-1);
+       strbuf[maxstr++] = (len & 0xff);
+       strbuf[maxstr++] = ((len >> 8) & 0xff);
+       for (i = 0; i < len; i++) {
+               strbuf[maxstr++] = (idlist[i] & 0xff);
+               strbuf[maxstr++] = ((idlist[i] >> 8) & 0xff);
+       }
+
+       return(0);
+}
+
+static int cmphinsi(vp1, vp2)
+CONST VOID_P vp1;
+CONST VOID_P vp2;
+{
+       hinsitable *hp1, *hp2;
+       u_short *buf1, *buf2;
+       int i, klen1, klen2;
+
+       hp1 = (hinsitable *)vp1;
+       hp2 = (hinsitable *)vp2;
+       buf1 = hp1 -> kbuf;
+       buf2 = hp2 -> kbuf;
+       klen1 = hp1 -> klen;
+       klen2 = hp2 -> klen;
+
+       for (i = 0; i < klen1; i++) {
+               if (i >= klen2) return(1);
+               if (buf1[i] > buf2[i]) return(1);
+               else if (buf1[i] < buf2[i]) return(-1);
+       }
+
+       return(klen1 - klen2);
+}
+
+static int NEAR addhinsi(hmax, idlist, id, hstr)
+int hmax;
+u_short *idlist;
+int id;
+char *hstr;
+{
+       int n;
+
+       for (n = 0; n < hmax; n++) if (idlist[n] == id) return(hmax);
+       if (hmax >= MAXHINSI) {
+               if (verbose) fprintf(stderr,
+                       "%s: Too many Hinsi fields.\n", hstr);
+               return(hmax);
+       }
+       idlist[hmax++] = id;
+
+       return(hmax);
+}
+
+static int NEAR _gethinsi(hmax, idlist, hstr, dictp)
+int hmax;
+u_short *idlist;
+char *hstr;
+int *dictp;
+{
+       hinsitable tmp;
+       int i, n, min, max;
+
+       if (!hstr || !*hstr) return(hmax);
+       tmp.klen = str2jis(tmp.kbuf, MAXHINSILEN, hstr);
+       min = -1;
+       max = HINSILISTSIZ;
+       for (;;) {
+               i = (min + max) / 2;
+               if (i <= min || i >= max) {
+                       if (verbose) fprintf(stderr,
+                               "%s: Unknown Hinsi srting (ignored).\n", hstr);
+                       return(hmax);
+               }
+               n = cmphinsi(&(hinsilist[i]), &tmp);
+               if (n < 0) min = i;
+               else if (n > 0) max = i;
+               else break;
+       }
+
+       *dictp = hinsilist[i].dict;
+       hmax = addhinsi(hmax, idlist, hinsilist[i].id, hstr);
+       for (n = 0; n < HINSISETLISTSIZ; n++)
+               if (hinsisetlist[n].id == hinsilist[i].id) break;
+       if (n < HINSISETLISTSIZ) for (i = 0; i < hinsisetlist[n].klen; i++)
+               hmax = addhinsi(hmax, idlist, hinsisetlist[n].set[i], hstr);
+
+       return(hmax);
+}
+
+static int NEAR gethinsi(hmax, idlist, hstr, dictp)
+int hmax;
+u_short *idlist;
+char *hstr;
+int *dictp;
+{
+       char *cp, *next;
+       int dict, mask;
+
+       next = hstr;
+       while ((cp = next)) {
+               mask = ~DIC_SJ3;
+               if ((next = strchr(cp, ':'))) {
+                       mask = !mask;
+                       *(next++) = '\0';
+               }
+               hmax = _gethinsi(hmax, idlist, cp, &dict);
+               *dictp |= (dict & mask);
+       }
+
+       return(hmax);
+}
+
+static int cmpidlist(vp1, vp2)
+CONST VOID_P vp1;
+CONST VOID_P vp2;
+{
+       u_short *sp1, *sp2;
+
+       sp1 = (u_short *)vp1;
+       sp2 = (u_short *)vp2;
+
+       return(*sp1 - *sp2);
+}
+
+static int NEAR adddict(str, kstr, hstr, freq)
+char *str, *kstr, *hstr;
+u_int freq;
+{
+       ALLOC_T ptr, klen;
+       u_short idlist[MAXHINSI];
+       char *cp, *next;
+       int i, n, dict, hmax;
+
+       dict = hmax = 0;
+       next = hstr;
+       while ((cp = next)) {
+               if ((next = strchr(cp, '/'))) *(next++) = '\0';
+               hmax = gethinsi(hmax, idlist, cp, &dict);
+       }
+       qsort(idlist, hmax, sizeof(u_short), cmpidlist);
+       n = BIASLISTSIZ;
+       if (!(dict & DIC_WNN)) for (i = 0; i < hmax; i++) {
+               for (n = 0; n < BIASLISTSIZ; n++)
+                       if (idlist[i] == biaslist[n].id) break;
+               if (n < BIASLISTSIZ) break;
+       }
+
+       ptr = maxstr;
+       if (setjisbuf(str, 1, n) < 0) return(-1);
+       klen = maxstr - ptr;
+       if (setjisbuf(kstr, 0, n) < 0) return(-1);
+       if (setword(freq) < 0) return(-1);
+       if (needhinsi && setkbuf(hmax, idlist) < 0) return(-1);
+
+       return(adddictlist(ptr, klen, maxstr - ptr - klen));
+}
+
+static u_int NEAR getfreq(cp)
+char *cp;
+{
+       long freq;
+
+       if (!cp || !*cp) freq = 0L;
+       else {
+               *(cp++) = '\0';
+               if ((freq = strtol(cp, NULL, 10)) < 0L) freq = 0L;
+               else if (freq > MAXUTYPE(u_short)) freq = MAXUTYPE(u_short);
+       }
+
+       return((u_int)freq);
+}
+
+static int NEAR addcannadict(str, buf)
+char *str, *buf;
+{
+       char *cp, *kstr;
+       u_int freq;
+       int n, ptr;
+
+       cp = NULL;
+       for (ptr = 1; buf[ptr]; ptr++) {
+               if (buf[ptr] == '*') cp = &(buf[ptr]);
+               else if (isspace2(buf[ptr])) break;
+               else if (!isalnum2(buf[ptr])) return(0);
+       }
+       if (ptr <= 1) return(0);
+       buf[ptr++] = '\0';
+
+       freq = getfreq(cp);
+       while (buf[ptr] && isspace2(buf[ptr])) ptr++;
+
+       for (n = 0; buf[ptr]; n++) {
+               if (buf[ptr] == '#') {
+                       if (addcannadict(str, &(buf[ptr])) < 0) return(-1);
+                       return(1);
+               }
+
+               kstr = &(buf[ptr]);
+               while (buf[ptr] && !isspace2(buf[ptr])) ptr++;
+               buf[ptr++] = '\0';
+               if (*kstr == '@') kstr = str;
+               if (adddict(str, kstr, buf, freq) < 0) return(-1);
+       }
+
+       return(1);
+}
+
+static int NEAR convdict(size, fp)
+off_t size;
+FILE *fp;
+{
+       char *str, *kstr, *hstr, buf[MAXLINESTR + 1];
+       long ofs;
+       int n, ptr, tmp;
+
+       n = 0;
+       while (fgets(buf, sizeof(buf), fp)) {
+               if (verbose && size) {
+                       if ((ofs = ftell(fp)) < 0L) ofs = 0L;
+                       tmp = (int)((ofs * MAXRANGE) / size);
+                       for (; n < tmp; n++) fputc(VERBOSECHAR, stdout);
+                       fflush(stdout);
+               }
+
+               ptr = 0;
+               while (buf[ptr] && isspace2(buf[ptr])) ptr++;
+               if (!buf[ptr]) continue;
+
+               str = &(buf[ptr]);
+               for (; buf[ptr]; ptr++) {
+                       if (iskanji1(buf, ptr)) ptr++;
+                       else if (!iskana1(buf, &ptr)) break;
+               }
+               if (!buf[ptr] || !isspace2(buf[ptr])) continue;
+
+               buf[ptr++] = '\0';
+               while (buf[ptr] && isspace2(buf[ptr])) ptr++;
+               if (!buf[ptr]) continue;
+
+               if (buf[ptr] == '#'
+               && (tmp = addcannadict(str, &(buf[ptr])))) {
+                       if (tmp < 0) return(-1);
+                       continue;
+               }
+
+               kstr = &(buf[ptr++]);
+               while (buf[ptr] && !isspace2(buf[ptr])) ptr++;
+
+               if (!(buf[ptr])) hstr = NULL;
+               else {
+                       buf[ptr++] = '\0';
+                       while (buf[ptr] && isspace2(buf[ptr])) ptr++;
+                       if (!buf[ptr]) hstr = NULL;
+                       else {
+                               hstr = &(buf[ptr++]);
+                               while (buf[ptr] && !isspace2(buf[ptr])) ptr++;
+                       }
+               }
+
+               if (adddict(str, kstr, hstr, getfreq(&(buf[ptr]))) < 0)
+                       return(-1);
+       }
+       if (verbose) {
+               for (; n < MAXRANGE; n++) fputc(VERBOSECHAR, stdout);
+               fputs("  done.\n", stdout);
+       }
+
+       return(0);
+}
+
+static int NEAR addhinsidict(VOID_A)
+{
+       ALLOC_T ptr, klen;
+       int i;
+
+       for (i = 0; i < CONLISTSIZ; i++) {
+               ptr = maxstr;
+               if (setkbuf(conlist[i].klen, conlist[i].kbuf) < 0) return(-1);
+               klen = maxstr - ptr;
+               if (setkbuf(conlist[i].klen, conlist[i].kbuf) < 0) return(-1);
+               if (setword(0) < 0) return(-1);
+               if (setkbuf(1, &(conlist[i].id)) < 0) return(-1);
+
+               if (adddictlist(ptr, klen, maxstr - ptr - klen)) return(-1);
+       }
+
+       return(0);
+}
+
+static int NEAR addconlist(n, max, list)
+int n, max;
+contable *list;
+{
+       ALLOC_T ptr;
+       u_short *idlist;
+       int i, len;
+
+       idlist = NULL;
+       len = 0;
+       for (i = 0; i < max; i++) if (list[i].id == n) {
+               idlist = list[i].next;
+               len = list[i].nlen;
+               break;
+       }
+
+       ptr = maxstr;
+       if (sethinsi(len, idlist) < 0) return(-1);
+       if (adddictlist(ptr, (ALLOC_T)0, maxstr - ptr)) return(-1);
+
+       return(0);
+}
+
+static int NEAR genconlist(VOID_A)
+{
+       int i;
+
+       free(dictlist);
+       dictlist = NULL;
+       maxdict = dictlistsize = 0L;
+       free(strbuf);
+       strbuf = NULL;
+       maxstr = strbufsize = (ALLOC_T)0;
+
+       for (i = HN_MIN; i < HN_MAX; i++)
+               if (addconlist(i, JIRCONLISTSIZ, jirconlist) < 0) return(-1);
+       for (i = FZ_MIN; i < FZ_MAX; i++)
+               if (addconlist(i, CONLISTSIZ, conlist) < 0) return(-1);
+       for (i = SH_MIN; i < SH_MAX; i++)
+               if (addconlist(i, SHUUTANLISTSIZ, shuutanlist) < 0) return(-1);
+
+       return(0);
+}
+
+static int NEAR cmpjisbuf(buf1, len1, buf2, len2)
+u_char *buf1;
+int len1;
+u_char *buf2;
+int len2;
+{
+       int i, c1, c2;
+
+       for (i = 0; i < len1; i += 2) {
+               if (i >= len2) return(1);
+               c1 = getword(buf1, i);
+               c2 = getword(buf2, i);
+               if (c1 > c2) return(1);
+               else if (c1 < c2) return(-1);
+       }
+       if (i < len2) return(-1);
+
+       return(0);
+}
+
+static int cmpdict(vp1, vp2)
+CONST VOID_P vp1;
+CONST VOID_P vp2;
+{
+       dicttable *dp1, *dp2;
+       u_char *buf1, *buf2;
+       int n, lvl, len1, len2;
+
+       dp1 = (dicttable *)vp1;
+       dp2 = (dicttable *)vp2;
+
+       lvl = 3;
+       buf1 = &(strbuf[dp1 -> ptr]);
+       buf2 = &(strbuf[dp2 -> ptr]);
+       len1 = *(buf1++) * 2;
+       len2 = *(buf2++) * 2;
+       if ((n = cmpjisbuf(buf1, len1, buf2, len2))) return(n * lvl);
+
+       lvl--;
+       buf1 += len1;
+       buf2 += len2;
+       len1 = *(buf1++) * 2;
+       len2 = *(buf2++) * 2;
+       if ((n = cmpjisbuf(buf1, len1, buf2, len2))) return(n * lvl);
+       if (!needhinsi) return(0);
+
+       lvl--;
+       buf1 += len1 + 2;
+       buf2 += len2 + 2;
+       len1 = *(buf1++) * 2;
+       len2 = *(buf2++) * 2;
+       if ((n = cmpjisbuf(buf1, len1, buf2, len2))) return(n * lvl);
+
+       return(0);
+}
+
+static int NEAR fputbyte(c, fp)
+int c;
+FILE *fp;
+{
+       return((fputc(c, fp) == EOF && ferror(fp)) ? -1 : 0);
+}
+
+static int NEAR fputword(w, fp)
+u_int w;
+FILE *fp;
+{
+       if (fputbyte((int)(w & 0xff), fp) < 0
+       || fputbyte((int)((w >> 8) & 0xff), fp) < 0)
+               return(-1);
+
+       return(0);
+}
+
+static int NEAR fputdword(dw, fp)
SHAR_EOF
  : || $echo 'restore of' 'FD-2.09.patch' 'failed'
fi
$echo 'End of' 'FD-2.09.patch' 'part' '9'
$echo 'File' 'FD-2.09.patch' 'is continued in part' '10'
echo 10 > _sh00904/seq
exit 0
-- 
                                               しらい たかし