shithub: riscv

Download patch

ref: 566c5121064c4872fd9b21bfa37b1f997d779f18
parent: 6972974f8df3ead3043185c046b7871110b85b79
author: rodri <rgl@antares-labs.eu>
date: Wed Jul 6 16:19:14 EDT 2022

add ktrans. こんにちは!

diff: cannot open b/sys/src/cmd/ktrans//null: file does not exist: 'b/sys/src/cmd/ktrans//null'
--- /dev/null
+++ b/lib/kanji.jisho
@@ -1,0 +1,1292 @@
+;; Medium size dictionary for SKK system
+;; version 8.1 of May 24, 1995.
+;;
+;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995
+;; Masahiko Sato (masahiko@sato.riec.tohoku.ac.jp),
+;; Hironobu Takahashi (takahasi@tiny.or.jp),
+;; Masahiro Doteguchi, Miki Inooka,
+;; Yukiyoshi Kameyama, Akihiko Sasaki, Dai Ando, Junichi Okukawa,
+;; Katsushi Sato and Nobuhiro Yamagishi
+;;
+;; This dictionary is free software; you can redistribute it and or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either versions 2, or (at your option)
+;; any later version.
+;;
+;; This dictionary 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 General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with SKK, see the file COPYING.	If not, write to the Free
+;; Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+;;
+;; re-arranged for ktrans of Plan 9 by Kenji Okamoto
+;; 			(okamoto@granite.cias.osakafu-u.ac.jp).
+;;					Feb. 17, 2000
+;; okuri-ari entries.
+あb	浴
+あe	合 会 逢
+あg	挙 揚 上
+あi	合 会 空 開
+あk	飽 開 明 空
+あo	合
+あr	有 在
+あs	悪
+あt	当 有 挙 合 会 蓬
+あu	合 逢 会
+あw	合 会
+あいs	愛
+あいかわr	相変
+あおi	青
+あおk	青
+あかi	赤
+あかn	赤
+あかr	明
+あきr	明
+あきらm	諦
+あさi	浅
+あさk	浅
+あずk	預
+あせt	焦
+あそb	遊
+あそn	遊
+あたe	与
+あたr	辺 当
+あたt	当 的
+あたたk	暖
+あたたm	暖
+あたらs	新
+あつi	熱 暑 厚
+あつk	厚 熱 暑
+あつk	厚 熱 暑
+あつs	暑
+あつm	集 厚
+あつかe	扱
+あつかi	扱
+あつかo	扱
+あつかt	扱
+あつかu	扱
+あつかw	扱
+あばr	暴
+あぶn	危
+あぶなi	危
+あまe	甘
+あまi	甘
+あまr	余
+あやs	怪
+あやまr	誤 謝
+あやまt	誤 謝
+あゆm	歩
+あらe	洗
+あらi	洗 荒
+あらt	新 洗
+あらu	洗
+あらz	非
+あらいだs	洗い出
+あらかじm	予
+あらそu	争
+あらたm	改
+あらわr	現
+あらわs	現 表
+ありがたi	有難
+ありがとu	有難
+あるi	歩
+あるk	歩
+あわi	淡
+あわr	憐 哀
+あわs	淡
+あんしんs	安心
+いe	言
+いi	言 良
+いk	行 生
+いm	居
+いn	居
+いo	言
+いr	入 居 煎
+いt	言 行 居
+いu	言 云
+いw	言
+いかr	怒
+いかt	怒
+いきおi	勢
+いきぎr	息切
+いくr	幾
+いくt	幾
+いくとおr	幾通
+いそg	急
+いそi	急
+いそがs	忙
+いたi	痛
+いたm	痛 傷 炒
+いたn	痛 傷
+いたr	至 到
+いたs	致
+いたt	至
+いただi	頂 戴
+いただk	頂 戴
+いだi	抱
+いだk	抱
+いちじるs	著
+いちずk	位置付
+いっt	言 行
+いっしょn	一緒
+いとs	愛
+いなm	否
+いのr	祈
+いのt	祈
+いれかe	入れ替
+いわi	祝
+いわu	祝
+うe	飢 植
+うi	浮
+うk	受 浮
+うm	埋 生 産
+うr	売 得
+うt	売 打
+うかがe	伺
+うかがi	伺
+うかがt	伺
+うかがu	窺 伺
+うかがw	伺
+うけつけn	受け付け
+うけつけr	受け付け
+うけとr	受け取 受取
+うけとt	受け取 受取
+うけわたs	受渡
+うごi	動
+うごk	動
+うしなt	失
+うしなu	失
+うしなw	失
+うすi	薄
+うすk	薄
+うすr	薄
+うずm	埋
+うたi	歌
+うたがi	疑
+うたがu	疑
+うたがw	疑
+うったe	訴
+うつr	移
+うつt	移
+うつs	移 映 写
+うつくs	美
+うながs	促
+うばt	奪
+うばu	奪
+うまi	旨 美 甘
+うまk	旨
+うみだs	生み出
+うらm	恨
+うらn	恨
+うらぎr	裏切
+うらなi	占
+うれs	嬉
+えm	得
+えn	得
+えr	得
+えt	得
+えがi	描
+えがk	描
+えらb	選
+えらi	偉
+えらn	選
+えらs	偉
+えんj	演
+えんz	演
+おc	落
+おe	終 追 負
+おi	置 追 負
+おk	起 置
+おo	追
+おp	追
+おr	降 折 居
+おs	押 惜 推
+おt	落 折 負 追
+おu	負 追
+おw	終 追
+おうj	応
+おうz	応
+おおi	多 大
+おおk	大 多
+おおm	多
+おおs	多
+おおt	覆
+おおu	覆
+おおw	覆
+おおくr	御送
+おかs	犯 可笑
+おがm	拝
+おきかe	置き換
+おぎなt	補
+おぎなu	補
+おくr	送 遅 贈
+おくt	送
+おこr	起 怒
+おこs	起
+おこたr	怠
+おこたt	怠
+おこなe	行
+おこなi	行
+おこなo	行
+おこなt	行
+おこなu	行
+おこなw	行
+おさm	収 治 納
+おしe	教
+おそi	遅
+おそk	遅
+おそr	恐
+おそs	遅
+おちこm	落ち込
+おちこn	落ち込
+おちつk	落着
+おとr	劣
+おとs	落
+おとどk	御届
+おどr	踊
+おどろi	驚
+おどろk	驚
+おなj	同
+おねがi	お願
+おぼe	覚 憶
+おもe	思
+おもi	思 重 想
+おもk	重
+おもm	重
+おもn	主
+おもs	重
+おもt	思 重 想
+おもu	思 想
+おもw	思
+おもしろi	面白
+おもしろk	面白
+おもしろs	面白
+およb	及
+およg	泳
+おろk	愚
+おわr	終
+おわt	終
+おんよm	音読
+かe	変 替 買 換
+かi	書 買
+かk	書 描 掛 欠 架 賭 駆 懸
+かm	噛
+かn	噛 兼
+かo	買
+かs	貸 加 化 課
+かt	買 勝 掛 刈
+かr	借 苅 刈 枯
+かu	買
+かw	買 替 変 代 換
+かいs	介
+かえr	帰 換
+かえs	返 帰
+かえt	帰 返
+かえりm	省
+かおr	香
+かおだt	顔立
+かおまk	顔負
+かかe	抱
+かかg	掲
+かかr	係
+かかw	関
+かがやi	輝
+かがやk	輝
+かきかe	書換
+かきこm	書込
+かきだs	書出
+かきなおs	書き直
+かきならb	書き並
+かぎr	限
+かぎt	限
+かくr	隠
+かくs	隠
+かくていs	確定
+かこm	囲
+かこn	囲
+かこu	囲
+かさn	重
+かざr	飾
+かざt	飾
+かしこi	賢
+かしこk	賢
+かすm	霞 掠 翳
+かせg	稼
+かぞe	数
+かたi	難 固 堅
+かたk	固
+かたm	固 傾
+かたr	語
+かたt	語
+かたつk	型付
+かたむi	傾
+かなs	悲
+かなu	叶
+かならz	必
+かまe	構
+かまi	構
+かまu	構
+かまw	構
+かよe	通
+かよi	通
+かよo	通
+かよt	通
+かよu	通
+かよw	通
+からm	絡
+からn	絡
+かるi	軽
+かるk	軽
+かるs	軽
+かれr	彼
+かわr	変 代 換
+かわt	変
+かわいg	可愛
+かわいi	可愛
+かわいk	可愛
+かわいr	可愛
+かんj	感
+かんs	関
+かんj	感
+かんz	感
+かんがe	考
+かんしゃs	感謝
+がんせき	岩石
+かんだかi	甲高
+かんちがi	勘違
+かんねんs	観念
+がんばr	頑張
+がんばt	頑張
+きe	消
+きg	気
+きi	聞 聴 効
+きk	聞 聴 効 利
+きm	決 来
+きr	切 着
+きs	記
+きt	来 切 着
+きかe	着換
+きさいs	記載
+きざm	刻
+きずt	傷
+きたn	汚
+きづi	気付
+きづk	気付
+きどr	気取
+きびs	厳
+きもt	気持
+きゅうs	窮
+きょうh	今日
+きよi	清
+きらi	嫌
+きらt	嫌
+きらu	嫌
+きらw	嫌
+きりかえn	切り替え
+きりかえr	切り替え
+きりたt	切り立
+きりはなs	切離
+きわm	極
+きわだt	際立
+きんちょうs	緊張
+ぎゃくじょうs	逆上
+ぎゃくもどr	逆戻
+ぎゃっこうs	逆行
+くe	喰 食
+くi	食 喰 悔
+くm	組
+くn	組
+くr	来 繰 暮
+くt	食 喰
+くu	食 喰
+くw	食 喰
+くぎr	区切
+くぎt	区切
+くずr	崩
+くだk	砕
+くだr	下
+くだs	下
+くだt	下
+くつがえs	覆
+くばr	配
+くばt	配
+くみあw	組合
+くみこm	組込
+くみとr	汲み取
+くもr	曇
+くやm	悔
+くらb	比 較
+くらi	暗
+くらk	暗
+くらs	暮
+くらt	食
+くりあw	繰り合
+くりかえs	繰り返
+くるi	狂
+くるs	苦
+くるt	狂
+くるu	狂
+くわe	加
+くわs	詳
+くわw	加
+けr	蹴
+けs	消 決
+けt	蹴
+けいえいs	経営
+けいこくs	警告
+けずr	削
+けずt	削
+けっs	決
+けんとうs	検討
+げんj	減
+げんz	減
+こe	越
+こg	焦
+こi	濃 来
+こk	濃
+こm	込 混
+こn	込 来 混
+こr	来 懲 凝
+こs	越 漉
+こt	凝
+こu	乞 請
+こy	来
+こうj	高
+こうしょう	鉱床 高尚
+こうぶつ	鉱物 好物
+こうりょs	考慮
+こえt	超
+こおr	凍
+こおt	凍
+こころh	心
+こころm	試
+こごe	凍
+こじs	誇示
+こたe	答 応
+ことn	異
+ことw	断
+ことごとk	尽
+ことなr	異
+ことわr	断
+ことわt	断
+このm	好
+こまk	細
+こまr	困
+こまt	困
+こまc	困
+こもr	籠 隠
+こもt	籠 隠
+ころb	転
+ころg	転
+ころn	転
+ころs	殺
+こわg	怖 恐
+こわi	恐 怖
+こわr	壊
+こわs	壊 恐
+ごぞんj	御存
+さe	冴
+さg	下
+さi	咲 裂 割
+さk	避 咲 裂 割
+さm	覚
+さr	去
+さs	指 差 刺
+さt	去
+さいわi	幸
+さかn	盛
+さかr	盛
+さがs	捜 探
+さきだt	先立
+さぐr	探
+さけb	叫
+さけn	叫
+ささe	支
+さずk	授
+さそi	誘
+さそt	誘
+さそu	誘
+さそw	誘
+さだk	定
+さだm	定
+さっs	察
+さっちs	察知
+さとr	悟
+さとt	悟
+さばk	捌
+さびs	寂 淋
+さみs	淋 寂
+さむi	寒
+さむk	寒
+さむs	寒
+さらn	更
+さらs	晒
+さわg	騒
+さわi	騒
+さわr	触
+さわt	触
+ざいせきs	在籍
+しi	強
+しk	敷
+しm	締 占 閉
+しn	死
+しr	知
+しt	知
+しあg	仕上
+しあわs	幸
+しかk	仕掛
+しかr	叱
+しかt	叱
+しかくi	四角
+しくm	仕組
+しずk	静
+しずm	沈
+しずn	沈
+したs	親
+したがe	従
+したがi	従
+したがt	従
+したがu	順 従
+したがw	従
+したたr	舌足
+しのb	偲 忍
+しのg	凌
+しはらi	支払
+しはらt	支払
+しはらu	支払
+しはらw	支払
+しばr	縛
+しぶi	渋
+しぶt	渋
+しぼr	絞
+しぼt	絞
+しめp	湿
+しめs	示
+しめきr	締切
+しゃべr	喋
+しゃべt	喋
+しょうj	生
+しょうs	称
+しょじs	所持
+しようs	使用
+しらb	調
+しるs	記
+しろi	白
+しろk	白
+しんj	信
+じてんd	時点
+じゅんj	準
+じゅんz	準
+すe	据
+すg	過
+すi	済 吸 空
+すk	好
+すm	済 住 澄
+すn	住 済
+すr	擦 摺 刷
+すt	捨 吸
+すu	吸
+すくi	救
+すくn	少
+すくu	救 巣く 抄 済
+すくw	救
+すぐr	優
+すこs	少
+すごi	凄
+すごk	凄
+すごm	凄
+すごs	凄 過
+すすm	進 勧 薦
+すすn	進
+すずs	涼
+すでn	既
+すなわc	即
+すなわt	即
+すばr	素晴
+すばやi	素早
+すばらs	素晴
+すべr	滑
+すべt	全 滑
+するどi	鋭
+すわr	座
+すわt	座
+ずm	済
+せk	急
+せm	責
+せs	接
+せいちょうs	成長
+せっきんs	接近
+せっしょくs	接触
+せつめいs	説明
+せまi	狭
+せまr	迫
+せまt	迫
+ぜっs	絶
+ぜんk	前
+そe	添
+そi	沿
+そm	初 染
+そt	沿 添
+そだt	育
+そなe	備
+そろe	揃
+そろi	揃
+そろt	揃
+そろu	揃
+ぞんj	存
+ぞんz	存
+たb	食
+たc	立
+たe	耐 絶
+たk	焚
+たm	溜
+たn	他
+たr	足 垂
+たs	足 達
+たt	立 建 断 経
+たいs	対 大
+たおr	倒
+たおs	倒
+たかi	高
+たかk	高
+たかm	高
+たかs	高
+たがi	互
+たしk	確
+たすk	助
+たずn	尋
+たたk	叩
+たたかt	闘 戦
+たたかu	闘
+ただs	但 正
+ただc	直
+ただt	直
+たとe	例
+たおr	倒
+たおr	倒
+たのm	頼
+たのn	頼
+たのs	楽
+たまr	溜
+たまt	溜
+ためn	為
+ためs	試
+たもt	保
+たよr	頼 便
+たよt	頼
+たんn	単
+だs	出
+たいおうs	対応
+だいすk	大好
+だまr	黙
+だまs	騙
+だまt	黙
+ちr	散
+ちいs	小
+ちかi	近
+ちかk	近
+ちかt	誓
+ちかu	誓
+ちかづi	近付
+ちがe	違
+ちがi	違
+ちがt	違
+ちがu	違
+ちがw	違
+ちじm	縮
+ちまよt	血迷
+つg	告 継
+つi	付 着 突 憑 継
+つk	付 着 突 漬 尽 使 点 尾
+つm	詰 積
+つn	積
+つr	連 釣 吊
+つt	突
+ついy	費
+つうj	通
+つうほうs	通報
+つかe	使
+つかi	使 遣
+つかm	捕 掴
+つかo	使
+つかr	疲
+つかt	使
+つかu	使
+つかw	使
+つかさどr	司
+つくr	作 創 造
+つくt	作
+つくろi	繕
+つくろu	繕
+つけくわe	付け加
+つずr	綴
+つたe	伝
+つたt	伝
+つたu	伝
+つたw	伝
+つだi	伝
+つつm	包
+つつしm	慎
+つつしn	謹
+つづi	続
+つづk	続
+つづr	綴
+つとm	勤 務 努
+つなg	繋
+つなi	継
+つねn	常
+つぶs	潰
+つみあげr	積み上げ
+つみあげt	積み上げ
+つめt	冷
+つづr	綴
+つよi	強
+つよk	強
+つらi	辛
+つらn	連
+づk	付
+てr	照
+てあt	手当
+ておくr	手遅
+てがk	手書
+てきs	適
+てごわi	手強
+てちがi	手違
+てつだe	手伝
+てつだi	手伝
+てつだt	手伝
+てつだu	手伝
+てつづk	手続
+てなおs	手直
+てびk	手引
+てまどr	手間取
+でm	出
+でn	出
+でr	出
+でs	出
+でt	出
+でy	出
+であt	出逢
+であu	出逢
+でかk	出掛
+できm	出来
+できn	出来
+できr	出来
+できs	出来
+できt	出来
+できz	出来
+でまわr	出回
+でそろi	出揃
+でそろu	出揃
+でそろt	出揃
+とb	飛 跳
+とe	問
+とi	問 解
+とj	綴 閉
+とk	解 説 溶 融 熔
+とm	止 泊
+とn	飛
+とr	取 撮 捕 採
+とt	取 撮 採
+とu	問
+とw	問
+とj	閉
+といあw	問い合
+とうj	投
+とおi	遠
+とおk	遠
+とおr	通
+とおs	遠 通
+とおt	通
+とおz	遠
+とくn	特
+とくちょうづk	特徴付
+とっしんs	突進
+ととのt	整
+ととのu	整
+とどi	届
+とどk	届
+とどm	留
+となr	隣
+とぼs	乏
+とまt	止
+ともr	燈
+ともなi	伴
+ともなt	伴
+ともなu	伴
+ともなw	伴
+とらe	捕
+とりあe	取り敢
+とりあげn	取り上げ
+とりあげr	取り上げ
+とりあげt	取り上げ
+とりあつかi	取り扱
+とりあつかu	取り扱
+とりあつかw	取り扱
+とりいr	取り入 取入
+とりかこm	取り囲
+とりだs	取出
+とりつk	取付け
+とりのぞi	取り除
+とりはかr	取り計
+とりまk	取り巻
+どおr	通
+どうせきs	同席
+なi	無 鳴 泣
+なk	無 鳴 亡 泣
+なr	慣 鳴 馴 成
+なs	無 成
+なt	鳴 成
+なおr	直 治
+なおs	直
+なおt	治 直
+なかb	半
+ながi	長 永
+ながk	長
+ながm	眺
+ながr	流
+ながs	流 長
+なごr	名残
+なさk	情
+なつやすm	夏休
+なづk	名付
+ななm	斜
+なにげn	何気
+なのr	名乗
+なまk	怠
+なめr	滑
+なやm	悩
+なやn	悩
+ならb	並
+ならi	習
+ならn	並
+ならt	習
+ならu	習
+ならべかw	並べ変
+ならべかe	並べ変
+なりたt	成り立
+にg	逃
+にr	煮 似
+にs	似
+にt	似 煮
+にy	煮
+にあi	似合
+にあt	似合
+にあu	似合
+にあw	似合
+におe	匂
+におi	匂
+におt	匂
+におu	匂
+におw	匂
+にがi	苦
+にぎr	握
+にぎt	握
+にぎw	賑
+にくi	憎 難
+にくs	憎 難
+にごr	濁
+にごs	濁
+になt	担
+になu	担
+にゅうしゅつりょくn	入出力
+にゅうしゅつりょくm	入出力
+にゅうしゅつりょくh	入出力
+ぬi	抜
+ぬk	抜
+ぬr	塗 濡
+ぬt	塗 縫
+ぬすm	盗
+ねr	寝 練
+ねt	寝
+ねがi	願
+ねがt	願
+ねがu	願
+ねびk	値引
+ねむi	眠
+ねむr	眠
+ねむt	眠
+ねらi	狙
+ねらt	狙
+ねらu	狙
+のb	述 伸 延
+のk	退
+のm	飲 呑
+のn	飲
+のr	乗 載
+のs	載 乗
+のt	乗 載
+のk	乗
+のこr	残
+のこs	残
+のこt	残
+のぞi	除 覗
+のぞk	除 覗
+のぞm	望 臨
+のぞn	望
+のぼr	登 昇
+のぼt	登
+はe	生
+はk	掃除
+はn	跳
+はr	張 貼 晴
+はs	発
+はt	果 貼 張
+はu	這
+はj	恥
+はz	恥
+はいr	入
+はいs	排
+はいt	入
+はかr	図 計 測
+はかt	計
+はげm	励
+はげs	激
+はこb	運
+はこn	運
+はしr	走
+はしt	走
+はじm	始 初
+はずs	外
+はたらi	働
+はたらk	働
+はなr	離
+はなs	離 話 放
+はなy	華
+はぶk	省
+はやi	速 早
+はやk	早 速
+はやm	早 速
+はやs	速 早
+はやt	流行
+はらe	払
+はらi	払
+はらo	払
+はらt	払
+はらu	払
+はらw	払
+はりきr	張り切
+はりきt	張り切
+はりだs	張り出
+はりつけn	張り付け
+はりつけr	張り付け
+はるk	遥
+はんs	反
+ばk	化
+ばあいわk	場合分
+ひe	冷
+ひi	引 弾
+ひk	引 弾 挽
+ひt	引
+ひy	冷
+ひかe	控
+ひかr	光
+ひがえr	日帰
+ひきうk	引き受
+ひきずr	引き摺
+ひきだs	引出
+ひくi	低
+ひくk	低
+ひくs	低
+ひさs	久
+ひそn	潜
+ひっこs	引越
+ひとs	等
+ひとt	一
+ひびk	響
+ひやs	冷
+ひょうへんs	豹変
+ひらi	開
+ひらk	開
+ひろg	広
+ひろi	広
+ひろk	広
+ひろu	拾
+ふe	増
+ふi	吹
+ふk	吹
+ふm	踏
+ふn	踏
+ふr	降 振 触
+ふs	付 伏
+ふt	降 振
+ふy	増
+ふかi	深
+ふかk	深
+ふかm	深
+ふくm	含
+ふくn	含
+ふせg	防
+ふせi	防
+ふたt	二
+ふたたb	再
+ふとi	太
+ふとk	太
+ふとs	太
+ふとどk	不届
+ふりこm	振り込
+ふりこn	振り込
+ふるb	古
+ふるe	震
+ふるi	古
+ふるk	古
+ふるm	古
+ふるs	古
+ふるさとh	故郷
+ふるまi	振舞
+ふるまu	振舞
+ぶr	振
+ぶあつi	分厚
+へr	減
+へt	減 経
+へんかんg	変換
+へんにゅうs	編入
+ほr	掘 惣
+ほs	欲
+ほうt	放
+ほこr	誇
+ほそi	細
+ほそk	細
+ほそm	細
+ほそs	細
+ほそながi	細長
+ほとんd	殆
+ほどこs	施
+ほねおr	骨折
+ぼうえいs	防衛
+まc	待
+まi	舞
+まj	交
+まk	負 巻
+まs	増
+まt	待
+まu	舞
+まj	混
+まz	混 先
+まいr	参 詣
+まいt	参 詣
+まかs	任
+まがr	曲
+まぎr	紛
+まさr	優 勝 増さ
+まじw	交
+まずs	貧
+またh	又
+まちがe	間違
+まちがi	間違
+まちがt	間違
+まちがu	間違
+まったk	全
+まどu	惑
+まなb	学
+まなn	学
+まねi	招
+まねk	招
+まもr	守
+まもt	守
+まよe	迷
+まよi	迷
+まよt	迷
+まよu	迷
+まよw	迷
+まるi	丸 円
+まるk	丸 円
+まわr	周 回
+まわs	周 回
+まわt	回
+みe	見
+みk	見
+みm	見
+みn	見 身
+みr	見 観
+みs	見
+みt	見 満 観
+みw	見
+みy	見
+みz	見
+みあt	見当
+みあw	見合
+みいだs	見出
+みおt	見落
+みおとs	見落
+みかk	見掛
+みきr	見切
+みぎまわr	右回
+みこm	見込
+みさだm	見定
+みしr	見知
+みじかi	短
+みじかm	短
+みだr	乱
+みだs	乱
+みちがu	見違
+みちびi	導
+みちびk	導
+みつk	見付
+みつもr	見積
+みとm	認
+みとおs	見通
+みなr	見慣
+みなs	皆
+みなおs	見直
+みにくi	醜
+みのr	実
+みはr	見張
+みはt	見張
+みまi	見舞
+みまもr	見守
+みやすk	見易
+みやぶr	見破
+むi	向
+むk	向
+むかe	迎
+むかi	向
+むくw	報
+むすb	結
+むすn	結
+むずかs	難
+むづかs	難
+めs	召
+めいr	滅入
+めいt	滅入
+めぐm	恵
+めざs	目指
+めずらs	珍
+めだt	目立
+めつk	目付
+もc	持
+もe	燃
+もr	盛 漏
+もt	持 盛
+もy	燃
+もうk	設 儲
+もうs	申
+もうしあg	申し上
+もちi	用
+もちこm	持ち込
+もちこn	持ち込
+もちだs	持出
+もっとm	最 尤
+もっぱr	専
+もとd	基
+もとm	求
+もとz	基
+もどr	戻
+もどs	戻
+もどt	戻
+もよr	最寄
+もらe	貰
+もらi	貰
+もらt	貰
+もらu	貰
+もらw	貰
+やi	焼
+やk	焼
+やm	止 病 已 罷
+やs	痩
+やくたt	役立
+やくだt	役立
+やさs	易 優
+やしなu	養
+やすi	安 易
+やすk	安 易
+やすm	休
+やすn	休
+やすs	安
+やすうr	安売
+やとu	雇
+やぶr	破 敗
+やわらかi	柔らか 軟らか
+やわらかk	柔らか 軟らか
+ゆk	行
+ゆr	揺
+ゆうs	有
+ゆえn	故
+ゆがm	歪
+ゆがn	歪
+ゆずr	譲
+ゆずt	譲
+ゆたk	豊
+ゆだn	委
+ゆるi	緩
+ゆるm	緩
+ゆるk	緩
+ゆるs	許
+よb	呼
+よi	良 酔
+よk	良
+よm	読 呼
+よn	読 呼
+よr	寄 因 依
+よs	寄 良
+よt	酔 寄
+よw	酔
+ようn	様
+ようs	要
+よくばr	欲張
+よごr	汚
+よせがk	寄書
+よびだs	呼出
+よみかk	読み書
+よみこm	読み込 読込
+よみだs	読み出 読出
+よろs	宜
+よろこb	喜 慶
+よろこn	喜
+よわi	弱
+よわk	弱
+よわm	弱
+よわs	弱
+よわt	弱
+よろこb	喜 慶
+よろこb	喜 慶
+ろんj	論
+ろんz	論
+わk	分 湧
+わr	割
+わかi	若
+わかk	若
+わかr	判 解 分
+わかs	若
+わかt	判 解 分
+わきでr	湧き出
+わきでt	湧き出
+わすr	忘
+わずk	僅
+わずらw	煩
+わたr	渡 亙
+わたs	渡
+わたt	渡
+わらe	笑
+わらi	笑
+わらt	笑
+わらu	笑
+わらw	笑
+わりあt	割当
+わりこm	割込
+わりこn	割り込
+わるi	悪
+わるk	悪
+わるs	悪
+;; okuri-nasi entries.
+あ	阿 娃 唖 亜
+あい	愛 哀 相 姶 挨 合
+あいさつ	挨拶
+あいしょう	愛称 相性
+あいじょう	愛情
+あいだ	間
+あいち	愛知
+あいちゃく	愛着
+あいて	相手
+あいぼう	相棒
+あいまい	曖昧
+あいよう	愛用
+あお	青
+あおい	葵 青井
+あおぞら	青空
+あおば	青葉
+あか	赤 垢
+あかご	赤子
--- /dev/null
+++ b/sys/man/1/ktrans
@@ -1,0 +1,106 @@
+.TH KTRANS 1
+.SH NAME
+ktrans \- language transliterator
+.SH SYNOPSIS
+.B ktrans
+.SH DESCRIPTION
+The
+.I ktrans
+program works with
+.IR kbdfs (8)
+to transliterate typed letter sequences into characters for languages
+that do not use the Latin character set, and pipes the result to
+.BR /dev/cons .
+The language is selected by typing a control character:
+.TP
+.B ctl-t
+return to default English mode (no transliteration).
+.TP
+.B ctl-n
+Japanese hiragana: interpret lower-case letters as a Hepburn
+representation of hiragana.  In this mode, typing ctl-\\ looks up the
+last `word' in a hiragana-kanji dictionary and replaces it.
+Subsequent ctl-\\ characters cycle through the possibilities.  A word
+is the longest immediately preceding unbroken string of hiragana
+characters.
+.TP
+.B ctl-k
+Japanese katakana.
+.TP
+.B ctl-l
+If you want to put the hiragana not converted, you can type.
+.TP
+.B ctl-x
+Read kana-kanji conversion dictionary once more, and renews it.  This
+will be convenient when you updated kana-kanji conversion dictionary
+on such acme editor.In default, the kana-kanji conversion dictionary
+is read once at beginning and to make a hashed table, which will be
+arranged so that the last selected candidate will be the first
+candidate for later search.
+.TP
+.B ctl-r
+Russian: interpret letters as Cyrillic; the transliteration is mostly
+phonetic, with
+.B '
+for
+.IR myagkij-znak
+(ь),
+.B ''
+for
+.I tverdyj-znak
+(ъ)
+.I yo
+for ё,
+.B j
+for
+.IR i-kratkaya
+(й).
+.TP
+.B ctl-o
+Greek.
+.TP
+.B ctl-s
+Korean.
+.PP
+To use it you have to run it before a rio session. You can put it on your $home/lib/profile like:
+.EX
+	...
+	ktrans
+	rio -i riostart
+	...
+.EE
+or run it with a sub-rio on a window like:
+.EX
+	% @{ktrans; rio}
+.EE
+.PP
+.SH SOURCE
+.B /sys/src/cmd/ktrans
+.SH SEE ALSO
+.IR rio (1)
+.IR kbdfs (8)
+.br
+.IR /sys/src/cmd/ktrans/README.kenji
+.br
+.IR /sys/src/cmd/ktrans/READMEJ.kenji
+.SH EXAMPLES
+If you want to make the Japanese text as below:
+
+私は毎日35分以上歩いて、 更に10分電車に乗って学校に通います。
+ 健康の維持にも役だっていますが、 なかなかたのしいものです。
+
+your keyboard typing stream should be:
+
+[^l]watashiHA[^\\]mainichi[^\\]35[^l]fun[^\\]ijou[^\\]aruIte, 
+[^\\]saraNI[^\\]10[^l]fun[^\\]denshaNI[^\\]noTte[^\\]gakkouNI
+[^\\]kayoImasu.[^\\]kenkouNO[^\\]ijiNImo[^\\]yakuDAtteimasuga,
+[^\\]nakanakatanoshiImonodesu.
+
+where [^\\] and [^l] indicate 'ctl-\\' and 'ctl-l',
+respectively.  See README.kenji for the details of this Japanese input
+method.
+.SH BUGS
+.PP
+There is no way to generate the control characters literally.  At the
+beggining of a new line, you have to begin with ctl-l for successful
+kana-kanji conversion.
--- /dev/null
+++ b/sys/src/cmd/ktrans/README.kenji
@@ -1,0 +1,108 @@
+This version of ktrans works with pipefile by Rob Pike, which replaces /dev/kbd of
+2nd Edition Plan 9 by Dennis Ritchie.  By this new idea, we can input Japanese
+anytime onto any windows.  I included his post to 9fans mailing-list here (pipefile
+file).
+
+This is a distribution as a derived work license of Plan 9, and I included the
+Plan 9 License term here.  Please refer to it on the details of this license.
+
+
+Main features are as follows:
+
+1) There is a "local" dictionary file for translation from kana to kanji, which can 
+      easily be edited by the user.  The default file name is $home/lib/ktrans-jisho.
+      If you want to use another dictionary file, set the KTJISHO environment 
+      variable to point to that file.  This dictionary comprises many lines of
+      edittable text strings.  
+
+2) Capital romaji input is used for words such as verbs or adjectives with okurigana, 
+      which follows the idea of the SKK system by Masahiko Sato of Kyoto Univ.
+      (masahiko@kuis.kyoto-u.ac.jp).  If you want to get the kanji string (runes)
+      "動かす", which is a verb, you may input "ugoKasu" from the keyboard.  
+      Note here the Kasu's k is a capital (important).  You will see hiragana
+      runes "うごかす", and then the kanji runes of "動かす", when you type
+      "Shift+Space". 
+        If you are satisfied by that translation, continue to input the next word.   
+      If you are not pleased with that candidate, hit 'Shift+Space' once more 
+      to see more candiates for that hiragana input.  When there are no more candidates
+      registered in your dictionary, you will see the initial hiragana input.
+
+3) For Japanese "joshi", a post-positioned short word after a noun, you can use another
+      method that I developed for this work.  If you want the kanji string (runes) "私は", 
+      then type "watashiHA" from the keyboard.  Note that the sound of "wa(ha)" is expressed 
+      as capitalized "HA".  You will see a hiragana string of "わたしは", and then "私は" 
+      after `Shift+Space'.
+
+4) A control sequence of 'ctl-l' is introduced to leave input hiragana runes unchanged.
+      This is occasionally neccessary.
+
+5) A simple leaning mechanism has been implemented for the in-memory hashing 
+      dictinary, in which the most recently used kanji runes (candidate) moves to the top 
+      of the list of candidates.  This is valid only during the session you called ktrans.
+      It is done this way intentionally, because the present learning method is ..well... 
+      naive. ^_^  I know this; however, I believe you can solve it by making a good 
+      dictionary best fitted to your purposes on your own.
+
+6)  'ctl-x' re-reads the new kana-kanji translation dictionary when you have edited your
+      kana-kanji translation, and want to incorporate it into your current in-memory translation 
+      dictionary.  The kana-kanji translation dictionary is usually read only once, at the 
+      beginning of the ktrans session.  I believe this simplification is not a serious constraint, 
+      because you can edit the dictionary anytime by co-working with acme and using this ctl-x 
+      mechanism.
+
+7) A mode change to kana-input is triggered by 'ctl-n', ctl-k for katakana mode, 
+      ctl-g for Greek mode, and ctl-r for Russian mode.
+
+8) As the starting $home/lib/ktrans-jisho, you may re-format the SKK-JISYO.S (66.9KB) of the 
+      SKK system, which can be retrieved from ftp.kuis.kyoto-u.ac.jp.  The next three lines 
+      show the short sed filter to transform from an SKK type dictionary to Plan 9.  Before 
+      this, you should change the kanji code of the SKK dictionary from ujis(euc) to UTF-8 by 
+      the tcs utility, of course.
+            s/\// /g
+            s/  /	/g
+            s/ $//g
+      The header items are sorted in a strange order in the original SKK dictionary.  
+      This implementation does not care about the order, therefore, you can change it on 
+      your own.
+
+9) SKK jisho, such as SKK-JISYO.S, is composed of two parts, okuri-ari and okuri-nashi 
+      entries.  This greatly depends on the Japanese grammer, and okuri-ari may represent 
+      verb/adjective etc., i.e., not noun.  These two parts work differently in the original 
+      SKK system, however, I did not employ that method; rather, I took a simple approarch 
+      as described in (2) and (3).  Here, we make no difference between these two parts, 
+      and the reason why I left the two-part structure is just to make it easier to read for 
+      editting.  Of course, you can change it without any side-effects.
+    
+10) The essence of this Japanese input method is to convert every one word by one key 
+      triggering.  This may cause some cumbersome feelings for Nihongo users who are accustomed 
+      to, say, Windows. I know this.  However, I intended to keep the codes as compact as 
+      possible as a first step towards developing a Nihongo input system on Plan 9.  
+      Furthermore, I've never seen the latter work perfectly.  I think the conversion failed 
+      essentially when we see more than, say, five/six candidates for one set of hiragana runes.  
+      Finaly, I'd like to add that I have no problem to write long Japanese documents by 
+      this version.
+
+11) The translation trigger key has been changed from ^t to Shift+Space, because
+      we experienced butting of the trigger key sequence sometime.  For this reason,
+      you have to edit the key-binding table, such as kbtabshift[0x39] in /sys/src/9/pc/kbd.c
+      or keymapshift[0x79] in /sys/src/9/ss/screen.c to assign Shift+Space to '^\'.
+      I use here '^\' as the trigger key.  Therefore, you can trigger translation 
+      from kana to kanji by Shit+Space or just '^\'.
+
+12) A usage example:  If you want to make the Japanese text as below:
+
+           私は毎日35分以上歩いて、 更に10分電車に乗って学校に通います。
+           健康の維持にも役だっていますが、 なかなかたのしいものです。
+
+      your keyboard typing stream should be:
+
+      watashiHA[^t]mainichi[^t]35[^l]fun[^t]ijou[^t]aruIte, [^t]saraNI[^t]
+      10[^l]fun[^t]denshaNI[^t]noTte[^t]gakkouNI[^t]kayoImasu.[^t]
+      kenkouNO[^t]ijiNImo[^t]yakuDAtteimasuga, [^t]nakanaka[^l]tanoshiI[^t]
+      monodesu.[^l]
+
+    where [^t], [^l] indicates 'Shift+Space' and 'ctl-l', respectively.
+
+
+		       				Kenji  Okamoto  August 14, 2000
+
--- /dev/null
+++ b/sys/src/cmd/ktrans/READMEJ.kenji
@@ -1,0 +1,126 @@
+Plan 9がRelase 3になってソースが公開されました。このため、更に多くのユーザがPlan 9を
+使い始める事になると思います。このバージョンになって、Windowシステムが8½からrioに
+変更になり、それにともなって、release 2に含まれていたktransが無くなりました。
+
+そこで、Rob Pikeさんにお願いしたら、pipefileというすばらしいアイデアを考えて戴け
+ました。これはrelease 2でDennis Ritchieさんが提供した/dev/kbdを置き替えるもので、
+このいきさつは、Pikeさんの9fansのlmailing-listへの投稿を同封してありますので、
+そちら(pipefile)を御覧下さい。この方法は何時でもどのウィンドへも日本語を入力出来る
+ので、以前のバージョンの様にウィンド毎にktransを起動する必要がなくなりました。
+pipefileはrioより前に起動される必要がありますので、ここに同封したKanjiという
+スクリプトを各自のlib/profileにrioを起動する替わりに、このKanjiスクリプトを
+起動する様にして下さい。
+
+
+Main features are as follows:
+
+1) There is a "local" dictionary file for translation from kana to kanji, which can 
+      easily be edited by the user.  The default file name is $home/lib/ktrans-jisho.
+      If you want to use another dictionary file, set the KTJISHO environment 
+      variable to point to that file.  This dictionary comprises many lines of
+      edittable text strings.  
+
+2) Capital romaji input is used for words such as verbs or adjectives with okurigana, 
+      which follows the idea of the SKK system by Masahiko Sato of Kyoto Univ.
+      (masahiko@kuis.kyoto-u.ac.jp).  If you want to get the kanji string (runes)
+      "動かす", which is a verb, you may input "ugoKasu" from the keyboard.  
+      Note here the Kasu's k is a capital (important).  You will see hiragana
+      runes "うごかす", and then the kanji runes of "動かす", when you type
+      "Shift+Space". 
+        If you are satisfied by that translation, continue to input the next word.   
+      If you are not pleased with that candidate, hit 'Shift+Space' once more 
+      to see more candiates for that hiragana input.  When there are no more candidates
+      registered in your dictionary, you will see the initial hiragana input.
+
+3) For Japanese "joshi", a post-positioned short word after a noun, you can use another
+      method that I developed for this work.  If you want the kanji string (runes) "私は", 
+      then type "watashiHA" from the keyboard.  Note that the sound of "wa(ha)" is expressed 
+      as capitalized "HA".  You will see a hiragana string of "わたしは", and then "私は" 
+      after `Shift+Space'.
+
+4) A control sequence of 'ctl-l' is introduced to leave input hiragana runes unchanged.
+      This is occasionally neccessary.
+
+5) A simple leaning mechanism has been implemented for the in-memory hashing 
+      dictinary, in which the most recently used kanji runes (candidate) moves to the top 
+      of the list of candidates.  This is valid only during the session you called ktrans.
+      It is done this way intentionally, because the present learning method is ..well... 
+      naive. ^_^  I know this; however, I believe you can solve it by making a good 
+      dictionary best fitted to your purposes on your own.
+
+6)  'ctl-x' re-reads the new kana-kanji translation dictionary when you have edited your
+      kana-kanji translation, and want to incorporate it into your current in-memory translation 
+      dictionary.  The kana-kanji translation dictionary is usually read only once, at the 
+      beginning of the ktrans session.  I believe this simplification is not a serious constraint, 
+      because you can edit the dictionary anytime by co-working with acme and using this ctl-x 
+      mechanism.
+
+7) A mode change to kana-input is triggered by 'ctl-n', ctl-k for katakana mode, 
+      ctl-g for Greek mode, and ctl-r for Russian mode.
+
+8) As the starting $home/lib/ktrans-jisho, you may re-format the SKK-JISYO.S (66.9KB) of the 
+      SKK system, which can be retrieved from ftp.kuis.kyoto-u.ac.jp.  The next three lines 
+      show the short sed filter to transform from an SKK type dictionary to Plan 9.  Before 
+      this, you should change the kanji code of the SKK dictionary from ujis(euc) to UTF-8 by 
+      the tcs utility, of course.
+            s/\// /g
+            s/  /	/g
+            s/ $//g
+      The header items are sorted in a strange order in the original SKK dictionary.  
+      This implementation does not care about the order, therefore, you can change it on 
+      your own.
+
+9) SKK jisho, such as SKK-JISYO.S, is composed of two parts, okuri-ari and okuri-nashi 
+      entries.  This greatly depends on the Japanese grammer, and okuri-ari may represent 
+      verb/adjective etc., i.e., not noun.  These two parts work differently in the original 
+      SKK system, however, I did not employ that method; rather, I took a simple approarch 
+      as described in (2) and (3).  Here, we make no difference between these two parts, 
+      and the reason why I left the two-part structure is just to make it easier to read for 
+      editting.  Of course, you can change it without any side-effects.
+    
+10) The essence of this Japanese input method is to convert every one word by one key 
+      triggering.  This may cause some cumbersome feelings for Nihongo users who are accustomed 
+      to, say, Windows. I know this.  However, I intended to keep the codes as compact as 
+      possible as a first step towards developing a Nihongo input system on Plan 9.  
+      Furthermore, I've never seen the latter work perfectly.  I think the conversion failed 
+      essentially when we see more than, say, five/six candidates for one set of hiragana runes.  
+      Finaly, I'd like to add that I have no problem to write long Japanese documents by 
+      this version.
+
+11) The translation trigger key has been changed from ^t to Shift+Space, because
+      we experienced butting of the trigger key sequence sometime.  For this reason,
+      you have to edit the key-binding table, such as kbtabshift[0x39] in /sys/src/9/pc/kbd.c
+      or keymapshift[0x79] in /sys/src/9/ss/screen.c to assign Shift+Space to '^\'.
+      I use here '^\' as the trigger key.  Therefore, you can trigger translation 
+      from kana to kanji by Shit+Space or just '^\'.
+
+12) A usage example:  If you want to make the Japanese text as below:
+
+           私は毎日35分以上歩いて、 更に10分電車に乗って学校に通います。
+           健康の維持にも役だっていますが、 なかなかたのしいものです。
+
+      your keyboard typing stream should be:
+
+      watashiHA[^t]mainichi[^t]35[^l]fun[^t]ijou[^t]aruIte, [^t]saraNI[^t]
+      10[^l]fun[^t]denshaNI[^t]noTte[^t]gakkouNI[^t]kayoImasu.[^t]
+      kenkouNO[^t]ijiNImo[^t]yakuDAtteimasuga, [^t]nakanaka[^l]tanoshiI[^t]
+      monodesu.[^l]
+
+    where [^t], [^l] indicates 'Shift+Space' and 'ctl-l', respectively.
+
+
+		       				Kenji  Okamoto  August 14, 2000
+
+
+これはRelease 2のPlan 9に含まれていたDennis Ritchieさんのktransを機能強化したもので、
+大阪府立大学の岡本健二が作成いたしました。  疑問、提案等がございましたら、
+okamoto@granite.cias.osakafu-u.ac.jpまで御連絡ください。
+なお, Plan 9そのものにつきましては、 
+    http://basalt.cias.osakafu-u.ac.jp/plan9/p9index.html に95年度より
+ささやかなWeb Pageをもっていますので、そちらも参照くださいませ。
+
+なおこのプログラムはPlan 9のderived workとしてのライセンスを持った配布となります。
+Plan 9のLicense fileを同封してありますので、ここに書かれている事を守ってお使い
+下さいませ。
+
+大阪府立大学総合科学部    岡本健二			August 14, 2000
--- /dev/null
+++ b/sys/src/cmd/ktrans/jisho.c
@@ -1,0 +1,211 @@
+/* 
+ *  open jisho file, and set the size of this jisho etc
+ *
+ *          Kenji Okamoto   August 4, 2000
+ *		Osaka Prefecture Univ.
+ *            okamoto@granite.cias.osakafu-u.ac.jp
+ */
+
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include "jisho.h"
+
+Dictionary *openQDIC(char *);
+void freeQDIC(Dictionary*);
+KouhoList *getKouhoHash(Dictionary*, char *);
+KouhoList *getKouhoFile(DicList*, char *);
+void selectKouho(KouhoList **, KouhoList*);
+int hashVal(char *);
+void addHash(Hash **, DicList*);
+
+
+
+/*
+ * Open QuickDIC (hashed personal dictionary)
+ *   open skk styled ktrans dictionary file, and make its hash table 
+ *    based on individual header kana strings
+ *
+ *                                        KouhoList
+ *                                       |---------|
+ *                  Hash         |---->kouho---->kouhotop
+ *               |-------|       |
+ *    dic---->dhash---->dicindex---->kanahead
+ *     |--------|         |--------|
+ *     Dictionary           DicList
+ *
+ */
+Dictionary *
+openQDIC(char *dicname)
+{
+	Biobuf *f;
+	void *Bbuf;
+	Dictionary *dic;
+	DicList *dicitem;			/* for a future extension */
+	char buf[1024], *startstr, *endstr;
+	int i;
+
+	SET(dicitem);		 /* yes, I know I'm wrong, but... */
+
+	dic = (Dictionary*)malloc(sizeof(Dictionary));
+  	      /* make room for pointer array (size=HASHSIZE) of hash table */
+	for(i=0; i< HASHSIZE; i++) dic->dhash[i] = 0;
+	dic->dlist = 0;		/* for a future extension (more than one dics ^_^ */
+
+	if ((f = Bopen(dicname, OREAD)) == 0)
+	    return dic;
+
+    /* make hash table by the dic's header word */
+
+	while(Bbuf = Brdline(f, '\n')) {
+	   strncpy(buf, (char *)Bbuf, Blinelen(f));
+
+	   if (buf[0] == ';')    /* comment line */
+		continue;
+	   else {
+    	  	/* get header word from jisho */
+	  	startstr = buf;
+	  	if(!(endstr = utfutf(startstr, "\t"))) break;
+	  	*endstr = '\0';
+			/* dicitem includes each header word from the jisho */
+
+		dicitem = (DicList*)malloc(sizeof(DicList)+(endstr-startstr+1));
+		dicitem->nextitem = 0;		/* for a future extension */
+		strcpy(dicitem->kanahead, startstr);
+
+		dicitem->kouho = getKouhoFile(dicitem, endstr);    /* read kouho from jisho */
+		addHash(dic->dhash, dicitem);
+	   }
+	   continue;
+	}
+	dic->dlist = dicitem;
+	Bterm(f);
+	return dic;
+}
+
+/* 
+ * free dynamically allocated memory
+ */
+void
+freeQDIC(Dictionary *dic)
+{
+   Hash *hash1, *hash2;
+   DicList *dlist, *dlist2;
+   int l;
+
+	for (dlist = dic->dlist;
+		dlist != 0;
+		dlist2 = dlist, dlist = dlist->nextitem, free((void *)dlist2));
+	for (l = 0; l < HASHSIZE; l++) {
+		for (hash1 = dic->dhash[l]; hash1; hash1 = hash2) {
+			if (hash1->next !=0) {
+				hash2 = hash1->next;
+				free((void *)hash1);
+			}else
+				break;
+		}
+	}
+	free((void *)dic);
+}
+
+int
+hashVal(char *s)
+{
+	uint h;
+
+	h = 0x811c9dc5;
+	while(*s != 0)
+		h = (h^(uchar)*s++) * 0x1000193;
+	return h % HASHSIZE;
+}
+
+void
+addHash(Hash **hash, DicList *ditem)
+{
+	Hash *h;
+	int v;
+
+	v = hashVal(ditem->kanahead);
+	h = (Hash*)malloc(sizeof(Hash));
+	h->dicindex = ditem;
+	h->length = strlen(ditem->kanahead);
+	h->next = hash[v];
+	hash[v] = h;
+}
+
+/* 
+ * read Kouho list from the jisho file defined by Biobuf descriptor f
+ * 
+ *  revised for Plan 9 by K.Okamoto
+ */
+KouhoList *
+getKouhoFile(DicList *dicitem, char * endstr)
+{
+	char *kouhostart, *kouhoend;
+	KouhoList *kouhoitem, *currntkouhoitem=0, *prevkouhoitem;
+
+	prevkouhoitem = 0;
+	kouhostart = endstr + 1;
+	while((kouhoend = utfutf(kouhostart, " ")) || 
+			(kouhoend = utfutf(kouhostart, "\n"))) {
+	   *kouhoend = '\0';
+
+	   kouhoitem = (KouhoList*)malloc(sizeof(KouhoList)+(kouhoend-kouhostart+1));
+	   kouhoitem->nextkouho = 0;
+	   kouhoitem->prevkouho = prevkouhoitem;
+	   kouhoitem->dicitem = dicitem;
+	   strcpy(kouhoitem->kouhotop, kouhostart);
+	   if (prevkouhoitem)
+		prevkouhoitem->nextkouho = kouhoitem;
+	   else
+		currntkouhoitem = kouhoitem;
+	   prevkouhoitem = kouhoitem;
+	   kouhostart = kouhoend + 1;
+	}
+	return currntkouhoitem;
+}
+
+/*
+ * get matched kouho from the hash table of header word of the dict
+ * if found, returns pointer to the first candidate in the hash table.
+ * if not found, returns 0.
+ * 
+ * from getCand() in skklib.c by Akinori Ito et al.,(aito@ei5sun.yz.yamagata-u.ac.jp)
+ */
+KouhoList *
+getKouhoHash(Dictionary *dic, char *s)
+{
+	int l, v;
+	Hash *h;
+
+	l = strlen(s);
+	v = hashVal(s);
+	for (h = dic->dhash[v]; h != 0; h = h->next) {
+		if (h->length != l ||
+		    strcmp(h->dicindex->kanahead, s)) continue;
+		return h->dicindex->kouho;      /* return matched kouho */
+	}
+	return 0;
+}
+
+/* 
+ * from skklib.c by Akinori Ito et al.,(aito@ei5sun.yz.yamagata-u.ac.jp)
+ * just modified to read easier for current purpose
+ */
+void
+selectKouho(KouhoList **first, KouhoList *current)
+{
+	/* take off currentkouho from the kouholist table */
+	if (current->prevkouho) {
+		current->prevkouho->nextkouho = current->nextkouho;
+		if (current->nextkouho)
+			current->nextkouho->prevkouho = current->prevkouho;
+		current->prevkouho = 0;
+	}
+	/* take place of firstkouho by currentkouho  */
+	if (*first != current) {
+		(*first)->prevkouho = current;
+		current->nextkouho = *first;
+		*first = current;
+	}
+}
--- /dev/null
+++ b/sys/src/cmd/ktrans/jisho.h
@@ -1,0 +1,41 @@
+/*
+ *          Kenji Okamoto   August 4, 2000
+ *		Osaka Prefecture Univ.
+ *            okamoto@granite.cias.osakafu-u.ac.jp
+ */
+
+#define HASHSIZE 257
+
+/*
+ * Structure for Dictionary's header word (in Hiragana)
+ */
+typedef	struct DicList DicList;
+struct DicList {
+	struct KouhoList *kouho;
+	struct DicList *nextitem; /* for a future extension */
+	char kanahead[1];
+};
+
+/*
+ * Structure for Kouho of each index word in the dictionary
+ */
+typedef	struct KouhoList KouhoList;
+struct KouhoList {
+	struct KouhoList *nextkouho;
+	struct KouhoList *prevkouho;
+	struct DicList *dicitem;
+	char kouhotop[1]; /* top of the kouhos */
+} ;
+
+typedef	struct Hash Hash;
+struct Hash {
+	DicList *dicindex; /* pointer to a KouhoList and kanahead etc */
+	short length;
+	struct Hash *next;
+};
+
+typedef	struct Dictionary Dictionary;
+struct Dictionary {
+	DicList *dlist; /* for a future extension, having more than one dictionaries */
+	Hash *dhash[HASHSIZE];
+};
--- /dev/null
+++ b/sys/src/cmd/ktrans/ktrans.h
@@ -1,0 +1,2865 @@
+typedef	struct	Map	Map;
+struct	Map {
+	char	*roma;
+	char	*kana;
+	char	advance;
+};
+
+
+Map kata[] = {
+	"a",	"ア", 1,
+	"-",	"ー", 1,
+	"i",	"イ", 1,
+	"u",	"ウ", 1,
+	"e",	"エ", 1,
+	"o",	"オ", 1,
+	"ka",	"カ", 2,
+	"ga",	"ガ", 2,
+	"ki",	"キ", 2,
+	"kya",	"キャ", 3,
+	"kyu",	"キュ", 3,
+	"kyo",	"キョ", 3,
+	"gi",	"ギ", 2,
+	"gya",	"ギャ", 3,
+	"gyu",	"ギュ", 3,
+	"gyo",	"ギョ", 3,
+	"ku",	"ク", 2,
+	"gu",	"グ", 2,
+	"ke",	"ケ", 2,
+	"ge",	"ゲ", 2,
+	"ko",	"コ", 2,
+	"go",	"ゴ", 2,
+	"sa",	"サ", 2,
+	"za",	"ザ", 2,
+	"si",	"シ", 2,
+	"shi",	"シ", 3,
+	"ji",	"ジ", 2,
+	"sha",	"シャ", 3,
+	"she",	"シェ", 3,
+	"shu",	"シュ", 3,
+	"je",	"ジェ", 2,
+	"sho",	"ショ", 3,
+	"syo",	"ショ", 3,
+	"ja",	"ジャ", 2,
+	"ju",	"ジュ", 2,
+	"je",	"ジェ", 2,
+	"jo",	"ジョ", 2,
+	"su",	"ス", 2,
+	"zu",	"ズ", 2,
+	"se",	"セ", 2,
+	"ze",	"ゼ", 2,
+	"so",	"ソ", 2,
+	"zo",	"ゾ", 2,
+	"ta",	"タ", 2,
+	"da",	"ダ", 2,
+	"ti",	"ティ", 2,
+	"chi",	"チ", 3,
+	"zi",	"ヂ", 2,
+	"cha",	"チャ", 3,
+	"chu",	"チュ", 3,
+	"tyu",	"チュ", 3,
+	"che",	"チェ", 3,
+	"cho",	"チョ", 3,
+	"tu",	"ツ", 2,
+	"tsu",	"ツ", 3,
+	"du",	"ヅ", 2,
+	"te",	"テ", 2,
+	"de",	"デ", 2,
+	"to",	"ト", 2,
+	"do",	"ド", 2,
+	"na",	"ナ", 2,
+	"ni",	"ニ", 2,
+	"nya",	"ニャ", 3,
+	"nyu",	"ニュ", 3,
+	"nyo",	"ニョ", 3,
+	"nu",	"ヌ", 2,
+	"ne",	"ネ", 2,
+	"no",	"ノ", 2,
+	"ha",	"ハ", 2,
+	"ba",	"バ", 2,
+	"pa",	"パ", 2,
+	"hi",	"ヒ", 2,
+	"hya",	"ヒャ", 3,
+	"hyu",	"ヒュ", 3,
+	"hyo",	"ヒョ", 3,
+	"bi",	"ビ", 2,
+	"bya",	"ビャ", 3,
+	"byu",	"ビュ", 3,
+	"byo",	"ビョ", 3,
+	"pi",	"ピ", 2,
+	"pya",	"ピャ", 3,
+	"pyu",	"ピュ", 3,
+	"pyo",	"ピョ", 3,
+	"hu",	"フ", 2,
+	"fu",	"フ", 2,
+	"bu",	"ブ", 2,
+	"pu",	"プ", 2,
+	"he",	"ヘ", 2,
+	"be",	"ベ", 2,
+	"pe",	"ペ", 2,
+	"ho",	"ホ", 2,
+	"bo",	"ボ", 2,
+	"po",	"ポ", 2,
+	"ma",	"マ", 2,
+	"mi",	"ミ", 2,
+	"mya",	"ミャ", 3,
+	"myu",	"ミュ", 3,
+	"myo",	"ミョ", 3,
+	"mu",	"ム", 2,
+	"me",	"メ", 2,
+	"mo",	"モ", 2,
+	"ya",	"ヤ", 2,
+	"yu",	"ユ", 2,
+	"yo",	"ヨ", 2,
+	"ra",	"ラ", 2,
+	"ri",	"リ", 2,
+	"rya",	"リャ", 3,
+	"ryu",	"リュ", 3,
+	"ryo",	"リョ", 3,
+	"ru",	"ル", 2,
+	"re",	"レ", 2,
+	"ro",	"ロ", 2,
+	"wa",	"ワ", 2,
+	"wi",	"ヰ", 2,
+	"we",	"ヱ", 2,
+	"wo",	"ヲ", 2,
+	"n",	"ン", 1,
+	"xn",	"ン", 2,
+	"v",	"ヴ", 1,
+	"xa",	"ァ", 2,
+	"xi",	"ィ", 2,
+	"xe",	"ェ", 2,
+	"xo",	"ォ", 2,
+	"cc",	"ッ", 1,
+	"dd",	"ッ", 1,
+	"kk",	"ッ", 1,
+	"pp",	"ッ", 1,
+	"tt",	"ッ", 1,
+	"tch",	"ッ", 1,
+	"ss",	"ッ", 1,
+	"xn",	"ン", 2,
+	"di",	"ディ", 2,
+	"fa",	"ファ", 2,
+	"fi",	"フィ", 2,
+	"fe",	"フェ", 2,
+	"fo",	"フォ", 2,
+	"va",	"ヴァ", 2,
+	"vi",	"ヴィ", 2,
+	"ve",	"ヴェ", 2,
+	"vo",	"ヴォ", 2,
+	".",	"。", 1,
+	",",	"、", 1,
+	0
+};
+
+Map hira[] = {
+	"a",	"あ", 1,
+	"-",	"ー", 1,
+	"i",	"い", 1,
+	"u",	"う", 1,
+	"e",	"え", 1,
+	"o",	"お", 1,
+	"ka",	"か", 2,
+	"ga",	"が", 2,
+	"ki",	"き", 2,
+	"kya",	"きゃ", 3,
+	"kyu",	"きゅ", 3,
+	"kyo",	"きょ", 3,
+	"gi",	"ぎ", 2,
+	"gya",	"ぎゃ", 3,
+	"gyu",	"ぎゅ", 3,
+	"gyo",	"ぎょ", 3,
+	"ku",	"く", 2,
+	"gu",	"ぐ", 2,
+	"ke",	"け", 2,
+	"ge",	"げ", 2,
+	"ko",	"こ", 2,
+	"go",	"ご", 2,
+	"sa",	"さ", 2,
+	"za",	"ざ", 2,
+	"si",	"し", 2,
+	"shi",	"し", 3,
+	"sha",	"しゃ", 3,
+	"shu",	"しゅ", 3,
+	"she",	"しぇ", 3,
+	"sho",	"しょ", 3,
+	"syo",	"しょ", 3,
+	"zi",	"ぢ", 2,
+	"ja",	"じゃ", 2,
+	"ju",	"じゅ", 2,
+	"je",	"じぇ", 2,
+	"jo",	"じょ", 2,
+	"su",	"す", 2,
+	"zu",	"ず", 2,
+	"se",	"せ", 2,
+	"ze",	"ぜ", 2,
+	"so",	"そ", 2,
+	"zo",	"ぞ", 2,
+	"ta",	"た", 2,
+	"da",	"だ", 2,
+	"ti",	"ち", 2,
+	"chi",	"ち", 3,
+	"cha",	"ちゃ", 3,
+	"chu",	"ちゅ", 3,
+	"tyu",	"ちゅ", 3,
+	"cho",	"ちょ", 3,
+	"ji",	"じ", 2,
+	"tu",	"つ", 2,
+	"tsu",	"つ", 3,
+	"du",	"づ", 2,
+	"te",	"て", 2,
+	"de",	"で", 2,
+	"to",	"と", 2,
+	"do",	"ど", 2,
+	"na",	"な", 2,
+	"ni",	"に", 2,
+	"nya",	"にゃ", 3,
+	"nyu",	"にゅ", 3,
+	"nyo",	"にょ", 3,
+	"nu",	"ぬ", 2,
+	"ne",	"ね", 2,
+	"no",	"の", 2,
+	"ha",	"は", 2,
+	"ba",	"ば", 2,
+	"va",	"ば", 2,
+	"pa",	"ぱ", 2,
+	"hi",	"ひ", 2,
+	"hya",	"ひゃ", 3,
+	"hyu",	"ひゅ", 3,
+	"hyo",	"ひょ", 3,
+	"bi",	"び", 2,
+	"bya",	"びゃ", 3,
+	"byu",	"びゅ", 3,
+	"byo",	"びょ", 3,
+	"vi",	"び", 2,
+	"pi",	"ぴ", 2,
+	"pya",	"ぴゃ", 3,
+	"pyu",	"ぴゅ", 3,
+	"pyo",	"ぴょ", 3,
+	"hu",	"ふ", 2,
+	"fu",	"ふ", 2,
+	"bu",	"ぶ", 2,
+	"vu",	"ぶ", 2,
+	"pu",	"ぷ", 2,
+	"he",	"へ", 2,
+	"be",	"べ", 2,
+	"ve",	"べ", 2,
+	"pe",	"ぺ", 2,
+	"ho",	"ほ", 2,
+	"bo",	"ぼ", 2,
+	"vo",	"ぼ", 2,
+	"po",	"ぽ", 2,
+	"ma",	"ま", 2,
+	"mi",	"み", 2,
+	"mya",	"みゃ", 3,
+	"myu",	"みゅ", 3,
+	"myo",	"みょ", 3,
+	"mu",	"む", 2,
+	"me",	"め", 2,
+	"mo",	"も", 2,
+	"ya",	"や", 2,
+	"yu",	"ゆ", 2,
+	"yo",	"よ", 2,
+	"ra",	"ら", 2,
+	"ri",	"り", 2,
+	"rya",	"りゃ", 3,
+	"ryu",	"りゅ", 3,
+	"ryo",	"りょ", 3,
+	"ru",	"る", 2,
+	"re",	"れ", 2,
+	"ro",	"ろ", 2,
+	"wa",	"わ", 2,
+	"wi",	"ゐ", 2,
+	"we",	"ゑ", 2,
+	"wo",	"を", 2,
+	"n",	"ん", 1,
+	"xn",	"ん", 2,
+	"v",	"\x80", 1,
+	"xa",	"ぁ", 2,
+	"xi",	"ぃ", 2,
+	"xu",	"ぅ", 2,
+	"xe",	"ぇ", 2,
+	"xo",	"ぉ", 2,
+	"cc",	"っ", 1,
+	"dd",	"っ", 1,
+	"kk",	"っ", 1,
+	"pp",	"っ", 1,
+	"tt",	"っ", 1,
+	"ss",	"っ", 1,
+	".",	"。", 1,
+	",",	"、", 1,
+	0,
+};
+
+Map cyril[] = {
+	"YO",	"Ё", 2,
+	"Yo",	"Ё", 2,
+	"A",	"А", 1,
+	"B",	"Б", 1,
+	"V",	"В", 1,
+	"G",	"Г", 1,
+	"D",	"Д", 1,
+	"Ye",	"Е", 1,
+	"YE",	"Е", 2,
+	"E",	"Е", 1,
+	"Zh",	"Ж", 2,
+	"ZH",	"Ж", 2,
+	"Z",	"З", 1,
+	"I",	"И", 1,
+	"J",	"Й", 1,
+	"K",	"К", 1,
+	"L",	"Л", 1,
+	"M",	"М", 1,
+	"N",	"Н", 1,
+	"O",	"О", 1,
+	"P",	"П", 1,
+	"R",	"Р", 1,
+	"S",	"С", 1,
+	"T",	"Т", 1,
+	"U",	"У", 1,
+	"F",	"Ф", 1,
+	"Kh",	"Х", 2,
+	"KH",	"Х", 2,
+	"X",	"Х", 1,
+	"Ts",	"Ц", 2,
+	"TS",	"Ц", 2,
+	"Ch",	"Ч", 2,
+	"CH",	"Ч", 2,
+	"Sh",	"Ш", 2,
+	"SH",	"Ш", 2,
+	"Shch",	"Щ", 4,
+	"SHCH",	"Щ", 4,
+	"''",	"ъ", 2,
+	"Y",	"Ы", 1,
+	"'",	"ь", 1,
+	"EH",	"Э", 2,
+	"Eh",	"Э", 2,
+	"Yu",	"Ю", 2,
+	"YU",	"Ю", 2,
+	"Ya",	"Я", 2,
+	"YA",	"Я", 2,
+	"a",	"а", 1,
+	"b",	"б", 1,
+	"v",	"в", 1,
+	"g",	"г", 1,
+	"d",	"д", 1,
+	"ye",	"е", 2,
+	"e",	"е", 1,
+	"zh",	"ж", 2,
+	"z",	"з", 1,
+	"i",	"и", 1,
+	"j",	"й", 1,
+	"k",	"к", 1,
+	"l",	"л", 1,
+	"m",	"м", 1,
+	"n",	"н", 1,
+	"o",	"о", 1,
+	"p",	"п", 1,
+	"r",	"р", 1,
+	"s",	"с", 1,
+	"t",	"т", 1,
+	"u",	"у", 1,
+	"f",	"ф", 1,
+	"kh",	"х", 2,
+	"x",	"х", 1,
+	"ts",	"ц", 2,
+	"ch",	"ч", 2,
+	"sh",	"ш", 2,
+	"shch",	"щ", 4,
+	"''",	"ъ", 2,
+	"y",	"ы", 1,
+	"'",	"ь", 1,
+	"eh",	"э", 2,
+	"yu",	"ю", 2,
+	"ya",	"я", 2,
+	"yo",	"ё", 2,
+	0,
+};
+
+Map greek[] = {
+	"A",	"Α", 1,
+	"'A",	"Ά", 2,
+	"B",	"Β", 1,
+	"G",	"Γ", 1,
+	"D",	"Δ", 1,
+	"E",	"Ε", 1,
+	"'E",	"Έ", 2,
+	"Z",	"Ζ", 1,
+	"E!",	"Η", 2,
+	"'E!",	"Έ", 3,
+	"TH",	"Θ", 2,
+	"Th",	"Θ", 2,
+	"I",	"Ι", 1,
+	"'I",	"Ί", 2,
+	"K",	"Κ", 1,
+	"L",	"Λ", 1,
+	"M",	"Μ", 1,
+	"N",	"Ν", 1,
+	"KS",	"Ξ", 2,
+	"Ks",	"Ξ", 2,
+	"O",	"Ο", 1,
+	"'O",	"Ό", 2,
+	"P",	"Π", 1,
+	"R",	"Ρ", 1,
+	"S",	"Σ", 1,
+	"T",	"Τ", 1,
+	"U",	"Υ", 1,
+	"'U",	"Ύ", 2,
+	"F",	"Φ", 1,
+	"CH",	"Χ", 2,
+	"Ch",	"Χ", 2,
+	"PS",	"Ψ", 2,
+	"Ps",	"Ψ", 2,
+	"O!",	"Ω", 2,
+	"W",	"Ω", 1,
+	"'O!",	"Ώ", 3,
+	"'W",	"Ώ", 2,
+	"a",	"α", 1,
+	"'a",	"ά", 2,
+	"b",	"β", 1,
+	"v",	"β", 1,
+	"g",	"γ", 1,
+	"d",	"δ", 1,
+	"e",	"ε", 1,
+	"'e",	"έ", 2,
+	"z",	"ζ", 1,
+	"e!",	"η", 2,
+	"'e!",	"ή", 3,
+	"ii",	"η", 2,
+	"'ii",	"ή", 3,
+	"h",	"η", 1,
+	"'h",	"ή", 2,
+	"th",	"θ", 2,
+	"i",	"ι", 1,
+	"'i",	"ί", 2,
+	"k",	"κ", 1,
+	"l",	"λ", 1,
+	"m",	"μ", 1,
+	"n",	"ν", 1,
+	"ks",	"ξ", 2,
+	"x",	"ξ", 1,
+	"o",	"ο", 1,
+	"'o",	"ό", 2,
+	"p",	"π", 1,
+	"r",	"ρ", 1,
+	"s ",	"ς", 1,
+	"s.",	"ς", 1,
+	"s,",	"ς", 1,
+	"s\n",	"ς", 1,
+	"s",	"σ", 1,
+	"t",	"τ", 1,
+	"u",	"υ", 1,
+	"'u",	"ΰ", 2,
+	"y",	"υ", 1,
+	"'y",	"ΰ", 2,
+	"f",	"φ", 1,
+	"ch",	"χ", 2,
+	"ps",	"ψ", 2,
+	"o!",	"ω", 2,
+	"w",	"ω", 1,
+	"'o!",	"ώ", 3,
+	"'w",	"ώ", 2,
+	0
+};
+
+Map hangul[] = {
+	"A",	"A",	1,
+	"B",	"ㅟ",	1,
+	"C",	"ㅊ",	1,
+	"E",	"ㄸ",	1,
+	"F",	"F",	1,
+	"G",	"G",	1,
+	"H",	"ㅙ",	1,
+	"J",	"ㅝ",	1,
+	"K",	"ㅘ",	1,
+	"L",	"ㅚ",	1,
+	"M",	"ㅢ",	1,
+	"N",	"ㅞ",	1,
+	"O",	"ㅒ",	1,
+	"P",	"ㅖ",	1,
+	"Q",	"ㅃ",	1,
+	"R",	"ㄲ",	1,
+	"S",	"S",	1,
+	"T",	"ㅆ",	1,
+	"V",	"V",	1,
+	"W",	"ㅉ",	1,
+	"a",	"ㅁ",	1,
+	"b",	"ㅠ",	1,
+	"c",	"c",	1,
+	"d",	"ㅇ",	1,
+	"e",	"ㄷ",	1,
+	"f",	"ㄹ",	1,
+	"g",	"ㅎ",	1,
+	"h",	"ㅗ",	1,
+	"i",	"ㅑ",	1,
+	"j",	"ㅓ",	1,
+	"k",	"ㅏ",	1,
+	"l",	"ㅣ",	1,
+	"m",	"ㅡ",	1,
+	"n",	"ㅜ",	1,
+	"o",	"ㅐ",	1,
+	"p",	"ㅔ",	1,
+	"q",	"ㅂ",	1,
+	"r",	"ㄱ",	1,
+	"s",	"ㄴ",	1,
+	"t",	"t",	1,
+	"u",	"ㅕ",	1,
+	"v",	"ㅍ",	1,
+	"w",	"ㅈ",	1,
+	"x",	"ㅌ",	1,
+	"y",	"ㅛ",	1,
+	"z",	"ㅋ",	1,
+	"rk",	"가",	2,
+	"ro",	"개",	2,
+	"ri",	"갸",	2,
+	"rO",	"걔",	2,
+	"rj",	"거",	2,
+	"rp",	"게",	2,
+	"ru",	"겨",	2,
+	"rP",	"계",	2,
+	"rh",	"고",	2,
+	"rK",	"과",	2,
+	"rH",	"괘",	2,
+	"rL",	"괴",	2,
+	"ry",	"교",	2,
+	"rn",	"구",	2,
+	"rJ",	"궈",	2,
+	"rN",	"궤",	2,
+	"rB",	"귀",	2,
+	"rb",	"규",	2,
+	"rm",	"그",	2,
+	"rM",	"긔",	2,
+	"rl",	"기",	2,
+	"Rk",	"까",	2,
+	"Ro",	"깨",	2,
+	"Ri",	"꺄",	2,
+	"Rj",	"꺼",	2,
+	"Rp",	"께",	2,
+	"Ru",	"껴",	2,
+	"RP",	"꼐",	2,
+	"Rh",	"꼬",	2,
+	"RK",	"꽈",	2,
+	"RH",	"꽤",	2,
+	"RL",	"꾀",	2,
+	"Ry",	"꾜",	2,
+	"Rn",	"꾸",	2,
+	"RJ",	"꿔",	2,
+	"RN",	"꿰",	2,
+	"RB",	"뀌",	2,
+	"Rb",	"뀨",	2,
+	"Rm",	"끄",	2,
+	"Rl",	"끼",	2,
+	"sk",	"나",	2,
+	"so",	"내",	2,
+	"si",	"냐",	2,
+	"sj",	"너",	2,
+	"sp",	"네",	2,
+	"su",	"녀",	2,
+	"sP",	"녜",	2,
+	"sh",	"노",	2,
+	"sK",	"놔",	2,
+	"sL",	"뇌",	2,
+	"sy",	"뇨",	2,
+	"sn",	"누",	2,
+	"sJ",	"눠",	2,
+	"sN",	"눼",	2,
+	"sB",	"뉘",	2,
+	"sb",	"뉴",	2,
+	"sm",	"느",	2,
+	"sM",	"늬",	2,
+	"sl",	"니",	2,
+	"ek",	"다",	2,
+	"eo",	"대",	2,
+	"ei",	"댜",	2,
+	"ej",	"더",	2,
+	"ep",	"데",	2,
+	"eu",	"뎌",	2,
+	"eP",	"뎨",	2,
+	"eh",	"도",	2,
+	"eK",	"돠",	2,
+	"eH",	"돼",	2,
+	"eL",	"되",	2,
+	"ey",	"됴",	2,
+	"en",	"두",	2,
+	"eJ",	"둬",	2,
+	"eN",	"뒈",	2,
+	"eB",	"뒤",	2,
+	"eb",	"듀",	2,
+	"em",	"드",	2,
+	"eM",	"듸",	2,
+	"el",	"디",	2,
+	"Ek",	"따",	2,
+	"Eo",	"때",	2,
+	"Ej",	"떠",	2,
+	"Ep",	"떼",	2,
+	"Eu",	"뗘",	2,
+	"Eh",	"또",	2,
+	"EK",	"똬",	2,
+	"EH",	"뙈",	2,
+	"EL",	"뙤",	2,
+	"En",	"뚜",	2,
+	"EN",	"뛔",	2,
+	"EB",	"뛰",	2,
+	"Em",	"뜨",	2,
+	"EM",	"띄",	2,
+	"El",	"띠",	2,
+	"fk",	"라",	2,
+	"fo",	"래",	2,
+	"fi",	"랴",	2,
+	"fj",	"러",	2,
+	"fp",	"레",	2,
+	"fu",	"려",	2,
+	"fP",	"례",	2,
+	"fh",	"로",	2,
+	"fK",	"롸",	2,
+	"fL",	"뢰",	2,
+	"fy",	"료",	2,
+	"fn",	"루",	2,
+	"fJ",	"뤄",	2,
+	"fN",	"뤠",	2,
+	"fB",	"뤼",	2,
+	"fb",	"류",	2,
+	"fm",	"르",	2,
+	"fl",	"리",	2,
+	"ak",	"마",	2,
+	"ao",	"매",	2,
+	"ai",	"먀",	2,
+	"aj",	"머",	2,
+	"ap",	"메",	2,
+	"au",	"며",	2,
+	"aP",	"몌",	2,
+	"ah",	"모",	2,
+	"aK",	"뫄",	2,
+	"aL",	"뫼",	2,
+	"ay",	"묘",	2,
+	"an",	"무",	2,
+	"aJ",	"뭐",	2,
+	"aN",	"뭬",	2,
+	"aB",	"뮈",	2,
+	"ab",	"뮤",	2,
+	"am",	"므",	2,
+	"al",	"미",	2,
+	"qk",	"바",	2,
+	"qo",	"배",	2,
+	"qi",	"뱌",	2,
+	"qj",	"버",	2,
+	"qp",	"베",	2,
+	"qu",	"벼",	2,
+	"qP",	"볘",	2,
+	"qh",	"보",	2,
+	"qK",	"봐",	2,
+	"qH",	"봬",	2,
+	"qL",	"뵈",	2,
+	"qy",	"뵤",	2,
+	"qn",	"부",	2,
+	"qJ",	"붜",	2,
+	"qN",	"붸",	2,
+	"qB",	"뷔",	2,
+	"qb",	"뷰",	2,
+	"qm",	"브",	2,
+	"ql",	"비",	2,
+	"Qk",	"빠",	2,
+	"Qo",	"빼",	2,
+	"Qi",	"뺘",	2,
+	"Qj",	"뻐",	2,
+	"Qp",	"뻬",	2,
+	"Qu",	"뼈",	2,
+	"Qh",	"뽀",	2,
+	"QL",	"뾔",	2,
+	"Qy",	"뾰",	2,
+	"Qn",	"뿌",	2,
+	"Qb",	"쀼",	2,
+	"Qm",	"쁘",	2,
+	"Ql",	"삐",	2,
+	"tk",	"사",	2,
+	"to",	"새",	2,
+	"ti",	"샤",	2,
+	"tO",	"섀",	2,
+	"tj",	"서",	2,
+	"tp",	"세",	2,
+	"tu",	"셔",	2,
+	"tP",	"셰",	2,
+	"th",	"소",	2,
+	"tK",	"솨",	2,
+	"tH",	"쇄",	2,
+	"tL",	"쇠",	2,
+	"ty",	"쇼",	2,
+	"tn",	"수",	2,
+	"tJ",	"숴",	2,
+	"tN",	"쉐",	2,
+	"tB",	"쉬",	2,
+	"tb",	"슈",	2,
+	"tm",	"스",	2,
+	"tl",	"시",	2,
+	"Tk",	"싸",	2,
+	"To",	"쌔",	2,
+	"Tj",	"써",	2,
+	"Tp",	"쎄",	2,
+	"Th",	"쏘",	2,
+	"TK",	"쏴",	2,
+	"TH",	"쐐",	2,
+	"TL",	"쐬",	2,
+	"Ty",	"쑈",	2,
+	"Tn",	"쑤",	2,
+	"TJ",	"쒀",	2,
+	"TN",	"쒜",	2,
+	"TB",	"쒸",	2,
+	"Tm",	"쓰",	2,
+	"TM",	"씌",	2,
+	"Tl",	"씨",	2,
+	"dk",	"아",	2,
+	"do",	"애",	2,
+	"di",	"야",	2,
+	"dO",	"얘",	2,
+	"dj",	"어",	2,
+	"dp",	"에",	2,
+	"du",	"여",	2,
+	"dP",	"예",	2,
+	"dh",	"오",	2,
+	"dK",	"와",	2,
+	"dH",	"왜",	2,
+	"dL",	"외",	2,
+	"dy",	"요",	2,
+	"dn",	"우",	2,
+	"dJ",	"워",	2,
+	"dN",	"웨",	2,
+	"dB",	"위",	2,
+	"db",	"유",	2,
+	"dm",	"으",	2,
+	"dM",	"의",	2,
+	"dl",	"이",	2,
+	"wk",	"자",	2,
+	"wo",	"재",	2,
+	"wi",	"쟈",	2,
+	"wO",	"쟤",	2,
+	"wj",	"저",	2,
+	"wp",	"제",	2,
+	"wu",	"져",	2,
+	"wP",	"졔",	2,
+	"wh",	"조",	2,
+	"wK",	"좌",	2,
+	"wH",	"좨",	2,
+	"wL",	"죄",	2,
+	"wy",	"죠",	2,
+	"wn",	"주",	2,
+	"wJ",	"줘",	2,
+	"wN",	"줴",	2,
+	"wB",	"쥐",	2,
+	"wb",	"쥬",	2,
+	"wm",	"즈",	2,
+	"wl",	"지",	2,
+	"Wk",	"짜",	2,
+	"Wo",	"째",	2,
+	"Wi",	"쨔",	2,
+	"Wj",	"쩌",	2,
+	"Wp",	"쩨",	2,
+	"Wu",	"쪄",	2,
+	"Wh",	"쪼",	2,
+	"WK",	"쫘",	2,
+	"WH",	"쫴",	2,
+	"WL",	"쬐",	2,
+	"Wn",	"쭈",	2,
+	"WJ",	"쭤",	2,
+	"WB",	"쮜",	2,
+	"Wb",	"쮸",	2,
+	"Wm",	"쯔",	2,
+	"Wl",	"찌",	2,
+	"ck",	"차",	2,
+	"co",	"채",	2,
+	"ci",	"챠",	2,
+	"cj",	"처",	2,
+	"cp",	"체",	2,
+	"cu",	"쳐",	2,
+	"cP",	"쳬",	2,
+	"ch",	"초",	2,
+	"cK",	"촤",	2,
+	"cL",	"최",	2,
+	"cy",	"쵸",	2,
+	"cn",	"추",	2,
+	"cJ",	"춰",	2,
+	"cN",	"췌",	2,
+	"cB",	"취",	2,
+	"cb",	"츄",	2,
+	"cm",	"츠",	2,
+	"cl",	"치",	2,
+	"zk",	"카",	2,
+	"zo",	"캐",	2,
+	"zi",	"캬",	2,
+	"zj",	"커",	2,
+	"zp",	"케",	2,
+	"zu",	"켜",	2,
+	"zP",	"켸",	2,
+	"zh",	"코",	2,
+	"zK",	"콰",	2,
+	"zH",	"쾌",	2,
+	"zL",	"쾨",	2,
+	"zy",	"쿄",	2,
+	"zn",	"쿠",	2,
+	"zJ",	"쿼",	2,
+	"zN",	"퀘",	2,
+	"zB",	"퀴",	2,
+	"zb",	"큐",	2,
+	"zm",	"크",	2,
+	"zl",	"키",	2,
+	"xk",	"타",	2,
+	"xo",	"태",	2,
+	"xi",	"탸",	2,
+	"xj",	"터",	2,
+	"xp",	"테",	2,
+	"xu",	"텨",	2,
+	"xP",	"톄",	2,
+	"xh",	"토",	2,
+	"xK",	"톼",	2,
+	"xH",	"퇘",	2,
+	"xL",	"퇴",	2,
+	"xy",	"툐",	2,
+	"xn",	"투",	2,
+	"xJ",	"퉈",	2,
+	"xN",	"퉤",	2,
+	"xB",	"튀",	2,
+	"xb",	"튜",	2,
+	"xm",	"트",	2,
+	"xM",	"틔",	2,
+	"xl",	"티",	2,
+	"vk",	"파",	2,
+	"vo",	"패",	2,
+	"vi",	"퍄",	2,
+	"vj",	"퍼",	2,
+	"vp",	"페",	2,
+	"vu",	"펴",	2,
+	"vP",	"폐",	2,
+	"vh",	"포",	2,
+	"vK",	"퐈",	2,
+	"vL",	"푀",	2,
+	"vy",	"표",	2,
+	"vn",	"푸",	2,
+	"vJ",	"풔",	2,
+	"vB",	"퓌",	2,
+	"vb",	"퓨",	2,
+	"vm",	"프",	2,
+	"vl",	"피",	2,
+	"gk",	"하",	2,
+	"go",	"해",	2,
+	"gi",	"햐",	2,
+	"gj",	"허",	2,
+	"gp",	"헤",	2,
+	"gu",	"혀",	2,
+	"gP",	"혜",	2,
+	"gh",	"호",	2,
+	"gK",	"화",	2,
+	"gH",	"홰",	2,
+	"gL",	"회",	2,
+	"gy",	"효",	2,
+	"gn",	"후",	2,
+	"gJ",	"훠",	2,
+	"gN",	"훼",	2,
+	"gB",	"휘",	2,
+	"gb",	"휴",	2,
+	"gm",	"흐",	2,
+	"gM",	"희",	2,
+	"gl",	"히",	2,
+	"rkr",	"각",	3,
+	"rks",	"간",	3,
+	"rke",	"갇",	3,
+	"rkf",	"갈",	3,
+	"rkG",	"갉",	3,
+	"rkM",	"갊",	3,
+	"rka",	"감",	3,
+	"rkq",	"갑",	3,
+	"rkC",	"값",	3,
+	"rkt",	"갓",	3,
+	"rkT",	"갔",	3,
+	"rkd",	"강",	3,
+	"rkw",	"갖",	3,
+	"rkc",	"갗",	3,
+	"rkx",	"같",	3,
+	"rkv",	"갚",	3,
+	"rkg",	"갛",	3,
+	"ror",	"객",	3,
+	"ros",	"갠",	3,
+	"rof",	"갤",	3,
+	"roa",	"갬",	3,
+	"roq",	"갭",	3,
+	"rot",	"갯",	3,
+	"roT",	"갰",	3,
+	"rod",	"갱",	3,
+	"rir",	"갹",	3,
+	"ris",	"갼",	3,
+	"rif",	"걀",	3,
+	"rit",	"걋",	3,
+	"rid",	"걍",	3,
+	"rOs",	"걘",	3,
+	"rOf",	"걜",	3,
+	"rjr",	"걱",	3,
+	"rjs",	"건",	3,
+	"rje",	"걷",	3,
+	"rjf",	"걸",	3,
+	"rjM",	"걺",	3,
+	"rja",	"검",	3,
+	"rjq",	"겁",	3,
+	"rjt",	"것",	3,
+	"rjT",	"겄",	3,
+	"rjd",	"겅",	3,
+	"rjw",	"겆",	3,
+	"rjx",	"겉",	3,
+	"rjv",	"겊",	3,
+	"rjg",	"겋",	3,
+	"rps",	"겐",	3,
+	"rpf",	"겔",	3,
+	"rpa",	"겜",	3,
+	"rpq",	"겝",	3,
+	"rpt",	"겟",	3,
+	"rpT",	"겠",	3,
+	"rpd",	"겡",	3,
+	"rur",	"격",	3,
+	"ruR",	"겪",	3,
+	"rus",	"견",	3,
+	"rue",	"겯",	3,
+	"ruf",	"결",	3,
+	"rua",	"겸",	3,
+	"ruq",	"겹",	3,
+	"rut",	"겻",	3,
+	"ruT",	"겼",	3,
+	"rud",	"경",	3,
+	"rux",	"곁",	3,
+	"rPs",	"곈",	3,
+	"rPf",	"곌",	3,
+	"rPq",	"곕",	3,
+	"rPt",	"곗",	3,
+	"rhr",	"곡",	3,
+	"rhs",	"곤",	3,
+	"rhe",	"곧",	3,
+	"rhf",	"골",	3,
+	"rhM",	"곪",	3,
+	"rhN",	"곬",	3,
+	"rhF",	"곯",	3,
+	"rha",	"곰",	3,
+	"rhq",	"곱",	3,
+	"rht",	"곳",	3,
+	"rhd",	"공",	3,
+	"rhw",	"곶",	3,
+	"rKr",	"곽",	3,
+	"rKs",	"관",	3,
+	"rKf",	"괄",	3,
+	"rKM",	"괆",	3,
+	"rKa",	"괌",	3,
+	"rKq",	"괍",	3,
+	"rKt",	"괏",	3,
+	"rKd",	"광",	3,
+	"rHs",	"괜",	3,
+	"rHf",	"괠",	3,
+	"rHq",	"괩",	3,
+	"rHT",	"괬",	3,
+	"rHd",	"괭",	3,
+	"rLr",	"괵",	3,
+	"rLs",	"괸",	3,
+	"rLf",	"괼",	3,
+	"rLa",	"굄",	3,
+	"rLq",	"굅",	3,
+	"rLt",	"굇",	3,
+	"rLd",	"굉",	3,
+	"rys",	"굔",	3,
+	"ryf",	"굘",	3,
+	"ryq",	"굡",	3,
+	"ryt",	"굣",	3,
+	"rnr",	"국",	3,
+	"rns",	"군",	3,
+	"rne",	"굳",	3,
+	"rnf",	"굴",	3,
+	"rnG",	"굵",	3,
+	"rnM",	"굶",	3,
+	"rnF",	"굻",	3,
+	"rna",	"굼",	3,
+	"rnq",	"굽",	3,
+	"rnt",	"굿",	3,
+	"rnd",	"궁",	3,
+	"rnw",	"궂",	3,
+	"rJr",	"궉",	3,
+	"rJs",	"권",	3,
+	"rJf",	"궐",	3,
+	"rJT",	"궜",	3,
+	"rJd",	"궝",	3,
+	"rNt",	"궷",	3,
+	"rBr",	"귁",	3,
+	"rBs",	"귄",	3,
+	"rBf",	"귈",	3,
+	"rBa",	"귐",	3,
+	"rBq",	"귑",	3,
+	"rBt",	"귓",	3,
+	"rbs",	"균",	3,
+	"rbf",	"귤",	3,
+	"rmr",	"극",	3,
+	"rms",	"근",	3,
+	"rme",	"귿",	3,
+	"rmf",	"글",	3,
+	"rmG",	"긁",	3,
+	"rma",	"금",	3,
+	"rmq",	"급",	3,
+	"rmt",	"긋",	3,
+	"rmd",	"긍",	3,
+	"rlr",	"긱",	3,
+	"rls",	"긴",	3,
+	"rle",	"긷",	3,
+	"rlf",	"길",	3,
+	"rlM",	"긺",	3,
+	"rla",	"김",	3,
+	"rlq",	"깁",	3,
+	"rlt",	"깃",	3,
+	"rld",	"깅",	3,
+	"rlw",	"깆",	3,
+	"rlv",	"깊",	3,
+	"Rkr",	"깍",	3,
+	"RkR",	"깎",	3,
+	"Rks",	"깐",	3,
+	"Rkf",	"깔",	3,
+	"RkM",	"깖",	3,
+	"Rka",	"깜",	3,
+	"Rkq",	"깝",	3,
+	"Rkt",	"깟",	3,
+	"RkT",	"깠",	3,
+	"Rkd",	"깡",	3,
+	"Rkx",	"깥",	3,
+	"Ror",	"깩",	3,
+	"Ros",	"깬",	3,
+	"Rof",	"깰",	3,
+	"Roa",	"깸",	3,
+	"Roq",	"깹",	3,
+	"Rot",	"깻",	3,
+	"RoT",	"깼",	3,
+	"Rod",	"깽",	3,
+	"Rir",	"꺅",	3,
+	"Rif",	"꺌",	3,
+	"Rjr",	"꺽",	3,
+	"RjR",	"꺾",	3,
+	"Rjs",	"껀",	3,
+	"Rjf",	"껄",	3,
+	"Rja",	"껌",	3,
+	"Rjq",	"껍",	3,
+	"Rjt",	"껏",	3,
+	"RjT",	"껐",	3,
+	"Rjd",	"껑",	3,
+	"Rpr",	"껙",	3,
+	"Rps",	"껜",	3,
+	"Rpa",	"껨",	3,
+	"Rpt",	"껫",	3,
+	"Rpd",	"껭",	3,
+	"Rus",	"껸",	3,
+	"Ruf",	"껼",	3,
+	"Rut",	"꼇",	3,
+	"RuT",	"꼈",	3,
+	"Rux",	"꼍",	3,
+	"Rhr",	"꼭",	3,
+	"Rhs",	"꼰",	3,
+	"RhH",	"꼲",	3,
+	"Rhf",	"꼴",	3,
+	"Rha",	"꼼",	3,
+	"Rhq",	"꼽",	3,
+	"Rht",	"꼿",	3,
+	"Rhd",	"꽁",	3,
+	"Rhw",	"꽂",	3,
+	"Rhc",	"꽃",	3,
+	"RKr",	"꽉",	3,
+	"RKf",	"꽐",	3,
+	"RKT",	"꽜",	3,
+	"RKd",	"꽝",	3,
+	"RHr",	"꽥",	3,
+	"RHd",	"꽹",	3,
+	"RLs",	"꾄",	3,
+	"RLf",	"꾈",	3,
+	"RLa",	"꾐",	3,
+	"RLq",	"꾑",	3,
+	"RLd",	"꾕",	3,
+	"Rnr",	"꾹",	3,
+	"Rns",	"꾼",	3,
+	"Rnf",	"꿀",	3,
+	"RnF",	"꿇",	3,
+	"Rna",	"꿈",	3,
+	"Rnq",	"꿉",	3,
+	"Rnt",	"꿋",	3,
+	"Rnd",	"꿍",	3,
+	"Rnw",	"꿎",	3,
+	"RJf",	"꿜",	3,
+	"RJT",	"꿨",	3,
+	"RJd",	"꿩",	3,
+	"RNr",	"꿱",	3,
+	"RNs",	"꿴",	3,
+	"RNf",	"꿸",	3,
+	"RNa",	"뀀",	3,
+	"RNq",	"뀁",	3,
+	"RNT",	"뀄",	3,
+	"RBs",	"뀐",	3,
+	"RBf",	"뀔",	3,
+	"RBa",	"뀜",	3,
+	"RBq",	"뀝",	3,
+	"Rmr",	"끅",	3,
+	"Rms",	"끈",	3,
+	"RmH",	"끊",	3,
+	"Rmf",	"끌",	3,
+	"RmM",	"끎",	3,
+	"RmF",	"끓",	3,
+	"Rma",	"끔",	3,
+	"Rmq",	"끕",	3,
+	"Rmt",	"끗",	3,
+	"Rmd",	"끙",	3,
+	"Rmx",	"끝",	3,
+	"Rlr",	"끽",	3,
+	"Rls",	"낀",	3,
+	"Rlf",	"낄",	3,
+	"Rla",	"낌",	3,
+	"Rlq",	"낍",	3,
+	"Rlt",	"낏",	3,
+	"Rld",	"낑",	3,
+	"skr",	"낙",	3,
+	"skR",	"낚",	3,
+	"sks",	"난",	3,
+	"ske",	"낟",	3,
+	"skf",	"날",	3,
+	"skG",	"낡",	3,
+	"skM",	"낢",	3,
+	"ska",	"남",	3,
+	"skq",	"납",	3,
+	"skt",	"낫",	3,
+	"skT",	"났",	3,
+	"skd",	"낭",	3,
+	"skw",	"낮",	3,
+	"skc",	"낯",	3,
+	"skx",	"낱",	3,
+	"skg",	"낳",	3,
+	"sor",	"낵",	3,
+	"sos",	"낸",	3,
+	"sof",	"낼",	3,
+	"soa",	"냄",	3,
+	"soq",	"냅",	3,
+	"sot",	"냇",	3,
+	"soT",	"냈",	3,
+	"sod",	"냉",	3,
+	"sir",	"냑",	3,
+	"sis",	"냔",	3,
+	"sif",	"냘",	3,
+	"sia",	"냠",	3,
+	"sid",	"냥",	3,
+	"sjr",	"넉",	3,
+	"sjS",	"넋",	3,
+	"sjs",	"넌",	3,
+	"sjf",	"널",	3,
+	"sjM",	"넒",	3,
+	"sjA",	"넓",	3,
+	"sja",	"넘",	3,
+	"sjq",	"넙",	3,
+	"sjt",	"넛",	3,
+	"sjT",	"넜",	3,
+	"sjd",	"넝",	3,
+	"sjg",	"넣",	3,
+	"spr",	"넥",	3,
+	"sps",	"넨",	3,
+	"spf",	"넬",	3,
+	"spa",	"넴",	3,
+	"spq",	"넵",	3,
+	"spt",	"넷",	3,
+	"spT",	"넸",	3,
+	"spd",	"넹",	3,
+	"sur",	"녁",	3,
+	"sus",	"년",	3,
+	"suf",	"녈",	3,
+	"sua",	"념",	3,
+	"suq",	"녑",	3,
+	"suT",	"녔",	3,
+	"sud",	"녕",	3,
+	"suz",	"녘",	3,
+	"sPs",	"녠",	3,
+	"shr",	"녹",	3,
+	"shs",	"논",	3,
+	"shf",	"놀",	3,
+	"shM",	"놂",	3,
+	"sha",	"놈",	3,
+	"shq",	"놉",	3,
+	"sht",	"놋",	3,
+	"shd",	"농",	3,
+	"shv",	"높",	3,
+	"shg",	"놓",	3,
+	"sKs",	"놘",	3,
+	"sKf",	"놜",	3,
+	"sKT",	"놨",	3,
+	"sLs",	"뇐",	3,
+	"sLf",	"뇔",	3,
+	"sLa",	"뇜",	3,
+	"sLq",	"뇝",	3,
+	"sLt",	"뇟",	3,
+	"syr",	"뇩",	3,
+	"sys",	"뇬",	3,
+	"syf",	"뇰",	3,
+	"syq",	"뇹",	3,
+	"syt",	"뇻",	3,
+	"syd",	"뇽",	3,
+	"snr",	"눅",	3,
+	"sns",	"눈",	3,
+	"sne",	"눋",	3,
+	"snf",	"눌",	3,
+	"sna",	"눔",	3,
+	"snq",	"눕",	3,
+	"snt",	"눗",	3,
+	"snd",	"눙",	3,
+	"sJT",	"눴",	3,
+	"sBs",	"뉜",	3,
+	"sBf",	"뉠",	3,
+	"sBa",	"뉨",	3,
+	"sBq",	"뉩",	3,
+	"sbr",	"뉵",	3,
+	"sbf",	"뉼",	3,
+	"sba",	"늄",	3,
+	"sbq",	"늅",	3,
+	"sbd",	"늉",	3,
+	"smr",	"늑",	3,
+	"sms",	"는",	3,
+	"smf",	"늘",	3,
+	"smG",	"늙",	3,
+	"smM",	"늚",	3,
+	"sma",	"늠",	3,
+	"smq",	"늡",	3,
+	"smt",	"늣",	3,
+	"smd",	"능",	3,
+	"smw",	"늦",	3,
+	"smv",	"늪",	3,
+	"sMs",	"늰",	3,
+	"sMf",	"늴",	3,
+	"slr",	"닉",	3,
+	"sls",	"닌",	3,
+	"slf",	"닐",	3,
+	"slM",	"닒",	3,
+	"sla",	"님",	3,
+	"slq",	"닙",	3,
+	"slt",	"닛",	3,
+	"sld",	"닝",	3,
+	"slv",	"닢",	3,
+	"ekr",	"닥",	3,
+	"ekR",	"닦",	3,
+	"eks",	"단",	3,
+	"eke",	"닫",	3,
+	"ekf",	"달",	3,
+	"ekG",	"닭",	3,
+	"ekM",	"닮",	3,
+	"ekA",	"닯",	3,
+	"ekF",	"닳",	3,
+	"eka",	"담",	3,
+	"ekq",	"답",	3,
+	"ekt",	"닷",	3,
+	"ekT",	"닸",	3,
+	"ekd",	"당",	3,
+	"ekw",	"닺",	3,
+	"ekc",	"닻",	3,
+	"ekg",	"닿",	3,
+	"eor",	"댁",	3,
+	"eos",	"댄",	3,
+	"eof",	"댈",	3,
+	"eoa",	"댐",	3,
+	"eoq",	"댑",	3,
+	"eot",	"댓",	3,
+	"eoT",	"댔",	3,
+	"eod",	"댕",	3,
+	"ejr",	"덕",	3,
+	"ejR",	"덖",	3,
+	"ejs",	"던",	3,
+	"eje",	"덛",	3,
+	"ejf",	"덜",	3,
+	"ejM",	"덞",	3,
+	"ejA",	"덟",	3,
+	"eja",	"덤",	3,
+	"ejq",	"덥",	3,
+	"ejt",	"덧",	3,
+	"ejd",	"덩",	3,
+	"ejc",	"덫",	3,
+	"ejv",	"덮",	3,
+	"epr",	"덱",	3,
+	"eps",	"덴",	3,
+	"epf",	"델",	3,
+	"epa",	"뎀",	3,
+	"epq",	"뎁",	3,
+	"ept",	"뎃",	3,
+	"epT",	"뎄",	3,
+	"epd",	"뎅",	3,
+	"eus",	"뎐",	3,
+	"euf",	"뎔",	3,
+	"euT",	"뎠",	3,
+	"eud",	"뎡",	3,
+	"ePs",	"뎬",	3,
+	"ehr",	"독",	3,
+	"ehs",	"돈",	3,
+	"ehe",	"돋",	3,
+	"ehf",	"돌",	3,
+	"ehM",	"돎",	3,
+	"ehN",	"돐",	3,
+	"eha",	"돔",	3,
+	"ehq",	"돕",	3,
+	"eht",	"돗",	3,
+	"ehd",	"동",	3,
+	"ehc",	"돛",	3,
+	"ehx",	"돝",	3,
+	"eKs",	"돤",	3,
+	"eKf",	"돨",	3,
+	"eHT",	"됐",	3,
+	"eLs",	"된",	3,
+	"eLf",	"될",	3,
+	"eLa",	"됨",	3,
+	"eLq",	"됩",	3,
+	"eLt",	"됫",	3,
+	"enr",	"둑",	3,
+	"ens",	"둔",	3,
+	"enf",	"둘",	3,
+	"ena",	"둠",	3,
+	"enq",	"둡",	3,
+	"ent",	"둣",	3,
+	"end",	"둥",	3,
+	"eJT",	"뒀",	3,
+	"eNd",	"뒝",	3,
+	"eBs",	"뒨",	3,
+	"eBf",	"뒬",	3,
+	"eBq",	"뒵",	3,
+	"eBt",	"뒷",	3,
+	"eBd",	"뒹",	3,
+	"ebs",	"듄",	3,
+	"ebf",	"듈",	3,
+	"eba",	"듐",	3,
+	"ebd",	"듕",	3,
+	"emr",	"득",	3,
+	"ems",	"든",	3,
+	"eme",	"듣",	3,
+	"emf",	"들",	3,
+	"emM",	"듦",	3,
+	"ema",	"듬",	3,
+	"emq",	"듭",	3,
+	"emt",	"듯",	3,
+	"emd",	"등",	3,
+	"elr",	"딕",	3,
+	"els",	"딘",	3,
+	"ele",	"딛",	3,
+	"elf",	"딜",	3,
+	"ela",	"딤",	3,
+	"elq",	"딥",	3,
+	"elt",	"딧",	3,
+	"elT",	"딨",	3,
+	"eld",	"딩",	3,
+	"elw",	"딪",	3,
+	"Ekr",	"딱",	3,
+	"Eks",	"딴",	3,
+	"Ekf",	"딸",	3,
+	"Eka",	"땀",	3,
+	"Ekq",	"땁",	3,
+	"Ekt",	"땃",	3,
+	"EkT",	"땄",	3,
+	"Ekd",	"땅",	3,
+	"Ekg",	"땋",	3,
+	"Eor",	"땍",	3,
+	"Eos",	"땐",	3,
+	"Eof",	"땔",	3,
+	"Eoa",	"땜",	3,
+	"Eoq",	"땝",	3,
+	"Eot",	"땟",	3,
+	"EoT",	"땠",	3,
+	"Eod",	"땡",	3,
+	"Ejr",	"떡",	3,
+	"Ejs",	"떤",	3,
+	"Ejf",	"떨",	3,
+	"EjM",	"떪",	3,
+	"EjA",	"떫",	3,
+	"Eja",	"떰",	3,
+	"Ejq",	"떱",	3,
+	"Ejt",	"떳",	3,
+	"EjT",	"떴",	3,
+	"Ejd",	"떵",	3,
+	"Ejg",	"떻",	3,
+	"Epr",	"떽",	3,
+	"Eps",	"뗀",	3,
+	"Epf",	"뗄",	3,
+	"Epa",	"뗌",	3,
+	"Epq",	"뗍",	3,
+	"Ept",	"뗏",	3,
+	"EpT",	"뗐",	3,
+	"Epd",	"뗑",	3,
+	"EuT",	"뗬",	3,
+	"Ehr",	"똑",	3,
+	"Ehs",	"똔",	3,
+	"Ehf",	"똘",	3,
+	"Ehd",	"똥",	3,
+	"EKf",	"똴",	3,
+	"ELs",	"뙨",	3,
+	"Enr",	"뚝",	3,
+	"Ens",	"뚠",	3,
+	"Enf",	"뚤",	3,
+	"EnF",	"뚫",	3,
+	"Ena",	"뚬",	3,
+	"End",	"뚱",	3,
+	"EBs",	"뛴",	3,
+	"EBf",	"뛸",	3,
+	"EBa",	"뜀",	3,
+	"EBq",	"뜁",	3,
+	"EBd",	"뜅",	3,
+	"Emr",	"뜩",	3,
+	"Ems",	"뜬",	3,
+	"Eme",	"뜯",	3,
+	"Emf",	"뜰",	3,
+	"Ema",	"뜸",	3,
+	"Emq",	"뜹",	3,
+	"Emt",	"뜻",	3,
+	"EMs",	"띈",	3,
+	"EMf",	"띌",	3,
+	"EMa",	"띔",	3,
+	"EMq",	"띕",	3,
+	"Els",	"띤",	3,
+	"Elf",	"띨",	3,
+	"Ela",	"띰",	3,
+	"Elq",	"띱",	3,
+	"Elt",	"띳",	3,
+	"Eld",	"띵",	3,
+	"fkr",	"락",	3,
+	"fks",	"란",	3,
+	"fkf",	"랄",	3,
+	"fka",	"람",	3,
+	"fkq",	"랍",	3,
+	"fkt",	"랏",	3,
+	"fkT",	"랐",	3,
+	"fkd",	"랑",	3,
+	"fkw",	"랒",	3,
+	"fkv",	"랖",	3,
+	"fkg",	"랗",	3,
+	"for",	"랙",	3,
+	"fos",	"랜",	3,
+	"fof",	"랠",	3,
+	"foa",	"램",	3,
+	"foq",	"랩",	3,
+	"fot",	"랫",	3,
+	"foT",	"랬",	3,
+	"fod",	"랭",	3,
+	"fir",	"략",	3,
+	"fis",	"랸",	3,
+	"fit",	"럇",	3,
+	"fid",	"량",	3,
+	"fjr",	"럭",	3,
+	"fjs",	"런",	3,
+	"fjf",	"럴",	3,
+	"fja",	"럼",	3,
+	"fjq",	"럽",	3,
+	"fjt",	"럿",	3,
+	"fjT",	"렀",	3,
+	"fjd",	"렁",	3,
+	"fjg",	"렇",	3,
+	"fpr",	"렉",	3,
+	"fps",	"렌",	3,
+	"fpf",	"렐",	3,
+	"fpa",	"렘",	3,
+	"fpq",	"렙",	3,
+	"fpt",	"렛",	3,
+	"fpd",	"렝",	3,
+	"fur",	"력",	3,
+	"fus",	"련",	3,
+	"fuf",	"렬",	3,
+	"fua",	"렴",	3,
+	"fuq",	"렵",	3,
+	"fut",	"렷",	3,
+	"fuT",	"렸",	3,
+	"fud",	"령",	3,
+	"fPs",	"롄",	3,
+	"fPq",	"롑",	3,
+	"fPt",	"롓",	3,
+	"fhr",	"록",	3,
+	"fhs",	"론",	3,
+	"fhf",	"롤",	3,
+	"fha",	"롬",	3,
+	"fhq",	"롭",	3,
+	"fht",	"롯",	3,
+	"fhd",	"롱",	3,
+	"fKs",	"롼",	3,
+	"fKd",	"뢍",	3,
+	"fHT",	"뢨",	3,
+	"fLs",	"뢴",	3,
+	"fLf",	"뢸",	3,
+	"fLa",	"룀",	3,
+	"fLq",	"룁",	3,
+	"fLt",	"룃",	3,
+	"fLd",	"룅",	3,
+	"fys",	"룐",	3,
+	"fyf",	"룔",	3,
+	"fyq",	"룝",	3,
+	"fyt",	"룟",	3,
+	"fyd",	"룡",	3,
+	"fnr",	"룩",	3,
+	"fns",	"룬",	3,
+	"fnf",	"룰",	3,
+	"fna",	"룸",	3,
+	"fnq",	"룹",	3,
+	"fnt",	"룻",	3,
+	"fnd",	"룽",	3,
+	"fJT",	"뤘",	3,
+	"fBr",	"뤽",	3,
+	"fBs",	"륀",	3,
+	"fBf",	"륄",	3,
+	"fBa",	"륌",	3,
+	"fBt",	"륏",	3,
+	"fBd",	"륑",	3,
+	"fbr",	"륙",	3,
+	"fbs",	"륜",	3,
+	"fbf",	"률",	3,
+	"fba",	"륨",	3,
+	"fbq",	"륩",	3,
+	"fbt",	"륫",	3,
+	"fbd",	"륭",	3,
+	"fmr",	"륵",	3,
+	"fms",	"른",	3,
+	"fmf",	"를",	3,
+	"fma",	"름",	3,
+	"fmq",	"릅",	3,
+	"fmt",	"릇",	3,
+	"fmd",	"릉",	3,
+	"fmw",	"릊",	3,
+	"fmx",	"릍",	3,
+	"fmv",	"릎",	3,
+	"flr",	"릭",	3,
+	"fls",	"린",	3,
+	"flf",	"릴",	3,
+	"fla",	"림",	3,
+	"flq",	"립",	3,
+	"flt",	"릿",	3,
+	"fld",	"링",	3,
+	"akr",	"막",	3,
+	"aks",	"만",	3,
+	"akH",	"많",	3,
+	"ake",	"맏",	3,
+	"akf",	"말",	3,
+	"akG",	"맑",	3,
+	"akM",	"맒",	3,
+	"aka",	"맘",	3,
+	"akq",	"맙",	3,
+	"akt",	"맛",	3,
+	"akd",	"망",	3,
+	"akw",	"맞",	3,
+	"akx",	"맡",	3,
+	"akg",	"맣",	3,
+	"aor",	"맥",	3,
+	"aos",	"맨",	3,
+	"aof",	"맬",	3,
+	"aoa",	"맴",	3,
+	"aoq",	"맵",	3,
+	"aot",	"맷",	3,
+	"aoT",	"맸",	3,
+	"aod",	"맹",	3,
+	"aow",	"맺",	3,
+	"air",	"먁",	3,
+	"aif",	"먈",	3,
+	"aid",	"먕",	3,
+	"ajr",	"먹",	3,
+	"ajs",	"먼",	3,
+	"ajf",	"멀",	3,
+	"ajM",	"멂",	3,
+	"aja",	"멈",	3,
+	"ajq",	"멉",	3,
+	"ajt",	"멋",	3,
+	"ajd",	"멍",	3,
+	"ajw",	"멎",	3,
+	"ajg",	"멓",	3,
+	"apr",	"멕",	3,
+	"aps",	"멘",	3,
+	"apf",	"멜",	3,
+	"apa",	"멤",	3,
+	"apq",	"멥",	3,
+	"apt",	"멧",	3,
+	"apT",	"멨",	3,
+	"apd",	"멩",	3,
+	"aur",	"멱",	3,
+	"aus",	"면",	3,
+	"auf",	"멸",	3,
+	"aut",	"몃",	3,
+	"auT",	"몄",	3,
+	"aud",	"명",	3,
+	"auc",	"몇",	3,
+	"ahr",	"목",	3,
+	"ahS",	"몫",	3,
+	"ahs",	"몬",	3,
+	"ahf",	"몰",	3,
+	"ahM",	"몲",	3,
+	"aha",	"몸",	3,
+	"ahq",	"몹",	3,
+	"aht",	"못",	3,
+	"ahd",	"몽",	3,
+	"aKs",	"뫈",	3,
+	"aKT",	"뫘",	3,
+	"aKd",	"뫙",	3,
+	"aLs",	"묀",	3,
+	"aLf",	"묄",	3,
+	"aLq",	"묍",	3,
+	"aLt",	"묏",	3,
+	"aLd",	"묑",	3,
+	"ays",	"묜",	3,
+	"ayf",	"묠",	3,
+	"ayq",	"묩",	3,
+	"ayt",	"묫",	3,
+	"anr",	"묵",	3,
+	"anR",	"묶",	3,
+	"ans",	"문",	3,
+	"ane",	"묻",	3,
+	"anf",	"물",	3,
+	"anG",	"묽",	3,
+	"anM",	"묾",	3,
+	"ana",	"뭄",	3,
+	"anq",	"뭅",	3,
+	"ant",	"뭇",	3,
+	"and",	"뭉",	3,
+	"anx",	"뭍",	3,
+	"ang",	"뭏",	3,
+	"aJs",	"뭔",	3,
+	"aJf",	"뭘",	3,
+	"aJq",	"뭡",	3,
+	"aJt",	"뭣",	3,
+	"aBs",	"뮌",	3,
+	"aBf",	"뮐",	3,
+	"abs",	"뮨",	3,
+	"abf",	"뮬",	3,
+	"aba",	"뮴",	3,
+	"abt",	"뮷",	3,
+	"ams",	"믄",	3,
+	"amf",	"믈",	3,
+	"ama",	"믐",	3,
+	"amt",	"믓",	3,
+	"alr",	"믹",	3,
+	"als",	"민",	3,
+	"ale",	"믿",	3,
+	"alf",	"밀",	3,
+	"alM",	"밂",	3,
+	"ala",	"밈",	3,
+	"alq",	"밉",	3,
+	"alt",	"밋",	3,
+	"alT",	"밌",	3,
+	"ald",	"밍",	3,
+	"alc",	"및",	3,
+	"alx",	"밑",	3,
+	"qkr",	"박",	3,
+	"qkR",	"밖",	3,
+	"qkS",	"밗",	3,
+	"qks",	"반",	3,
+	"qke",	"받",	3,
+	"qkf",	"발",	3,
+	"qkG",	"밝",	3,
+	"qkM",	"밞",	3,
+	"qkA",	"밟",	3,
+	"qka",	"밤",	3,
+	"qkq",	"밥",	3,
+	"qkt",	"밧",	3,
+	"qkd",	"방",	3,
+	"qkx",	"밭",	3,
+	"qor",	"백",	3,
+	"qos",	"밴",	3,
+	"qof",	"밸",	3,
+	"qoa",	"뱀",	3,
+	"qoq",	"뱁",	3,
+	"qot",	"뱃",	3,
+	"qoT",	"뱄",	3,
+	"qod",	"뱅",	3,
+	"qox",	"뱉",	3,
+	"qir",	"뱍",	3,
+	"qis",	"뱐",	3,
+	"qiq",	"뱝",	3,
+	"qjr",	"벅",	3,
+	"qjs",	"번",	3,
+	"qje",	"벋",	3,
+	"qjf",	"벌",	3,
+	"qjM",	"벎",	3,
+	"qja",	"범",	3,
+	"qjq",	"법",	3,
+	"qjt",	"벗",	3,
+	"qjd",	"벙",	3,
+	"qjw",	"벚",	3,
+	"qpr",	"벡",	3,
+	"qps",	"벤",	3,
+	"qpe",	"벧",	3,
+	"qpf",	"벨",	3,
+	"qpa",	"벰",	3,
+	"qpq",	"벱",	3,
+	"qpt",	"벳",	3,
+	"qpT",	"벴",	3,
+	"qpd",	"벵",	3,
+	"qur",	"벽",	3,
+	"qus",	"변",	3,
+	"quf",	"별",	3,
+	"quq",	"볍",	3,
+	"qut",	"볏",	3,
+	"quT",	"볐",	3,
+	"qud",	"병",	3,
+	"qux",	"볕",	3,
+	"qPs",	"볜",	3,
+	"qhr",	"복",	3,
+	"qhR",	"볶",	3,
+	"qhs",	"본",	3,
+	"qhf",	"볼",	3,
+	"qha",	"봄",	3,
+	"qhq",	"봅",	3,
+	"qht",	"봇",	3,
+	"qhd",	"봉",	3,
+	"qKs",	"봔",	3,
+	"qKT",	"봤",	3,
+	"qHT",	"뵀",	3,
+	"qLr",	"뵉",	3,
+	"qLs",	"뵌",	3,
+	"qLf",	"뵐",	3,
+	"qLa",	"뵘",	3,
+	"qLq",	"뵙",	3,
+	"qys",	"뵨",	3,
+	"qnr",	"북",	3,
+	"qns",	"분",	3,
+	"qne",	"붇",	3,
+	"qnf",	"불",	3,
+	"qnG",	"붉",	3,
+	"qnM",	"붊",	3,
+	"qna",	"붐",	3,
+	"qnq",	"붑",	3,
+	"qnt",	"붓",	3,
+	"qnd",	"붕",	3,
+	"qnx",	"붙",	3,
+	"qnv",	"붚",	3,
+	"qJf",	"붤",	3,
+	"qJT",	"붰",	3,
+	"qBr",	"뷕",	3,
+	"qBs",	"뷘",	3,
+	"qBf",	"뷜",	3,
+	"qBd",	"뷩",	3,
+	"qbs",	"뷴",	3,
+	"qbf",	"뷸",	3,
+	"qba",	"븀",	3,
+	"qbt",	"븃",	3,
+	"qbd",	"븅",	3,
+	"qmr",	"븍",	3,
+	"qms",	"븐",	3,
+	"qmf",	"블",	3,
+	"qma",	"븜",	3,
+	"qmq",	"븝",	3,
+	"qmt",	"븟",	3,
+	"qlr",	"빅",	3,
+	"qls",	"빈",	3,
+	"qlf",	"빌",	3,
+	"qlM",	"빎",	3,
+	"qla",	"빔",	3,
+	"qlq",	"빕",	3,
+	"qlt",	"빗",	3,
+	"qld",	"빙",	3,
+	"qlw",	"빚",	3,
+	"qlc",	"빛",	3,
+	"Qkr",	"빡",	3,
+	"Qks",	"빤",	3,
+	"Qkf",	"빨",	3,
+	"QkM",	"빪",	3,
+	"Qka",	"빰",	3,
+	"Qkq",	"빱",	3,
+	"Qkt",	"빳",	3,
+	"QkT",	"빴",	3,
+	"Qkd",	"빵",	3,
+	"Qkg",	"빻",	3,
+	"Qor",	"빽",	3,
+	"Qos",	"뺀",	3,
+	"Qof",	"뺄",	3,
+	"Qoa",	"뺌",	3,
+	"Qoq",	"뺍",	3,
+	"Qot",	"뺏",	3,
+	"QoT",	"뺐",	3,
+	"Qod",	"뺑",	3,
+	"Qir",	"뺙",	3,
+	"Qia",	"뺨",	3,
+	"Qjr",	"뻑",	3,
+	"Qjs",	"뻔",	3,
+	"Qje",	"뻗",	3,
+	"Qjf",	"뻘",	3,
+	"Qja",	"뻠",	3,
+	"Qjt",	"뻣",	3,
+	"QjT",	"뻤",	3,
+	"Qjd",	"뻥",	3,
+	"Qpd",	"뼁",	3,
+	"Qur",	"뼉",	3,
+	"Qua",	"뼘",	3,
+	"Quq",	"뼙",	3,
+	"Qut",	"뼛",	3,
+	"QuT",	"뼜",	3,
+	"Qud",	"뼝",	3,
+	"Qhr",	"뽁",	3,
+	"Qhs",	"뽄",	3,
+	"Qhf",	"뽈",	3,
+	"Qha",	"뽐",	3,
+	"Qhq",	"뽑",	3,
+	"Qhd",	"뽕",	3,
+	"Qyd",	"뿅",	3,
+	"Qnr",	"뿍",	3,
+	"Qns",	"뿐",	3,
+	"Qnf",	"뿔",	3,
+	"Qna",	"뿜",	3,
+	"Qnt",	"뿟",	3,
+	"Qnd",	"뿡",	3,
+	"Qbd",	"쁑",	3,
+	"Qms",	"쁜",	3,
+	"Qmf",	"쁠",	3,
+	"Qma",	"쁨",	3,
+	"Qmq",	"쁩",	3,
+	"Qlr",	"삑",	3,
+	"Qls",	"삔",	3,
+	"Qlf",	"삘",	3,
+	"Qla",	"삠",	3,
+	"Qlq",	"삡",	3,
+	"Qlt",	"삣",	3,
+	"Qld",	"삥",	3,
+	"tkr",	"삭",	3,
+	"tkS",	"삯",	3,
+	"tks",	"산",	3,
+	"tke",	"삳",	3,
+	"tkf",	"살",	3,
+	"tkG",	"삵",	3,
+	"tkM",	"삶",	3,
+	"tka",	"삼",	3,
+	"tkq",	"삽",	3,
+	"tkt",	"삿",	3,
+	"tkT",	"샀",	3,
+	"tkd",	"상",	3,
+	"tkx",	"샅",	3,
+	"tor",	"색",	3,
+	"tos",	"샌",	3,
+	"tof",	"샐",	3,
+	"toa",	"샘",	3,
+	"toq",	"샙",	3,
+	"tot",	"샛",	3,
+	"toT",	"샜",	3,
+	"tod",	"생",	3,
+	"tir",	"샥",	3,
+	"tis",	"샨",	3,
+	"tif",	"샬",	3,
+	"tia",	"샴",	3,
+	"tiq",	"샵",	3,
+	"tit",	"샷",	3,
+	"tid",	"샹",	3,
+	"tOs",	"섄",	3,
+	"tOf",	"섈",	3,
+	"tOa",	"섐",	3,
+	"tOd",	"섕",	3,
+	"tjr",	"석",	3,
+	"tjR",	"섞",	3,
+	"tjS",	"섟",	3,
+	"tjs",	"선",	3,
+	"tje",	"섣",	3,
+	"tjf",	"설",	3,
+	"tjM",	"섦",	3,
+	"tjA",	"섧",	3,
+	"tja",	"섬",	3,
+	"tjq",	"섭",	3,
+	"tjt",	"섯",	3,
+	"tjT",	"섰",	3,
+	"tjd",	"성",	3,
+	"tjv",	"섶",	3,
+	"tpr",	"섹",	3,
+	"tps",	"센",	3,
+	"tpf",	"셀",	3,
+	"tpa",	"셈",	3,
+	"tpq",	"셉",	3,
+	"tpt",	"셋",	3,
+	"tpT",	"셌",	3,
+	"tpd",	"셍",	3,
+	"tur",	"셕",	3,
+	"tus",	"션",	3,
+	"tuf",	"셜",	3,
+	"tua",	"셤",	3,
+	"tuq",	"셥",	3,
+	"tut",	"셧",	3,
+	"tuT",	"셨",	3,
+	"tud",	"셩",	3,
+	"tPs",	"셴",	3,
+	"tPf",	"셸",	3,
+	"tPd",	"솅",	3,
+	"thr",	"속",	3,
+	"thR",	"솎",	3,
+	"ths",	"손",	3,
+	"thf",	"솔",	3,
+	"thM",	"솖",	3,
+	"tha",	"솜",	3,
+	"thq",	"솝",	3,
+	"tht",	"솟",	3,
+	"thd",	"송",	3,
+	"thx",	"솥",	3,
+	"tKr",	"솩",	3,
+	"tKs",	"솬",	3,
+	"tKf",	"솰",	3,
+	"tKd",	"솽",	3,
+	"tHs",	"쇈",	3,
+	"tHf",	"쇌",	3,
+	"tHa",	"쇔",	3,
+	"tHt",	"쇗",	3,
+	"tHT",	"쇘",	3,
+	"tLs",	"쇤",	3,
+	"tLf",	"쇨",	3,
+	"tLa",	"쇰",	3,
+	"tLq",	"쇱",	3,
+	"tLt",	"쇳",	3,
+	"tyr",	"쇽",	3,
+	"tys",	"숀",	3,
+	"tyf",	"숄",	3,
+	"tya",	"숌",	3,
+	"tyq",	"숍",	3,
+	"tyt",	"숏",	3,
+	"tyd",	"숑",	3,
+	"tnr",	"숙",	3,
+	"tns",	"순",	3,
+	"tne",	"숟",	3,
+	"tnf",	"술",	3,
+	"tna",	"숨",	3,
+	"tnq",	"숩",	3,
+	"tnt",	"숫",	3,
+	"tnd",	"숭",	3,
+	"tnc",	"숯",	3,
+	"tnx",	"숱",	3,
+	"tnv",	"숲",	3,
+	"tJT",	"쉈",	3,
+	"tNr",	"쉑",	3,
+	"tNs",	"쉔",	3,
+	"tNf",	"쉘",	3,
+	"tNa",	"쉠",	3,
+	"tNd",	"쉥",	3,
+	"tBr",	"쉭",	3,
+	"tBs",	"쉰",	3,
+	"tBf",	"쉴",	3,
+	"tBa",	"쉼",	3,
+	"tBq",	"쉽",	3,
+	"tBt",	"쉿",	3,
+	"tBd",	"슁",	3,
+	"tbr",	"슉",	3,
+	"tbf",	"슐",	3,
+	"tba",	"슘",	3,
+	"tbt",	"슛",	3,
+	"tbd",	"슝",	3,
+	"tmr",	"슥",	3,
+	"tms",	"슨",	3,
+	"tmf",	"슬",	3,
+	"tmG",	"슭",	3,
+	"tma",	"슴",	3,
+	"tmq",	"습",	3,
+	"tmt",	"슷",	3,
+	"tmd",	"승",	3,
+	"tlr",	"식",	3,
+	"tls",	"신",	3,
+	"tle",	"싣",	3,
+	"tlf",	"실",	3,
+	"tlF",	"싫",	3,
+	"tla",	"심",	3,
+	"tlq",	"십",	3,
+	"tlt",	"싯",	3,
+	"tld",	"싱",	3,
+	"tlv",	"싶",	3,
+	"Tkr",	"싹",	3,
+	"TkS",	"싻",	3,
+	"Tks",	"싼",	3,
+	"Tkf",	"쌀",	3,
+	"Tka",	"쌈",	3,
+	"Tkq",	"쌉",	3,
+	"TkT",	"쌌",	3,
+	"Tkd",	"쌍",	3,
+	"Tkg",	"쌓",	3,
+	"Tor",	"쌕",	3,
+	"Tos",	"쌘",	3,
+	"Tof",	"쌜",	3,
+	"Toa",	"쌤",	3,
+	"Toq",	"쌥",	3,
+	"ToT",	"쌨",	3,
+	"Tod",	"쌩",	3,
+	"Tid",	"썅",	3,
+	"Tjr",	"썩",	3,
+	"Tjs",	"썬",	3,
+	"Tjf",	"썰",	3,
+	"TjM",	"썲",	3,
+	"Tja",	"썸",	3,
+	"Tjq",	"썹",	3,
+	"TjT",	"썼",	3,
+	"Tjd",	"썽",	3,
+	"Tps",	"쎈",	3,
+	"Tpf",	"쎌",	3,
+	"TPs",	"쏀",	3,
+	"Thr",	"쏙",	3,
+	"Ths",	"쏜",	3,
+	"The",	"쏟",	3,
+	"Thf",	"쏠",	3,
+	"ThM",	"쏢",	3,
+	"Tha",	"쏨",	3,
+	"Thq",	"쏩",	3,
+	"Thd",	"쏭",	3,
+	"TKr",	"쏵",	3,
+	"TKs",	"쏸",	3,
+	"TKT",	"쐈",	3,
+	"THT",	"쐤",	3,
+	"TLs",	"쐰",	3,
+	"TLf",	"쐴",	3,
+	"TLa",	"쐼",	3,
+	"TLq",	"쐽",	3,
+	"Tnr",	"쑥",	3,
+	"Tns",	"쑨",	3,
+	"Tnf",	"쑬",	3,
+	"Tna",	"쑴",	3,
+	"Tnq",	"쑵",	3,
+	"Tnd",	"쑹",	3,
+	"TJT",	"쒔",	3,
+	"TBs",	"쒼",	3,
+	"Tbd",	"쓩",	3,
+	"Tmr",	"쓱",	3,
+	"Tms",	"쓴",	3,
+	"Tmf",	"쓸",	3,
+	"TmM",	"쓺",	3,
+	"TmF",	"쓿",	3,
+	"Tma",	"씀",	3,
+	"Tmq",	"씁",	3,
+	"TMs",	"씐",	3,
+	"TMf",	"씔",	3,
+	"TMa",	"씜",	3,
+	"Tlr",	"씩",	3,
+	"Tls",	"씬",	3,
+	"Tlf",	"씰",	3,
+	"Tla",	"씸",	3,
+	"Tlq",	"씹",	3,
+	"Tlt",	"씻",	3,
+	"Tld",	"씽",	3,
+	"dkr",	"악",	3,
+	"dks",	"안",	3,
+	"dkJ",	"앉",	3,
+	"dkH",	"않",	3,
+	"dkf",	"알",	3,
+	"dkG",	"앍",	3,
+	"dkM",	"앎",	3,
+	"dkF",	"앓",	3,
+	"dka",	"암",	3,
+	"dkq",	"압",	3,
+	"dkt",	"앗",	3,
+	"dkT",	"았",	3,
+	"dkd",	"앙",	3,
+	"dkx",	"앝",	3,
+	"dkv",	"앞",	3,
+	"dor",	"액",	3,
+	"dos",	"앤",	3,
+	"dof",	"앨",	3,
+	"doa",	"앰",	3,
+	"doq",	"앱",	3,
+	"dot",	"앳",	3,
+	"doT",	"앴",	3,
+	"dod",	"앵",	3,
+	"dir",	"약",	3,
+	"dis",	"얀",	3,
+	"dif",	"얄",	3,
+	"diA",	"얇",	3,
+	"dia",	"얌",	3,
+	"diq",	"얍",	3,
+	"dit",	"얏",	3,
+	"did",	"양",	3,
+	"dix",	"얕",	3,
+	"dig",	"얗",	3,
+	"dOs",	"얜",	3,
+	"dOf",	"얠",	3,
+	"dOq",	"얩",	3,
+	"djr",	"억",	3,
+	"djs",	"언",	3,
+	"djJ",	"얹",	3,
+	"dje",	"얻",	3,
+	"djf",	"얼",	3,
+	"djG",	"얽",	3,
+	"djM",	"얾",	3,
+	"dja",	"엄",	3,
+	"djq",	"업",	3,
+	"djC",	"없",	3,
+	"djt",	"엇",	3,
+	"djT",	"었",	3,
+	"djd",	"엉",	3,
+	"djw",	"엊",	3,
+	"djz",	"엌",	3,
+	"djv",	"엎",	3,
+	"dpr",	"엑",	3,
+	"dps",	"엔",	3,
+	"dpf",	"엘",	3,
+	"dpa",	"엠",	3,
+	"dpq",	"엡",	3,
+	"dpt",	"엣",	3,
+	"dpd",	"엥",	3,
+	"dur",	"역",	3,
+	"duR",	"엮",	3,
+	"dus",	"연",	3,
+	"duf",	"열",	3,
+	"duM",	"엶",	3,
+	"duA",	"엷",	3,
+	"dua",	"염",	3,
+	"duq",	"엽",	3,
+	"duC",	"엾",	3,
+	"dut",	"엿",	3,
+	"duT",	"였",	3,
+	"dud",	"영",	3,
+	"dux",	"옅",	3,
+	"duv",	"옆",	3,
+	"dug",	"옇",	3,
+	"dPs",	"옌",	3,
+	"dPf",	"옐",	3,
+	"dPa",	"옘",	3,
+	"dPq",	"옙",	3,
+	"dPt",	"옛",	3,
+	"dPT",	"옜",	3,
+	"dhr",	"옥",	3,
+	"dhs",	"온",	3,
+	"dhf",	"올",	3,
+	"dhG",	"옭",	3,
+	"dhM",	"옮",	3,
+	"dhN",	"옰",	3,
+	"dhF",	"옳",	3,
+	"dha",	"옴",	3,
+	"dhq",	"옵",	3,
+	"dht",	"옷",	3,
+	"dhd",	"옹",	3,
+	"dhc",	"옻",	3,
+	"dKr",	"왁",	3,
+	"dKs",	"완",	3,
+	"dKf",	"왈",	3,
+	"dKa",	"왐",	3,
+	"dKq",	"왑",	3,
+	"dKt",	"왓",	3,
+	"dKT",	"왔",	3,
+	"dKd",	"왕",	3,
+	"dHr",	"왝",	3,
+	"dHs",	"왠",	3,
+	"dHa",	"왬",	3,
+	"dHt",	"왯",	3,
+	"dHd",	"왱",	3,
+	"dLr",	"왹",	3,
+	"dLs",	"왼",	3,
+	"dLf",	"욀",	3,
+	"dLa",	"욈",	3,
+	"dLq",	"욉",	3,
+	"dLt",	"욋",	3,
+	"dLd",	"욍",	3,
+	"dyr",	"욕",	3,
+	"dys",	"욘",	3,
+	"dyf",	"욜",	3,
+	"dya",	"욤",	3,
+	"dyq",	"욥",	3,
+	"dyt",	"욧",	3,
+	"dyd",	"용",	3,
+	"dnr",	"욱",	3,
+	"dns",	"운",	3,
+	"dnf",	"울",	3,
+	"dnG",	"욹",	3,
+	"dnM",	"욺",	3,
+	"dna",	"움",	3,
+	"dnq",	"웁",	3,
+	"dnt",	"웃",	3,
+	"dnd",	"웅",	3,
+	"dJr",	"웍",	3,
+	"dJs",	"원",	3,
+	"dJf",	"월",	3,
+	"dJa",	"웜",	3,
+	"dJq",	"웝",	3,
+	"dJT",	"웠",	3,
+	"dJd",	"웡",	3,
+	"dNr",	"웩",	3,
+	"dNs",	"웬",	3,
+	"dNf",	"웰",	3,
+	"dNa",	"웸",	3,
+	"dNq",	"웹",	3,
+	"dNd",	"웽",	3,
+	"dBr",	"윅",	3,
+	"dBs",	"윈",	3,
+	"dBf",	"윌",	3,
+	"dBa",	"윔",	3,
+	"dBq",	"윕",	3,
+	"dBt",	"윗",	3,
+	"dBd",	"윙",	3,
+	"dbr",	"육",	3,
+	"dbs",	"윤",	3,
+	"dbf",	"율",	3,
+	"dba",	"윰",	3,
+	"dbq",	"윱",	3,
+	"dbt",	"윳",	3,
+	"dbd",	"융",	3,
+	"dbc",	"윷",	3,
+	"dmr",	"윽",	3,
+	"dms",	"은",	3,
+	"dmf",	"을",	3,
+	"dmV",	"읊",	3,
+	"dma",	"음",	3,
+	"dmq",	"읍",	3,
+	"dmt",	"읏",	3,
+	"dmd",	"응",	3,
+	"dmw",	"읒",	3,
+	"dmc",	"읓",	3,
+	"dmz",	"읔",	3,
+	"dmx",	"읕",	3,
+	"dmv",	"읖",	3,
+	"dmg",	"읗",	3,
+	"dMs",	"읜",	3,
+	"dMf",	"읠",	3,
+	"dMa",	"읨",	3,
+	"dMt",	"읫",	3,
+	"dlr",	"익",	3,
+	"dls",	"인",	3,
+	"dlf",	"일",	3,
+	"dlG",	"읽",	3,
+	"dlM",	"읾",	3,
+	"dlF",	"잃",	3,
+	"dla",	"임",	3,
+	"dlq",	"입",	3,
+	"dlt",	"잇",	3,
+	"dlT",	"있",	3,
+	"dld",	"잉",	3,
+	"dlw",	"잊",	3,
+	"dlv",	"잎",	3,
+	"wkr",	"작",	3,
+	"wks",	"잔",	3,
+	"wkH",	"잖",	3,
+	"wke",	"잗",	3,
+	"wkf",	"잘",	3,
+	"wkM",	"잚",	3,
+	"wka",	"잠",	3,
+	"wkq",	"잡",	3,
+	"wkt",	"잣",	3,
+	"wkT",	"잤",	3,
+	"wkd",	"장",	3,
+	"wkw",	"잦",	3,
+	"wor",	"잭",	3,
+	"wos",	"잰",	3,
+	"wof",	"잴",	3,
+	"woa",	"잼",	3,
+	"woq",	"잽",	3,
+	"wot",	"잿",	3,
+	"woT",	"쟀",	3,
+	"wod",	"쟁",	3,
+	"wir",	"쟉",	3,
+	"wis",	"쟌",	3,
+	"wiH",	"쟎",	3,
+	"wif",	"쟐",	3,
+	"wia",	"쟘",	3,
+	"wid",	"쟝",	3,
+	"wOs",	"쟨",	3,
+	"wOf",	"쟬",	3,
+	"wjr",	"적",	3,
+	"wjs",	"전",	3,
+	"wjf",	"절",	3,
+	"wjM",	"젊",	3,
+	"wja",	"점",	3,
+	"wjq",	"접",	3,
+	"wjt",	"젓",	3,
+	"wjd",	"정",	3,
+	"wjw",	"젖",	3,
+	"wpr",	"젝",	3,
+	"wps",	"젠",	3,
+	"wpf",	"젤",	3,
+	"wpa",	"젬",	3,
+	"wpq",	"젭",	3,
+	"wpt",	"젯",	3,
+	"wpd",	"젱",	3,
+	"wus",	"젼",	3,
+	"wuf",	"졀",	3,
+	"wua",	"졈",	3,
+	"wuq",	"졉",	3,
+	"wuT",	"졌",	3,
+	"wud",	"졍",	3,
+	"whr",	"족",	3,
+	"whs",	"존",	3,
+	"whf",	"졸",	3,
+	"whM",	"졺",	3,
+	"wha",	"좀",	3,
+	"whq",	"좁",	3,
+	"wht",	"좃",	3,
+	"whd",	"종",	3,
+	"whw",	"좆",	3,
+	"whc",	"좇",	3,
+	"whg",	"좋",	3,
+	"wKr",	"좍",	3,
+	"wKf",	"좔",	3,
+	"wKq",	"좝",	3,
+	"wKt",	"좟",	3,
+	"wKd",	"좡",	3,
+	"wHT",	"좼",	3,
+	"wHd",	"좽",	3,
+	"wLs",	"죈",	3,
+	"wLf",	"죌",	3,
+	"wLa",	"죔",	3,
+	"wLq",	"죕",	3,
+	"wLt",	"죗",	3,
+	"wLd",	"죙",	3,
+	"wyr",	"죡",	3,
+	"wys",	"죤",	3,
+	"wyd",	"죵",	3,
+	"wnr",	"죽",	3,
+	"wns",	"준",	3,
+	"wnf",	"줄",	3,
+	"wnG",	"줅",	3,
+	"wnM",	"줆",	3,
+	"wna",	"줌",	3,
+	"wnq",	"줍",	3,
+	"wnt",	"줏",	3,
+	"wnd",	"중",	3,
+	"wJT",	"줬",	3,
+	"wBr",	"쥑",	3,
+	"wBs",	"쥔",	3,
+	"wBf",	"쥘",	3,
+	"wBa",	"쥠",	3,
+	"wBq",	"쥡",	3,
+	"wBt",	"쥣",	3,
+	"wbs",	"쥰",	3,
+	"wbf",	"쥴",	3,
+	"wba",	"쥼",	3,
+	"wmr",	"즉",	3,
+	"wms",	"즌",	3,
+	"wmf",	"즐",	3,
+	"wma",	"즘",	3,
+	"wmq",	"즙",	3,
+	"wmt",	"즛",	3,
+	"wmd",	"증",	3,
+	"wlr",	"직",	3,
+	"wls",	"진",	3,
+	"wle",	"짇",	3,
+	"wlf",	"질",	3,
+	"wlM",	"짊",	3,
+	"wla",	"짐",	3,
+	"wlq",	"집",	3,
+	"wlt",	"짓",	3,
+	"wld",	"징",	3,
+	"wlw",	"짖",	3,
+	"wlx",	"짙",	3,
+	"wlv",	"짚",	3,
+	"Wkr",	"짝",	3,
+	"Wks",	"짠",	3,
+	"WkH",	"짢",	3,
+	"Wkf",	"짤",	3,
+	"WkA",	"짧",	3,
+	"Wka",	"짬",	3,
+	"Wkq",	"짭",	3,
+	"Wkt",	"짯",	3,
+	"WkT",	"짰",	3,
+	"Wkd",	"짱",	3,
+	"Wor",	"짹",	3,
+	"Wos",	"짼",	3,
+	"Wof",	"쨀",	3,
+	"Woa",	"쨈",	3,
+	"Woq",	"쨉",	3,
+	"Wot",	"쨋",	3,
+	"WoT",	"쨌",	3,
+	"Wod",	"쨍",	3,
+	"Wis",	"쨘",	3,
+	"Wid",	"쨩",	3,
+	"Wjr",	"쩍",	3,
+	"Wjs",	"쩐",	3,
+	"Wjf",	"쩔",	3,
+	"Wja",	"쩜",	3,
+	"Wjq",	"쩝",	3,
+	"Wjt",	"쩟",	3,
+	"WjT",	"쩠",	3,
+	"Wjd",	"쩡",	3,
+	"Wpd",	"쩽",	3,
+	"WuT",	"쪘",	3,
+	"Whr",	"쪽",	3,
+	"Whs",	"쫀",	3,
+	"Whf",	"쫄",	3,
+	"Wha",	"쫌",	3,
+	"Whq",	"쫍",	3,
+	"Wht",	"쫏",	3,
+	"Whd",	"쫑",	3,
+	"Whc",	"쫓",	3,
+	"WKr",	"쫙",	3,
+	"WKf",	"쫠",	3,
+	"WKT",	"쫬",	3,
+	"WHT",	"쬈",	3,
+	"WLs",	"쬔",	3,
+	"WLf",	"쬘",	3,
+	"WLa",	"쬠",	3,
+	"WLq",	"쬡",	3,
+	"Wyd",	"쭁",	3,
+	"Wnr",	"쭉",	3,
+	"Wns",	"쭌",	3,
+	"Wnf",	"쭐",	3,
+	"Wna",	"쭘",	3,
+	"Wnq",	"쭙",	3,
+	"Wnd",	"쭝",	3,
+	"WJT",	"쭸",	3,
+	"WJd",	"쭹",	3,
+	"Wma",	"쯤",	3,
+	"Wmt",	"쯧",	3,
+	"Wmd",	"쯩",	3,
+	"Wlr",	"찍",	3,
+	"Wls",	"찐",	3,
+	"Wlf",	"찔",	3,
+	"Wla",	"찜",	3,
+	"Wlq",	"찝",	3,
+	"Wld",	"찡",	3,
+	"Wlw",	"찢",	3,
+	"Wlg",	"찧",	3,
+	"ckr",	"착",	3,
+	"cks",	"찬",	3,
+	"ckH",	"찮",	3,
+	"ckf",	"찰",	3,
+	"cka",	"참",	3,
+	"ckq",	"찹",	3,
+	"ckt",	"찻",	3,
+	"ckT",	"찼",	3,
+	"ckd",	"창",	3,
+	"ckw",	"찾",	3,
+	"cor",	"책",	3,
+	"cos",	"챈",	3,
+	"cof",	"챌",	3,
+	"coa",	"챔",	3,
+	"coq",	"챕",	3,
+	"cot",	"챗",	3,
+	"coT",	"챘",	3,
+	"cod",	"챙",	3,
+	"cis",	"챤",	3,
+	"ciH",	"챦",	3,
+	"cif",	"챨",	3,
+	"cia",	"챰",	3,
+	"cid",	"챵",	3,
+	"cjr",	"척",	3,
+	"cjs",	"천",	3,
+	"cjf",	"철",	3,
+	"cja",	"첨",	3,
+	"cjq",	"첩",	3,
+	"cjt",	"첫",	3,
+	"cjT",	"첬",	3,
+	"cjd",	"청",	3,
+	"cpr",	"첵",	3,
+	"cps",	"첸",	3,
+	"cpf",	"첼",	3,
+	"cpa",	"쳄",	3,
+	"cpq",	"쳅",	3,
+	"cpt",	"쳇",	3,
+	"cpd",	"쳉",	3,
+	"cus",	"쳔",	3,
+	"cuT",	"쳤",	3,
+	"cPs",	"쳰",	3,
+	"cPd",	"촁",	3,
+	"chr",	"촉",	3,
+	"chs",	"촌",	3,
+	"chf",	"촐",	3,
+	"cha",	"촘",	3,
+	"chq",	"촙",	3,
+	"cht",	"촛",	3,
+	"chd",	"총",	3,
+	"cKs",	"촨",	3,
+	"cKf",	"촬",	3,
+	"cKd",	"촹",	3,
+	"cLs",	"쵠",	3,
+	"cLf",	"쵤",	3,
+	"cLa",	"쵬",	3,
+	"cLq",	"쵭",	3,
+	"cLt",	"쵯",	3,
+	"cLd",	"쵱",	3,
+	"cya",	"춈",	3,
+	"cnr",	"축",	3,
+	"cns",	"춘",	3,
+	"cnf",	"출",	3,
+	"cna",	"춤",	3,
+	"cnq",	"춥",	3,
+	"cnt",	"춧",	3,
+	"cnd",	"충",	3,
+	"cJT",	"췄",	3,
+	"cNs",	"췐",	3,
+	"cBs",	"췬",	3,
+	"cBf",	"췰",	3,
+	"cBa",	"췸",	3,
+	"cBq",	"췹",	3,
+	"cBt",	"췻",	3,
+	"cBd",	"췽",	3,
+	"cbs",	"츈",	3,
+	"cbf",	"츌",	3,
+	"cba",	"츔",	3,
+	"cbd",	"츙",	3,
+	"cmr",	"측",	3,
+	"cms",	"츤",	3,
+	"cmf",	"츨",	3,
+	"cma",	"츰",	3,
+	"cmq",	"츱",	3,
+	"cmt",	"츳",	3,
+	"cmd",	"층",	3,
+	"clr",	"칙",	3,
+	"cls",	"친",	3,
+	"cle",	"칟",	3,
+	"clf",	"칠",	3,
+	"clG",	"칡",	3,
+	"cla",	"침",	3,
+	"clq",	"칩",	3,
+	"clt",	"칫",	3,
+	"cld",	"칭",	3,
+	"zkr",	"칵",	3,
+	"zks",	"칸",	3,
+	"zkf",	"칼",	3,
+	"zka",	"캄",	3,
+	"zkq",	"캅",	3,
+	"zkt",	"캇",	3,
+	"zkd",	"캉",	3,
+	"zor",	"캑",	3,
+	"zos",	"캔",	3,
+	"zof",	"캘",	3,
+	"zoa",	"캠",	3,
+	"zoq",	"캡",	3,
+	"zot",	"캣",	3,
+	"zoT",	"캤",	3,
+	"zod",	"캥",	3,
+	"zir",	"캭",	3,
+	"zid",	"컁",	3,
+	"zjr",	"컥",	3,
+	"zjs",	"컨",	3,
+	"zje",	"컫",	3,
+	"zjf",	"컬",	3,
+	"zja",	"컴",	3,
+	"zjq",	"컵",	3,
+	"zjt",	"컷",	3,
+	"zjT",	"컸",	3,
+	"zjd",	"컹",	3,
+	"zpr",	"켁",	3,
+	"zps",	"켄",	3,
+	"zpf",	"켈",	3,
+	"zpa",	"켐",	3,
+	"zpq",	"켑",	3,
+	"zpt",	"켓",	3,
+	"zpd",	"켕",	3,
+	"zus",	"켠",	3,
+	"zuf",	"켤",	3,
+	"zua",	"켬",	3,
+	"zuq",	"켭",	3,
+	"zut",	"켯",	3,
+	"zuT",	"켰",	3,
+	"zud",	"켱",	3,
+	"zhr",	"콕",	3,
+	"zhs",	"콘",	3,
+	"zhf",	"콜",	3,
+	"zha",	"콤",	3,
+	"zhq",	"콥",	3,
+	"zht",	"콧",	3,
+	"zhd",	"콩",	3,
+	"zKr",	"콱",	3,
+	"zKs",	"콴",	3,
+	"zKf",	"콸",	3,
+	"zKa",	"쾀",	3,
+	"zKd",	"쾅",	3,
+	"zHd",	"쾡",	3,
+	"zLf",	"쾰",	3,
+	"znr",	"쿡",	3,
+	"zns",	"쿤",	3,
+	"znf",	"쿨",	3,
+	"zna",	"쿰",	3,
+	"znq",	"쿱",	3,
+	"znt",	"쿳",	3,
+	"znd",	"쿵",	3,
+	"zJs",	"퀀",	3,
+	"zJf",	"퀄",	3,
+	"zJd",	"퀑",	3,
+	"zNd",	"퀭",	3,
+	"zBr",	"퀵",	3,
+	"zBs",	"퀸",	3,
+	"zBf",	"퀼",	3,
+	"zBa",	"큄",	3,
+	"zBq",	"큅",	3,
+	"zBt",	"큇",	3,
+	"zBd",	"큉",	3,
+	"zbs",	"큔",	3,
+	"zbf",	"큘",	3,
+	"zba",	"큠",	3,
+	"zmr",	"큭",	3,
+	"zms",	"큰",	3,
+	"zmf",	"클",	3,
+	"zma",	"큼",	3,
+	"zmq",	"큽",	3,
+	"zmd",	"킁",	3,
+	"zlr",	"킥",	3,
+	"zls",	"킨",	3,
+	"zlf",	"킬",	3,
+	"zla",	"킴",	3,
+	"zlq",	"킵",	3,
+	"zlt",	"킷",	3,
+	"zld",	"킹",	3,
+	"xkr",	"탁",	3,
+	"xks",	"탄",	3,
+	"xkf",	"탈",	3,
+	"xkG",	"탉",	3,
+	"xka",	"탐",	3,
+	"xkq",	"탑",	3,
+	"xkt",	"탓",	3,
+	"xkT",	"탔",	3,
+	"xkd",	"탕",	3,
+	"xor",	"택",	3,
+	"xos",	"탠",	3,
+	"xof",	"탤",	3,
+	"xoa",	"탬",	3,
+	"xoq",	"탭",	3,
+	"xot",	"탯",	3,
+	"xoT",	"탰",	3,
+	"xod",	"탱",	3,
+	"xid",	"턍",	3,
+	"xjr",	"턱",	3,
+	"xjs",	"턴",	3,
+	"xjf",	"털",	3,
+	"xjM",	"턺",	3,
+	"xja",	"텀",	3,
+	"xjq",	"텁",	3,
+	"xjt",	"텃",	3,
+	"xjT",	"텄",	3,
+	"xjd",	"텅",	3,
+	"xpr",	"텍",	3,
+	"xps",	"텐",	3,
+	"xpf",	"텔",	3,
+	"xpa",	"템",	3,
+	"xpq",	"텝",	3,
+	"xpt",	"텟",	3,
+	"xpd",	"텡",	3,
+	"xus",	"텬",	3,
+	"xuT",	"텼",	3,
+	"xPs",	"톈",	3,
+	"xhr",	"톡",	3,
+	"xhs",	"톤",	3,
+	"xhf",	"톨",	3,
+	"xha",	"톰",	3,
+	"xhq",	"톱",	3,
+	"xht",	"톳",	3,
+	"xhd",	"통",	3,
+	"xhv",	"톺",	3,
+	"xKs",	"퇀",	3,
+	"xLs",	"퇸",	3,
+	"xLt",	"툇",	3,
+	"xLd",	"툉",	3,
+	"xnr",	"툭",	3,
+	"xns",	"툰",	3,
+	"xnf",	"툴",	3,
+	"xna",	"툼",	3,
+	"xnq",	"툽",	3,
+	"xnt",	"툿",	3,
+	"xnd",	"퉁",	3,
+	"xJT",	"퉜",	3,
+	"xBr",	"튁",	3,
+	"xBs",	"튄",	3,
+	"xBf",	"튈",	3,
+	"xBa",	"튐",	3,
+	"xBq",	"튑",	3,
+	"xBd",	"튕",	3,
+	"xbs",	"튠",	3,
+	"xbf",	"튤",	3,
+	"xba",	"튬",	3,
+	"xbd",	"튱",	3,
+	"xmr",	"특",	3,
+	"xms",	"튼",	3,
+	"xme",	"튿",	3,
+	"xmf",	"틀",	3,
+	"xmM",	"틂",	3,
+	"xma",	"틈",	3,
+	"xmq",	"틉",	3,
+	"xmt",	"틋",	3,
+	"xMs",	"틘",	3,
+	"xMf",	"틜",	3,
+	"xMa",	"틤",	3,
+	"xMq",	"틥",	3,
+	"xlr",	"틱",	3,
+	"xls",	"틴",	3,
+	"xlf",	"틸",	3,
+	"xla",	"팀",	3,
+	"xlq",	"팁",	3,
+	"xlt",	"팃",	3,
+	"xld",	"팅",	3,
+	"vkr",	"팍",	3,
+	"vkR",	"팎",	3,
+	"vks",	"판",	3,
+	"vkf",	"팔",	3,
+	"vkM",	"팖",	3,
+	"vka",	"팜",	3,
+	"vkq",	"팝",	3,
+	"vkt",	"팟",	3,
+	"vkT",	"팠",	3,
+	"vkd",	"팡",	3,
+	"vkx",	"팥",	3,
+	"vor",	"팩",	3,
+	"vos",	"팬",	3,
+	"vof",	"팰",	3,
+	"voa",	"팸",	3,
+	"voq",	"팹",	3,
+	"vot",	"팻",	3,
+	"voT",	"팼",	3,
+	"vod",	"팽",	3,
+	"vir",	"퍅",	3,
+	"vjr",	"퍽",	3,
+	"vjs",	"펀",	3,
+	"vjf",	"펄",	3,
+	"vja",	"펌",	3,
+	"vjq",	"펍",	3,
+	"vjt",	"펏",	3,
+	"vjT",	"펐",	3,
+	"vjd",	"펑",	3,
+	"vpr",	"펙",	3,
+	"vps",	"펜",	3,
+	"vpf",	"펠",	3,
+	"vpa",	"펨",	3,
+	"vpq",	"펩",	3,
+	"vpt",	"펫",	3,
+	"vpd",	"펭",	3,
+	"vus",	"편",	3,
+	"vuf",	"펼",	3,
+	"vua",	"폄",	3,
+	"vuq",	"폅",	3,
+	"vuT",	"폈",	3,
+	"vud",	"평",	3,
+	"vPf",	"폘",	3,
+	"vPq",	"폡",	3,
+	"vPt",	"폣",	3,
+	"vhr",	"폭",	3,
+	"vhs",	"폰",	3,
+	"vhf",	"폴",	3,
+	"vha",	"폼",	3,
+	"vhq",	"폽",	3,
+	"vht",	"폿",	3,
+	"vhd",	"퐁",	3,
+	"vKd",	"퐝",	3,
+	"vLs",	"푄",	3,
+	"vys",	"푠",	3,
+	"vyf",	"푤",	3,
+	"vyq",	"푭",	3,
+	"vyt",	"푯",	3,
+	"vnr",	"푹",	3,
+	"vns",	"푼",	3,
+	"vne",	"푿",	3,
+	"vnf",	"풀",	3,
+	"vnM",	"풂",	3,
+	"vna",	"품",	3,
+	"vnq",	"풉",	3,
+	"vnt",	"풋",	3,
+	"vnd",	"풍",	3,
+	"vJd",	"풩",	3,
+	"vBs",	"퓐",	3,
+	"vBf",	"퓔",	3,
+	"vBa",	"퓜",	3,
+	"vBt",	"퓟",	3,
+	"vbs",	"퓬",	3,
+	"vbf",	"퓰",	3,
+	"vba",	"퓸",	3,
+	"vbt",	"퓻",	3,
+	"vbd",	"퓽",	3,
+	"vms",	"픈",	3,
+	"vmf",	"플",	3,
+	"vma",	"픔",	3,
+	"vmq",	"픕",	3,
+	"vmt",	"픗",	3,
+	"vlr",	"픽",	3,
+	"vls",	"핀",	3,
+	"vlf",	"필",	3,
+	"vla",	"핌",	3,
+	"vlq",	"핍",	3,
+	"vlt",	"핏",	3,
+	"vld",	"핑",	3,
+	"gkr",	"학",	3,
+	"gks",	"한",	3,
+	"gkf",	"할",	3,
+	"gkB",	"핥",	3,
+	"gka",	"함",	3,
+	"gkq",	"합",	3,
+	"gkt",	"핫",	3,
+	"gkd",	"항",	3,
+	"gor",	"핵",	3,
+	"gos",	"핸",	3,
+	"gof",	"핼",	3,
+	"goa",	"햄",	3,
+	"goq",	"햅",	3,
+	"got",	"햇",	3,
+	"goT",	"했",	3,
+	"god",	"행",	3,
+	"gid",	"향",	3,
+	"gjr",	"헉",	3,
+	"gjs",	"헌",	3,
+	"gjf",	"헐",	3,
+	"gjM",	"헒",	3,
+	"gja",	"험",	3,
+	"gjq",	"헙",	3,
+	"gjt",	"헛",	3,
+	"gjd",	"헝",	3,
+	"gpr",	"헥",	3,
+	"gps",	"헨",	3,
+	"gpf",	"헬",	3,
+	"gpa",	"헴",	3,
+	"gpq",	"헵",	3,
+	"gpt",	"헷",	3,
+	"gpd",	"헹",	3,
+	"gur",	"혁",	3,
+	"gus",	"현",	3,
+	"guf",	"혈",	3,
+	"gua",	"혐",	3,
+	"guq",	"협",	3,
+	"gut",	"혓",	3,
+	"guT",	"혔",	3,
+	"gud",	"형",	3,
+	"gPs",	"혠",	3,
+	"gPf",	"혤",	3,
+	"gPq",	"혭",	3,
+	"ghr",	"혹",	3,
+	"ghs",	"혼",	3,
+	"ghf",	"홀",	3,
+	"ghB",	"홅",	3,
+	"gha",	"홈",	3,
+	"ghq",	"홉",	3,
+	"ght",	"홋",	3,
+	"ghd",	"홍",	3,
+	"ghx",	"홑",	3,
+	"gKr",	"확",	3,
+	"gKs",	"환",	3,
+	"gKf",	"활",	3,
+	"gKt",	"홧",	3,
+	"gKd",	"황",	3,
+	"gHr",	"홱",	3,
+	"gHs",	"홴",	3,
+	"gHt",	"횃",	3,
+	"gHd",	"횅",	3,
+	"gLr",	"획",	3,
+	"gLs",	"횐",	3,
+	"gLf",	"횔",	3,
+	"gLq",	"횝",	3,
+	"gLt",	"횟",	3,
+	"gLd",	"횡",	3,
+	"gys",	"횬",	3,
+	"gyf",	"횰",	3,
+	"gyq",	"횹",	3,
+	"gyt",	"횻",	3,
+	"gnr",	"훅",	3,
+	"gns",	"훈",	3,
+	"gnf",	"훌",	3,
+	"gnB",	"훑",	3,
+	"gna",	"훔",	3,
+	"gnt",	"훗",	3,
+	"gnd",	"훙",	3,
+	"gJs",	"훤",	3,
+	"gJf",	"훨",	3,
+	"gJa",	"훰",	3,
+	"gJd",	"훵",	3,
+	"gNr",	"훽",	3,
+	"gNs",	"휀",	3,
+	"gNf",	"휄",	3,
+	"gNd",	"휑",	3,
+	"gBr",	"휙",	3,
+	"gBs",	"휜",	3,
+	"gBf",	"휠",	3,
+	"gBa",	"휨",	3,
+	"gBq",	"휩",	3,
+	"gBt",	"휫",	3,
+	"gBd",	"휭",	3,
+	"gbr",	"휵",	3,
+	"gbs",	"휸",	3,
+	"gbf",	"휼",	3,
+	"gba",	"흄",	3,
+	"gbt",	"흇",	3,
+	"gbd",	"흉",	3,
+	"gmr",	"흑",	3,
+	"gms",	"흔",	3,
+	"gmH",	"흖",	3,
+	"gme",	"흗",	3,
+	"gmf",	"흘",	3,
+	"gmG",	"흙",	3,
+	"gma",	"흠",	3,
+	"gmq",	"흡",	3,
+	"gmt",	"흣",	3,
+	"gmd",	"흥",	3,
+	"gmx",	"흩",	3,
+	"gMs",	"흰",	3,
+	"gMf",	"흴",	3,
+	"gMa",	"흼",	3,
+	"gMq",	"흽",	3,
+	"gMd",	"힁",	3,
+	"glr",	"힉",	3,
+	"gls",	"힌",	3,
+	"glf",	"힐",	3,
+	"gla",	"힘",	3,
+	"glq",	"힙",	3,
+	"glt",	"힛",	3,
+	"gld",	"힝",	3,
+	0
+};
+
+/* you can add other Map data here */
--- /dev/null
+++ b/sys/src/cmd/ktrans/main.c
@@ -1,0 +1,471 @@
+/*
+ *   Mostly based on the original source codes of Plan 9 release 2
+ *   distribution.
+ *             by Kenji Okamoto, August 4 2000
+ *                   Osaka Prefecture Univ.
+ *                   okamoto@granite.cias.osakafu-u.ac.jp
+ */
+
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include "ktrans.h"
+#include "jisho.h"
+
+#define	LSIZE	256
+
+Rune	lbuf[LSIZE];		/* hiragana buffer for key input written by send() */
+Map	*table = hira;		/* default language conversion table */
+uchar	okurigana[LSIZE];	/* buffer for okurigana */
+char	okuri = 0;		/* buffer/flag for capital input char */
+int	in, out;
+int	llen, olen, joshi = 0;
+int	natural = 1;		/* not Japanese but English mode */
+
+int	changelang(int);
+int	dotrans(Dictionary*);
+int	nrune(char *);
+void	send(uchar *, int);
+Map	*match(uchar *p, int *nc, Map *table);
+
+extern Dictionary *openQDIC(char *);
+extern KouhoList *getKouhoHash(Dictionary*, char *);
+extern KouhoList *getKouhoFile(DicList*, char *);
+extern void freeQDIC(Dictionary*);
+extern void selectKouho(KouhoList **, KouhoList*);
+
+void
+kbdopen(void)
+{
+	int n, kinfd, koutfd, fd[2];
+	char buf[128];
+	int kbd;
+
+	kbd = 1;
+	if((kinfd = open("/dev/kbd", OREAD)) < 0){
+		kbd = 0;
+		if((kinfd = open("/dev/cons", OREAD)) < 0)
+			sysfatal("open kbd: %r");
+	}
+	if(bind("#|", "/n/temp", MREPL) < 0)
+		sysfatal("bind /n/temp: %r");
+	if((koutfd = open("/n/temp/data1", OWRITE)) < 0)
+		sysfatal("open kbd pipe: %r");
+	if(bind("/n/temp/data", kbd? "/dev/kbd": "/dev/cons", MREPL) < 0)
+		sysfatal("bind kbd pipe: %r");
+	unmount(nil, "/n/temp");
+	if(!kbd){
+		in = kinfd;
+		out = koutfd;
+		return;
+	}
+	if(pipe(fd) < 0)
+		sysfatal("pipe: %r");
+	if(fork()){
+		in = out = fd[0];
+		close(fd[1]);
+		close(kinfd);
+		close(koutfd);
+		return;
+	}
+	close(fd[0]);
+	if(fork()){
+		Biobuf b;
+		long r;
+
+		Binit(&b, fd[1], OREAD);
+		while((r = Bgetrune(&b)) >= 0){
+			n = snprint(buf, sizeof(buf), "c%C", (Rune)r)+1;
+			write(koutfd, buf, n); /* pass on result */
+		}
+	} else
+		while((n = read(kinfd, buf, sizeof(buf))) > 0){
+			buf[n-1] = 0;
+			if(n < 2 || buf[0] != 'c')
+				write(koutfd, buf, n); /* pass on */
+			else
+				write(fd[1], buf+1, n-2); /* to translator */
+		}
+	exits(nil);
+}
+
+void
+usage(void)
+{
+	fprint(2, "usage: %s\n", argv0);
+	exits("usage");
+}
+
+void
+main(int argc, char *argv[])
+{
+
+	uchar *bp, *ep, buf[128];
+	Map *mp;
+	int nchar, wantmore;
+	int n, c;
+	char *dictname;
+	Dictionary *jisho;
+
+	ARGBEGIN{
+	default: usage();
+	}ARGEND;
+	if(argc != 0)
+		usage();
+
+	if((dictname = getenv("jisho")) == nil)
+		dictname = "/lib/kanji.jisho";
+	jisho = openQDIC(dictname);
+
+	kbdopen();
+	if(fork())
+		exits(nil); /* parent process will exit */
+
+	bp = ep = buf;
+	wantmore = 0;
+	for (;;) { /* key board input loop */
+	getmore:
+		if (bp>=ep || wantmore) {
+			if (wantmore==0)
+				bp = ep = buf; /* clear all */
+			n = read(in, ep, &buf[sizeof(buf)]-ep);
+			if (n<=0)
+				exits("");
+			ep += n;
+			*ep = '\0';
+		}
+		while (bp<ep) { /* there are input data */
+			if (table == hira && natural != 1 && (*bp>'A' && *bp<='Z') && ep-bp<2
+			   && !strchr("EIOU", *bp)) {
+				wantmore = 1;
+				goto getmore;
+			}
+			if (!fullrune((char *)bp, ep-bp)) { /* not enough length of input */
+				wantmore = 1;
+				goto getmore;
+			}
+			wantmore = 0;
+
+			if (*bp=='') { /* ^x read ktrans-jisho once more */
+				freeQDIC(jisho);
+				jisho = openQDIC(dictname);
+				llen = 0;
+				olen = okuri = joshi = 0;
+				wantmore=0;
+				bp=ep=buf;
+				continue;
+			}
+			if (*bp=='') { /* ^\ (start translation command) */
+				c = dotrans(jisho);
+				if (c)
+					*bp = c; /* pointer to translated rune */
+				else
+					bp++;
+				continue;
+			}
+			if (*bp=='') { /* ^l (no translate command) */
+				bp++;
+				llen = 0;
+				olen = okuri = joshi = 0;
+				continue;
+			}
+			if (changelang(*bp)) { /* change language mode OK */
+				bp++;
+				olen = okuri = joshi = 0;
+				continue;
+			}
+			if (natural || *bp<=' ' || *bp>='{') { /* English mode but not ascii */
+				Rune r;
+				int rlen = chartorune(&r, (char *)bp);
+				send(bp, rlen); /* write bp to /dev/cons */
+				bp += rlen;
+				continue;
+			}
+			if (table == hira && (*bp >= 'A' && *bp <= 'Z') && (*(bp+1) < 'A'
+			   || *(bp+1) > 'Z')) {
+				*bp = okuri = tolower(*bp);
+				joshi = olen = 0;
+			} else if (table == hira && (*bp >= 'A' && *bp <= 'Z') &&
+			   (*(bp+1) >= 'A' && *(bp+1) <= 'Z')) {
+				*bp = okuri = tolower(*bp);
+				*(bp+1) = tolower(*(bp+1));
+				joshi = 1;
+				olen = 0;
+			}
+			mp = match(bp, &nchar, table);
+			if (mp == 0) {
+				if (nchar>0) { /* match, longer possible */
+					wantmore++;
+					break;
+				}
+				send(bp++, 1); /* alphabet in kana mode */
+			} else {
+				send((uchar*)mp->kana, strlen(mp->kana));
+				bp += nchar;
+			}
+		}
+	}
+}
+
+int
+min(int a, int b)
+{
+	return a<b? a: b;
+}
+
+/*
+ * send UTF string (p) with length (n) to stdout
+ * and write rune (r) in global lbuf[] buffer
+ * or okurigana[] buffer if okuri (verb or joshi) mode
+ */
+void
+send(uchar *p, int n)
+{
+	Rune r;
+	uchar *ep;
+
+	if (write(out, (char*)p, n) != n)
+		sysfatal("write: %r");
+
+	if (llen>LSIZE-64) {
+		memmove((char*)lbuf, (char*)lbuf+64, 64*sizeof(Rune));
+		llen -= 64;
+	}
+
+	if (table!=hira || natural)
+		return;
+
+	ep = p+n;
+	if(okuri)
+		while (olen<LSIZE && p<ep)
+			okurigana[olen++] = *p++;
+	else
+		while (llen<LSIZE && p<ep) {
+			p += chartorune(&r, (char*)p);
+			if (r=='\b') {
+				if (llen>0)
+				llen--;
+				continue;
+			}
+			if (r==0x80) /* ignore view key */
+				continue;
+			lbuf[llen++] = r;
+	   }
+}
+
+/*
+ * Romaji to Hiragana/Katakana conversion
+ *     romaji shoud be input as small letter
+ *     returns the matched address in table, hira, kata, etc.
+ *     nc: number of character (return value)
+ */
+Map *
+match(uchar *p, int *nc, Map *table)
+{
+	register Map *longp = 0, *kp;
+	static char last;
+	int longest = 0;
+
+	*nc = -1;
+	for (kp=table; kp->roma; kp++) {
+		if (*p == *kp->roma) {
+			int lr = strlen(kp->roma);
+			int len = min(lr, strlen((char *)p));
+			if (strncmp(kp->roma, (char *)p, len)==0) {
+				if (len<lr) {
+					*nc = 1;
+					return 0;
+				}
+				if (len>longest) {
+					longest = len;
+					longp = kp;
+				}
+			}
+		}
+	}
+	if (longp) {
+		last = longp->roma[longest-1];
+		*nc = longp->advance;
+	}
+	return longp;
+}
+
+int
+changelang(int c)
+{
+	switch(c){
+	case '': /* ^t (English mode) */
+		natural = 1;
+		llen = 0;
+		return 1;
+		break;
+
+	case '': /* ^n (Japanese hiragana mode ) */
+		natural = 0;
+		table = hira;
+		llen = 0;
+		return 1;
+		break;
+
+	case '': /* ^k (Japanese katakana mode) */
+		natural = 0;
+		table = kata;
+		llen = 0;
+		return 1;
+		break;
+
+	case '': /* ^r (Russian mode) */
+		natural = 0;
+		table = cyril;
+		llen = 0;
+		return 1;
+		break;
+
+	case '': /* ^o (Greek mode) */
+		natural = 0;
+		table = greek;
+		llen = 0;
+		return 1;
+		break;
+
+	case '': /* ^s (Korean mode) */
+		natural = 0;
+		table = hangul;
+		llen = 0;
+		return 1;
+		break;
+	}
+	return 0;
+}
+
+/*
+ * write translated kanji runes to stdout and return last character
+ * if it's not ctl-\. if the last is ctl-\, proceed with
+ * translation of the next kouho
+ */
+int
+dotrans(Dictionary *dic)
+{
+	Rune *res, r[1];
+	char v[1024], *p, tbuf[64], hirabuf[64];
+	int j, lastlen, nokouho = 0;
+	char ch;
+	KouhoList *fstkouho, *currentkouho;
+
+	if (llen==0)
+		return 0; /* don't use kanji transform function */
+	if (okuri && joshi != 1) {
+		   lbuf[llen++] = (Rune)okuri;
+		   lbuf[llen] = 0;
+	}else
+		lbuf[llen] = 0;
+	okurigana[olen] = 0;
+
+	/*
+	 * search the matched index for the key word in the dict hash table, and
+	 * return a pointer to the matched kouho, 0 otherwise.
+	 */
+	res = lbuf;
+	for (j=0; *res != L'\0'; j += runetochar(v+j, res++))
+		;
+	v[j] = '\0';
+	strcpy(tbuf, v);
+	strcpy(hirabuf, v); /* to remember the initial hiragana input */
+
+	if (okuri && joshi != 1) /* verb mode */
+		hirabuf[strlen(hirabuf) - 1] = '\0';
+
+	if(!(fstkouho = getKouhoHash(dic, v))) { /* not found */
+		llen = olen = okuri = joshi = 0;
+		okurigana[0] = 0;
+		return 0;
+	}
+
+	currentkouho = fstkouho;
+	for(;;) {
+		p = currentkouho->kouhotop; /* p to the head of kanji kouho array */
+		lastlen = nrune(tbuf); /* number of rune chars */
+
+		if (okuri && joshi != 1) /* verb mode */
+	   		for (j=0; j<lastlen-1; j++)
+				write(out, "\b", 1); /* clear hiragana input */
+		else
+			for (j=0; j<lastlen; j++)
+				write(out, "\b", 1); /* clear hiragana input */
+
+		if (okuri) {
+			lastlen = nrune((char *)okurigana);
+			for (j=0; j<lastlen; j++)
+				write(out, "\b", 1);
+		}
+
+		write(out, p, strlen(p)); /* write kanji to stdout */
+		if (okuri)
+			write(out, (char *)okurigana, olen);
+
+		if (read(in, &ch, 1)<=0) /* read from stdin */
+			exits(nil);
+
+		if (ch == '') { /* if next input is ^\, once again */
+			if(currentkouho->nextkouho != 0) { /* have next kouho */
+				nokouho = 0;
+				strcpy(tbuf, p);
+				currentkouho = currentkouho->nextkouho;
+
+				if (okuri && joshi != 1) /* verb mode */
+					for (j=0; j<nrune(tbuf); j++)
+						write(out, "\b", 1);
+				continue;
+			} else { /* the last kouho */
+				if (okuri) {
+					lastlen = nrune((char *)okurigana);
+					for (j=0; j<lastlen; j++)
+						write(out, "\b", 1);
+				}
+
+				for (lastlen=0; *p != 0; p += j) {
+					j = chartorune(r, p);
+					lastlen++;
+				}
+
+				for (j=0; j<lastlen; j++)
+					write(out, "\b", 1);
+
+				if(hirabuf[0])
+					write(out, hirabuf, strlen(hirabuf));
+
+				if(okurigana[0])
+					write(out, (char *)okurigana, olen);
+
+				olen = okuri = joshi = 0;
+				okurigana[0] = 0;
+				break;
+			}
+		} else {
+			if(!nokouho) /* learn the previous use of the kouho */
+				selectKouho(&(fstkouho->dicitem->kouho), currentkouho);
+
+			olen = okuri = joshi = 0;
+			okurigana[0] = 0;
+			break;
+		}
+	}
+	llen = 0;
+	return ch;
+}
+
+/*
+ * returns the number of characters in the pointed Rune
+ */
+int
+nrune(char *p)
+{
+	int n = 0;
+	Rune r;
+
+	while (*p) {
+		p += chartorune(&r, p);
+		n++;
+	}
+	return n;
+}
--- /dev/null
+++ b/sys/src/cmd/ktrans/mkfile
@@ -1,0 +1,10 @@
+</$objtype/mkfile
+
+BIN=/$objtype/bin
+TARG=ktrans
+HFILES=jisho.h ktrans.h
+OFILES=\
+	main.$O\
+	jisho.$O
+
+</sys/src/cmd/mkone