From 4f60a801e4c8a70a1eb7299c4fdd6f8c75f8528f Mon Sep 17 00:00:00 2001 From: morioka Date: Thu, 19 Feb 1998 15:46:37 +0000 Subject: [PATCH] egg-980217. --- AUTHORS | 6 + ChangeLog | 187 ++++ Makefile | 3 + egg-cnv.el | 260 +++-- egg-com.el | 57 +- egg.el | 59 +- egg/sj3.el | 30 +- egg/sj3rpc.el | 6 +- egg/wnn.el | 451 ++++++--- egg/wnnrpc.el | 617 +++++++++--- its-keydef.el | 60 ++ its.el | 134 +-- its/hangul.el | 2864 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ its/hira.el | 8 +- its/pinyin.el | 347 +++++++ leim-list-egg.el | 39 +- menudiag.el | 56 +- 17 files changed, 4749 insertions(+), 435 deletions(-) create mode 100644 its-keydef.el create mode 100644 its/hangul.el create mode 100644 its/pinyin.el diff --git a/AUTHORS b/AUTHORS index 162e024..bae7fd0 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,3 +1,9 @@ +KAWABATA, Taichi + Menudiag improvement. + +MORIOKA Tomohiko + Use of custom. + NIIBE Yutaka Design a part of ITS programming. Wrote ITS: diff --git a/ChangeLog b/ChangeLog index 832d252..88dda3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,190 @@ +1998-02-17 NIIBE Yutaka + + * Makefile (SRCS): Add its/pinyin.el, its/hangul.el and + its-keydef.el. + + * egg-com.el (ccl-encode-fixed-euc-kr): Fixed the name. + +1998-02-17 KATAYAMA Yoshio + + * its-keydef.el: New file. + * its/hangul.el, its/pinyin.el: New version. + + * egg/wnnrpc.el (load-library "egg/wnn"): Comment it out. + (wnnrpc-get-error-message): Support multiple languages. + (wnnrpc-call-with-environment): Chinese support. + + * egg/wnn.el (wnn-support-languages): New const. + (): Add , , and . + (wnnenv-get-server-type, wnnenv-get-dictionary-set, + wnnenv-get-reverse-flag): New substs. + (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Changed. + (wnn-server): Removed. + (wnn-jserver, wnn-cserver, wnn-tserver, wnn-kserver): New custom. + (wnn-server-info-list): New const. + (wnn-get-server-info): New function. + (wnn-server-locale, wnn-server-type, wnn-server-port, + wnn-server-stream-name, wnn-server-buffer-name, + wnn-server-coding-system, wnn-server-hostname): New substs. + (wnn-start-conversion): Add new arguments. + (wnn-uniq-candidates): Initialize 'n'. + (wnn-change-bunsetsu-length): Simplefied. + (wnn-change-bunsetsu-length): Call renbunsetsu-conversion, + instead. + (wnn-fini, wnn-comm-sentinel): back to 971009 version. + (wnn-jserver-port): Removed. + (wnn-open): Argument change. Support languages. + + (wnn-dictionary-specification): Removed. + (wnn-dictionary-specification-list): New variable. + (wnn-get-dic-spec, wnn-dic-spec-dic-set, wnn-dic-spec-reverse, + wnn-dic-spec-name, wnn-dic-spec-param, wnn-dic-spec-fuzokugo, + wnn-dic-spec-dic-list): New substs. + (wnn-get-environment): Rewrite. + (wnn-create-environment): Rewrite. + + (egg-activate-wnn): Support languages. + + * egg/sj3rpc.el (load-library "egg/sj3"): Don't load it. + + * egg/sj3.el (sj3-support-languages): New const. + (sj3-start-conversion, sj3-fini): Add lang. + (sj3-change-bunsetsu-length): Simplified. + (egg-activate-sj3): Support language. + + * its/hira.el (its/hira): Packagefy. (?) + (its-hira-map): Add language spec. Move here the escape keys + ("Z", "~"). + + * leim-list-egg.el ("chinese-gb-egg-wnn-py", "chinese-gb-egg-wnn-zy", + "chinese-cns-egg-wnn-py", "chinese-cns-egg-wnn-zy", + "korean-egg-wnn"): New input methods. + + * its.el (its-current-language): New Local Variables. + : Change the structure. Add . + (its-get-language): New substitution. + (its-set-indicator): Removed. + (its-get-indicator, its-get-start-state): New implementation. + (its-reset-start-state): Removed. + (its-buffer-ins/del-SYL): Add new properties, its-map and its-lang. + (its-exit-mode-internal): Change for its-map and its-lang. + (its-in-fence-p): New function. + + ("its-keydef.el"): Load it. + + (its-select-map-menu): Removed. + (its-select-map-from-menu): Removed. + (its-select-hiragana, its-select-katakana, its-select-downcase, + its-select-upcase, its-select-zenkaku-downcase, + its-select-zenkaku-upcase, its-select-map, its-zenkaku-escape, + its-hankaku-escape): Removed. + + (define-its-state-machine): Rewrite. + (define-its-compiled-map): New macro. + (its-define-state-machine): Removed. + + (its-forward-SYL): Cleanup. + + (its-beginning-of-input-buffer): Fix. + (its-end-of-input-buffer): Likewise. + + * egg-com.el (egg-fixed-euc, egg-mb-euc): New Local Variables. + (ccl-decode-fixed-euc-kr, ccl-encode-fixed-euc-kr): New CCLs. + (fixed-euc-kr): New coding system. + (comm-format-mb-string, comm-format-u16-string): Support EUC-KR. + (comm-unpack-u16-string, comm-unpack-mb-string): Likewise. + + * egg-cnv.el (egg-get-bunsetsu-info): New function. + (egg-conversion-backend-alist, egg-finalize-backend-alist): + New Variables. + Make egg-conversion-backend buffer local. + (egg-set-current-backend): New function. + (egg-initialize-backend): Call egg-set-current-backend. + (egg-start-conversion): Add new argument LANGUAGE. + (egg-finalize-backend): Finalize for all backend(s). + (egg-set-conversion-backend-internal): New Macro. + (egg-convert-region): Support multiple languages in the region. + (egg-separate-languages, egg-char-to-language, egg-next-part-lang, + egg-next-chinese-lang): New functions. + (egg-insert-bunsetsu-list): Change the meaning of last argument. + (egg-shrink-bunsetsu): Simplified. Just call egg-enlarge-bunsetsu. + (egg-enlarge-bunsetsu): Support shrink. + + (egg-decide-bunsetsu, egg-next-candidate, egg-select-candidate): + Use egg-get-bunsetsu-info. + + (egg-insert-bunsetsu): The property now includes + egg-conversion-backend. + + * egg.el: Don't load its/hira and don't set its-current-map. + + * egg.el (egg-default-language, egg-support-languages): New Variables. + (egg-last-method-name, egg-mode-line-title): New Local Variables. + (egg-set-mode-line-title, egg-check-language): New functions. + (egg-set-support-languages): New function. + (egg-mode): Final processing: call its-exit-mode, call + egg-exit-conversion. + Changing the arguments, remember last input method. + + Bug fix. Don't set its-hira-period and its-hira-comma. + +1998-02-17 KAWABATA, Taichi + + * menudiag.el (menudiag-mode-map): New binds for new commands. + (menudiag-beginning-of-items, menudiag-end-of-items): New commands. + (menudiag-make-menu-formatted-string): Bug fix. Use + menudiag-item-num-to-char. + (menudiag-goto-item): Rewrite. Better user interface. + (menudiag-char-to-item-num, menudiag-item-num-to-char): New + functions. + +1998-02-07 MORIOKA Tomohiko + + * leim-list-egg.el: Delete autoload setting for `egg-mode'. + Delete input method registration for "japanese-egg". + + * egg.el: Comment out setting for Wnn. + + * leim-list-egg.el: Add autoload setting for + `egg-activate-{wnn|sj3}'. + + * egg/sj3.el (egg-activate-sj3): Add DOC-string. + + * egg/sj3.el (egg-activate-sj3): New function. + Require egg. + Load egg/sj3rpc.el. + + * egg/wnn.el (egg-activate-wnn): New function. + Require egg. + Load egg/wnnrpc.el. + +1998-02-07 MORIOKA Tomohiko + + * leim-list-egg.el (japanese-egg-wnn): New input method. + (japanese-egg-sj3): New input method. + +1997-11-20 MORIOKA Tomohiko + + * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'. + +1997-11-20 MORIOKA Tomohiko + + * egg/wnn.el (wnn): New group. + (wnn-server): Use `defcustom'. + (wnn-usr-dic-dir): Use `defcustom'. + + * egg.el (egg): New group. + +1997-11-20 MORIOKA Tomohiko + + * menudiag.el (menudiag-mode-map): Swap binding for left and + right. + + * egg.el (egg-toroku-region): `wnn-get-environment' requires + dictionary-specification. + + * leim-list-egg.el: add autoload setting for egg-mode. + 1997-11-03 KATAYAMA Yoshio * euc-cn.el: New file. Original name was yincoding.el. diff --git a/Makefile b/Makefile index fb6696f..94358ef 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,9 @@ ETCS = Makefile leim-list-egg.el AUTHORS ChangeLog README TODO docomp.el SRCS = menudiag.el its.el egg.el \ its/hira.el \ + its/pinyin.el \ + its/hangul.el \ + its-keydef.el \ egg-mlh.el egg-cnv.el egg-com.el \ euc-cn.el \ egg/sj3.el egg/sj3rpc.el \ diff --git a/egg-cnv.el b/egg-cnv.el index 249ff9d..76a748b 100644 --- a/egg-cnv.el +++ b/egg-cnv.el @@ -1,21 +1,22 @@ ;;; egg-cnv.el --- Conversion Backend in Egg Input Method Architecture -;; Copyright (C) 1997 Mule Project, +;; Copyright (C) 1997, 1998 Mule Project, ;; Powered by Electrotechnical Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: NIIBE Yutaka +;; KATAYAMA Yoshio ;; Maintainer: NIIBE Yutaka ;; Keywords: mule, multilingual, input method ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -31,15 +32,35 @@ ;;; Code: (defsubst egg-bunsetsu-info () 'intangible) + +(defun egg-get-bunsetsu-info (p) + (let ((info (get-text-property p (egg-bunsetsu-info)))) + (cond + ((consp info) + (setq egg-conversion-backend (car info)) + (cdr info))))) ;; +(defvar egg-conversion-backend-alist nil) +(make-variable-buffer-local 'egg-conversion-backend-alist) (defvar egg-conversion-backend nil) +(make-variable-buffer-local 'egg-conversion-backend) + +(defvar egg-finalize-backend-alist nil) -(defun egg-initialize-backend () +(defun egg-set-current-backend (language) + (let ((backend (assoc lang egg-conversion-backend-alist))) + (if (null backend) + (error "%S is not supported" lang) + (setq egg-conversion-backend (cdr backend))))) + +(defun egg-initialize-backend (language) + (egg-set-current-backend language) (funcall (aref egg-conversion-backend 0))) -(defun egg-start-conversion (yomi-string) - (funcall (aref egg-conversion-backend 1) yomi-string)) +(defun egg-start-conversion (yomi-string language) + (egg-set-current-backend language) + (funcall (aref egg-conversion-backend 1) yomi-string language)) (defun egg-get-bunsetsu-converted (bunsetsu-info) (funcall (aref egg-conversion-backend 2) bunsetsu-info)) (defun egg-get-bunsetsu-source (bunsetsu-info) @@ -60,7 +81,29 @@ (funcall (aref egg-conversion-backend 10) bunsetsu-info-list)) (defun egg-finalize-backend () - (funcall (aref egg-conversion-backend 11))) + (let ((alist egg-finalize-backend-alist)) + (while alist + (funcall (car (car (car alist))) (cdr (car (car alist)))) + (setq alist (cdr alist))))) + +(defmacro egg-set-conversion-backend-internal (backend langs &optional force) + `(let ((l ,langs) pair) + (while l + (setq pair (assoc (car l) egg-conversion-backend-alist)) + (if (null pair) + (setq egg-conversion-backend-alist + (cons (cons (car l) ,backend) + egg-conversion-backend-alist)) + ,(if force `(setcdr pair ,backend))) + (setq pair (cons (aref ,backend 11) (car l))) + (if (null (assoc pair egg-finalize-backend-alist)) + (setq egg-finalize-backend-alist + (cons (list pair) egg-finalize-backend-alist))) + (setq l (cdr l))))) + +(defun egg-set-conversion-backend (backend curent-langs other-langs) + (egg-set-conversion-backend-internal backend curent-langs t) + (egg-set-conversion-backend-internal backend other-langs)) (defvar egg-conversion-open "|") (defvar egg-conversion-close "|") @@ -69,25 +112,112 @@ ;; (defun egg-convert-region (start end) (interactive "r") - (let ((bunsetsu-info-list - (egg-start-conversion (buffer-substring start end))) - p) - (delete-region start end) - (setq p (point)) - (insert egg-conversion-open) - (put-text-property p (point) 'egg-start t) - (if egg-conversion-face - (put-text-property p (point) 'invisible t)) - ;; - (egg-insert-bunsetsu-list bunsetsu-info-list) - ;; + (let (bunsetsu-info-list lang contin p s e) + (save-restriction + (narrow-to-region start end) + (goto-char start) + (insert egg-conversion-open) + (put-text-property start (point) 'egg-start t) + (if egg-conversion-face + (put-text-property start (point) 'invisible t)) + (setq start (point)) + (egg-separate-languages start (point-max)) + (goto-char start) + (while (< (point) (point-max)) + (setq lang (get-text-property (point) 'egg-lang)) + (setq s (point) + e (next-single-property-change s 'egg-lang nil (point-max))) + (setq bunsetsu-info-list + (egg-start-conversion (buffer-substring s e) lang)) + (setq contin (< e (point-max))) + (delete-region s e) + (egg-insert-bunsetsu-list bunsetsu-info-list + (if (< (point) (point-max)) 'contine t)))) (setq p (point)) (insert egg-conversion-close) (put-text-property p (point) 'egg-end t) (if egg-conversion-face (put-text-property p (point) 'invisible t)) - (goto-char (1+ start)))) + (goto-char start))) + +(defun egg-separate-languages (start end) + (let (lang last-lang last-chinese p l c cset) + (goto-char start) + (while (< (point) end) + (setq p (next-single-property-change (point) 'its-lang nil end)) + (cond + ((get-text-property (point) 'its-lang) + (goto-char p)) + ((setq l (egg-chinese-syllable (buffer-substring (point) p))) + (setq p (point)) + (goto-char (+ (point) l)) + (put-text-property p (point) 'its-lang "Chinese")) + ((progn + (setq c (following-char) + cset (char-charset c)) + (eq cset 'chinese-sisheng)) + (setq p (point)) + (forward-char) + (put-text-property p (point) 'its-lang "Chinese")) + ((eq cset 'ascii) + (forward-char)) + (t + (setq p (point)) + (forward-char) + (put-text-property p (point) 'its-lang (egg-char-to-language c))))) + (goto-char start) + (while (< (point) end) + (setq lang (get-text-property (point) 'its-lang)) + (cond + ((null lang) + (setq lang (or last-lang + (egg-next-part-lang end)))) + ((equal lang "Chinese") + (setq lang (or last-chinese + (egg-next-chinese-lang end))))) + (setq last-lang lang) + (if (or (equal lang "Chinese-GB") (equal lang "Chinese-CNS")) + (setq last-chinese lang)) + (setq p (point)) + (goto-char (next-single-property-change (point) 'its-lang nil end)) + (set-text-properties p (point) (list 'egg-lang lang))))) + +(defun egg-char-to-language (c) + (let ((charset (char-charset c)) + (list language-info-alist)) + (while (and list + (null (memq charset (assq 'charset (car list))))) + (setq list (cdr list))) + (car (car list)))) + +(defun egg-next-part-lang (end) + (let* ((p (next-single-property-change (point) 'its-lang nil end)) + (lang (get-text-property p 'its-lang))) + (if (equal lang "Chinese") + (egg-next-chinese-lang end) + (or lang + its-current-language + egg-default-language)))) +(defun egg-next-chinese-lang (end) + (let (p lang) + (setq p (point)) + (while (and (< p end) (null lang)) + (setq p (next-single-property-change p 'its-lang nil end)) + (setq lang (get-text-property p 'its-lang)) + (if (null (or (equal lang "Chinese-GB") + (equal lang "Chinese-CNS"))) + (setq lang nil))) + (cond + (lang lang) + ((or (equal its-current-language "Chinese-GB") + (equal its-current-language "Chinese-CNS")) + its-current-language) + ((or (equal egg-default-language "Chinese-GB") + (equal egg-default-language "Chinese-CNS")) + egg-default-language) + (t "Chinese-GB")))) + (defvar egg-conversion-face nil) (defvar egg-conversion-map (let ((map (make-sparse-keymap)) @@ -128,22 +258,23 @@ (let ((bunsetsu (egg-get-bunsetsu-converted bunsetsu-info)) (p (point))) (insert bunsetsu) - (if (not last) + (if (null (eq last t)) (insert egg-conversion-separator)) (add-text-properties p (point) (list 'face egg-conversion-face 'local-map egg-conversion-map - (egg-bunsetsu-info) bunsetsu-info + (egg-bunsetsu-info) (cons egg-conversion-backend + bunsetsu-info) 'egg-bunsetsu-last last)))) -(defun egg-insert-bunsetsu-list (bunsetsu-info-list &optional contin) +(defun egg-insert-bunsetsu-list (bunsetsu-info-list &optional last) (let ((l bunsetsu-info-list) bunsetsu-info bunsetsu p) (while l (setq bunsetsu-info (car l) l (cdr l) p (point)) - (egg-insert-bunsetsu bunsetsu-info (and (null l) (null contin)))))) + (egg-insert-bunsetsu bunsetsu-info (and (null l) last))))) (defun egg-backward-bunsetsu (n) (interactive "p") @@ -170,56 +301,59 @@ (defun egg-get-previous-bunsetsu (p) (if (get-text-property (1- p) 'egg-start) nil - (get-text-property (- p 2) (egg-bunsetsu-info)))) + (egg-get-bunsetsu-info (- p 2)))) + +(defun egg-separate-characters (str) + (let* ((v (string-to-vector str)) + (len (length v)) + (i 0) (j 0) m n (nchar 0)) + (while (< i len) + (if (setq n (egg-chinese-syllable str j)) + (setq m (chars-in-string (substring str j (+ j n)))) + (setq m 1 n (char-bytes (aref v i)))) + (put-text-property j (+ j n) 'egg-char-size n str) + (setq nchar (1+ nchar) i (+ i m) j (+ j n))) + nchar)) (defun egg-shrink-bunsetsu (n) (interactive "p") - (let* ((b0 (egg-get-previous-bunsetsu (point))) - (b1 (get-text-property (point) (egg-bunsetsu-info))) - (last (get-text-property (point) 'egg-bunsetsu-last)) - (slen (chars-in-string (egg-get-bunsetsu-source b1))) - (newlen (- slen n)) - b2 bunsetsu-info-list beep) - (if (< newlen 1) - (setq beep t - newlen 1)) - (if (not last) - (let ((p2 (save-excursion (forward-char) (point)))) - (setq b2 (get-text-property p2 (egg-bunsetsu-info)) - last (get-text-property p2 'egg-bunsetsu-last)))) - (setq bunsetsu-info-list (egg-change-bunsetsu-length b0 b1 b2 newlen)) - (delete-region (point) - (progn (forward-char) (if b2 (forward-char)) (point))) - (let ((p (point))) - (egg-insert-bunsetsu-list bunsetsu-info-list (not last)) - (goto-char p)) - (if beep - (ding)))) + (egg-enlarge-bunsetsu (- n))) (defun egg-enlarge-bunsetsu (n) (interactive "p") (let* ((b0 (egg-get-previous-bunsetsu (point))) - (b1 (get-text-property (point) (egg-bunsetsu-info))) + (b1 (egg-get-bunsetsu-info (point))) + (s1 (egg-get-bunsetsu-source b1)) + (s1len (egg-separate-characters s1)) + (s2len 0) + (chrs (length s1)) (last (get-text-property (point) 'egg-bunsetsu-last)) - (slen (chars-in-string (egg-get-bunsetsu-source b1))) - (newlen (+ slen n)) - b2 maxlen bunsetsu-info-list beep) + b2 s2 source bunsetsu-info-list beep) (if (not last) (let ((p2 (save-excursion (forward-char) (point)))) - (setq b2 (get-text-property p2 (egg-bunsetsu-info)) + (setq b2 (egg-get-bunsetsu-info p2) + s2 (egg-get-bunsetsu-source b2) + s2len (egg-separate-characters s2) last (get-text-property p2 'egg-bunsetsu-last)))) - (setq maxlen (+ slen - (if b2 - (chars-in-string (egg-get-bunsetsu-source b2)) - 0))) - (if (> newlen maxlen) - (setq beep t - newlen maxlen)) - (setq bunsetsu-info-list (egg-change-bunsetsu-length b0 b1 b2 newlen)) + (setq source (concat s1 s2)) + (cond + ((<= n (- s1len)) + (setq beep t chrs (get-text-property 0 'egg-char-size source))) + ((> n s2len) + (setq beep t chrs (length source))) + ((< n 0) + (while (< n 0) + (setq chrs (- chrs (get-text-property (1- chrs) 'egg-char-size source)) + n (1+ n)))) + (t + (while (> n 0) + (setq chrs (+ chrs (get-text-property chrs 'egg-char-size source)) + n (1- n))))) + (setq bunsetsu-info-list (egg-change-bunsetsu-length b0 b1 b2 chrs)) (delete-region (point) (progn (forward-char) (if b2 (forward-char)) (point))) (let ((p (point))) - (egg-insert-bunsetsu-list bunsetsu-info-list (not last)) + (egg-insert-bunsetsu-list bunsetsu-info-list last) (goto-char p)) (if beep (ding)))) @@ -227,7 +361,7 @@ (defun egg-next-candidate (n) (interactive "p") (let ((last (get-text-property (point) 'egg-bunsetsu-last)) - (b (get-text-property (point) (egg-bunsetsu-info))) + (b (egg-get-bunsetsu-info (point))) new i max+ p beep) (setq max+ (egg-get-number-of-candidates b)) (if (null max+) @@ -262,7 +396,7 @@ p bunsetsu-info-list bl) (setq p (point)) (while in-loop - (let ((bl1 (cons (get-text-property p (egg-bunsetsu-info)) nil))) + (let ((bl1 (cons (egg-get-bunsetsu-info p) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-info-list (setq bl bl1)))) @@ -320,7 +454,7 @@ (defun egg-select-candidate () (interactive) (let ((last (get-text-property (point) 'egg-bunsetsu-last)) - (b (get-text-property (point) (egg-bunsetsu-info))) + (b (egg-get-bunsetsu-info (point))) (in-loop t) new i max+ p) (setq max+ (egg-get-number-of-candidates b)) diff --git a/egg-com.el b/egg-com.el index 9604fe9..cf5b401 100644 --- a/egg-com.el +++ b/egg-com.el @@ -1,22 +1,23 @@ ;;; egg-com.el --- Communication Routines in Egg Input ;;; Method Architecture -;; Copyright (C) 1997 Mule Project, Powered by Electrotechnical +;; Copyright (C) 1997, 1998 Mule Project, Powered by Electrotechnical ;; Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: Hisashi Miyashita ;; NIIBE Yutaka +;; KATAYAMA Yoshio ; Korean, Chinese support. ;; Maintainer: NIIBE Yutaka ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -30,6 +31,12 @@ ;;; Code: +(defvar egg-fixed-euc 'fixed-euc-jp) +(make-variable-buffer-local 'egg-fixed-euc) + +(defvar egg-mb-euc 'euc-japan) +(make-variable-buffer-local 'egg-mb-euc) + (eval-and-compile (define-ccl-program ccl-decode-fixed-euc-jp `(2 @@ -92,6 +99,42 @@ (make-coding-system 'fixed-euc-jp 4 ?W "Coding System for fixed EUC Japanese" (cons ccl-decode-fixed-euc-jp ccl-encode-fixed-euc)) + +(eval-and-compile +(define-ccl-program ccl-decode-fixed-euc-kr + `(2 + ((r2 = ,(charset-id 'korean-ksc5601)) + (read r0) + (loop + (read r1) + (if (r0 < ?\x80) + (r0 = r1 & ?\x7f) + ((write r2 r0) + (r0 = r1 | ?\x80))) + (write-read-repeat r0))))) + +(define-ccl-program ccl-encode-fixed-euc-kr + `(2 + ((read r0) + (loop +; (if (r0 < ?\x20) +; (write-read-repeat r0)) + (if (r0 < ?\x80) + ((write 0) + (write-read-repeat r0))) + (if (r0 == ,(charset-id 'korean-ksc5601)) + ((read r0) + (r0 |= ?\x80) + (write r0) + (read r0) + (r0 |= ?\x80) + (write-read-repeat r0))) + (read r0) + (repeat))))) +) + +(make-coding-system 'fixed-euc-kr 4 ?W "Coding System for fixed EUC Korean" + (cons ccl-decode-fixed-euc-kr ccl-encode-fixed-euc-kr)) (defsubst comm-format-u32c (uint32c) (let ((h0 (car uint32c)) @@ -137,14 +180,14 @@ ;;; XXX should support other code conversion (defsubst comm-format-u16-string (s) - (let ((euc-string (encode-coding-string s 'fixed-euc-jp))) + (let ((euc-string (encode-coding-string s egg-fixed-euc))) (insert euc-string) (insert-char 0 1) (insert-char 0 1))) ;;; XXX should support other code conversion (defsubst comm-format-mb-string (s) - (let ((euc-string (encode-coding-string s 'euc-japan))) + (let ((euc-string (encode-coding-string s egg-mb-euc))) (insert euc-string) (insert-char 0 1))) @@ -245,7 +288,7 @@ s means 8-bit string (0x00 terminated)." (set s (buffer-substring start (+ start (decode-coding-region start (- (point) 2) - 'fixed-euc-jp)))))) + egg-fixed-euc)))))) ;;; XXX should support other conversion (euc-kr, cns) (defsubst comm-unpack-mb-string (proc s) @@ -255,7 +298,7 @@ s means 8-bit string (0x00 terminated)." (set s (buffer-substring start (+ start (decode-coding-region start (- (point) 1) - 'euc-japan)))))) + egg-mb-euc)))))) (defsubst comm-unpack-u8-string (proc s) (let ((start (point))) diff --git a/egg.el b/egg.el index c386176..bf53fce 100644 --- a/egg.el +++ b/egg.el @@ -1,21 +1,22 @@ ;;; egg.el --- EGG Input Method Architecture -;; Copyright (C) 1997 Mule Project, Powered by Electrotechnical +;; Copyright (C) 1997, 1998 Mule Project, Powered by Electrotechnical ;; Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: NIIBE Yutaka +;; KATAYAMA Yoshio ;; Maintainer: NIIBE Yutaka ;; Keywords: mule, multilingual, input method ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -31,8 +32,14 @@ (defvar egg-mode-preference t "Non-nil if modefull.") +(defvar egg-default-language "Japanese") +(defvar egg-last-method-name) +(make-variable-buffer-local 'egg-last-method-name) +(defvar egg-mode-line-title) +(make-variable-buffer-local 'egg-mode-line-title) + ;;;###autoload -(defun egg-mode (&optional arg) +(defun egg-mode (&rest arg) "Toggle EGG mode. \\[describe-bindings] " @@ -40,12 +47,21 @@ (if (null arg) ;; Turn off (progn + (cond + ((its-in-fence-p) + (its-exit-mode)) + ((egg-get-bunsetsu-info (point)))) (setq describe-current-input-method-function nil) (setq current-input-method nil) (let ((orig-local-map (keymap-parent (current-local-map)))) (use-local-map orig-local-map)) (run-hooks 'input-method-inactivate-hook)) ;; Turn on + (if (null (string= (car arg) egg-last-method-name)) + (progn + (funcall (nth 1 arg)) + (setq egg-default-language its-current-language))) + (setq egg-last-method-name (car arg)) (use-local-map (if egg-mode-preference (egg-modefull-map) (egg-modeless-map))) @@ -54,6 +70,14 @@ (run-hooks 'input-method-activate-hook)) (force-mode-line-update)) +(defun egg-set-mode-line-title (title) + (setq egg-mode-line-title title) + (force-mode-line-update)) + +(defun egg-check-language (lang) + (if (null (member lang egg-support-languages)) + (error "%S is not supported" lang))) + (defun egg-modefull-map () "Generate modefull keymap for EGG mode." (let ((map (make-sparse-keymap)) @@ -103,7 +127,7 @@ ;; XXX: Should use backend interface (defun egg-toroku-region (start end) (interactive "r") - (let* ((env (wnn-get-environment)) ; XXX + (let* ((env (wnn-get-environment wnn-dictionary-specification)) ; XXX (kanji (buffer-substring start end)) (yomi (read-multilingual-string (format "$B<-=qEPO?!X(B%s$B!Y(B $BFI$_(B:" kanji))) @@ -138,26 +162,35 @@ (setq ocolumn (current-column)) (funcall auto-fill-function))))) -(setq its-hira-period "$B!#(B") ; ". " "$B!%(B" "$B!#(B" -(setq its-hira-comma ", ") ; ", " "$B!$(B" "$B!"(B" - (require 'its) (require 'menudiag) (require 'egg-mlh) (require 'egg-cnv) (require 'egg-com) +(require 'custom) + +(defgroup egg nil + "Tamagotchy --- EGG Versio 4.0") -(load-library "its/hira") -(setq-default its-current-map its-hira-map) +;;(load-library "its/hira") +;;(setq-default its-current-map its-hira-map) -(load-library "egg/wnn") -(load-library "egg/wnnrpc") -(setq egg-conversion-backend wnn-conversion-backend) +;;(load-library "egg/wnn") +;;(load-library "egg/wnnrpc") +;;(setq egg-conversion-backend wnn-conversion-backend) ;;(load-library "egg/sj3rpc") ;;(load-library "egg/sj3") ;;(setq egg-conversion-backend sj3-conversion-backend) +(defvar egg-support-languages nil) + +(defun egg-set-support-languages (langs) + (while langs + (if (null (member (car langs) egg-support-languages)) + (setq egg-support-languages (cons (car langs) egg-support-languages))) + (setq langs (cdr langs)))) + (add-hook 'kill-emacs-hook 'egg-kill-emacs-function) (defun egg-kill-emacs-function () (egg-finalize-backend)) diff --git a/egg/sj3.el b/egg/sj3.el index c5ad963..4e57742 100644 --- a/egg/sj3.el +++ b/egg/sj3.el @@ -10,12 +10,12 @@ ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -29,6 +29,8 @@ ;;; Code: +(defconst sj3-support-languages '("Japanese")) + (defconst sj3-conversion-backend [ sj3-init @@ -166,7 +168,7 @@ (defun sj3-init () ) -(defun sj3-start-conversion (yomi) +(defun sj3-start-conversion (yomi lang) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." (let ((env (sj3-get-environment))) @@ -220,10 +222,8 @@ Return the list of bunsetsu." (env (sj3bunsetsu-get-env b1)) yomi1 yomi2 bunsetsu1 bunsetsu2) - (save-match-data - (string-match (concat "^\\(" (make-string len ?.) "\\)\\(.*$\\)") yomi) - (setq yomi1 (match-string 1 yomi)) - (setq yomi2 (match-string 2 yomi))) + (setq yomi1 (substring yomi 0 len) + yomi2 (substring yomi len)) (setq bunsetsu1 (sj3rpc-tanbunsetsu-conversion env yomi1)) ;; Only set once. @@ -240,7 +240,21 @@ Return the list of bunsetsu." (list bunsetsu1)))) ;; XXX: Not implemented yet -(defun sj3-fini () +(defun sj3-fini (lang) ) +;;; setup + +(require 'egg) +(load "egg/sj3rpc") + +;;;###autoload +(defun egg-activate-sj3 (&optional arg) + "Activate SJ3 backend of Tamagotchy." + (egg-set-support-languages sj3-support-languages) + (egg-set-conversion-backend sj3-conversion-backend + sj3-support-languages + nil) + (apply 'egg-mode arg)) + ;;; egg/sj3.el ends here. diff --git a/egg/sj3rpc.el b/egg/sj3rpc.el index 6ae09aa..c92dbb7 100644 --- a/egg/sj3rpc.el +++ b/egg/sj3rpc.el @@ -10,12 +10,12 @@ ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -33,7 +33,7 @@ (eval-when-compile (require 'egg-com) - (load-library "egg/sj3") +;; (load-library "egg/sj3") (defmacro sj3-const (c) (cond ((eq c 'OPEN) 1) ((eq c 'CLOSE) 2) diff --git a/egg/wnn.el b/egg/wnn.el index 6474eb9..96d7472 100644 --- a/egg/wnn.el +++ b/egg/wnn.el @@ -1,21 +1,23 @@ ;;; egg/wnn.el --- WNN Support (high level interface) in Egg ;;; Input Method Architecture -;; Copyright (C) 1997 Mule Project, Powered by Electrotechnical +;; Copyright (C) 1997, 1998 Mule Project, Powered by Electrotechnical ;; Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: NIIBE Yutaka +;; KATAYAMA Yoshio ; Korean, Chinese support. +;; ;; Maintainer: NIIBE Yutaka -;; This file will be part of GNU Emacs (in future). +;; This file will be part of EGG (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -28,6 +30,12 @@ ;;; Commentary: ;;; Code: +(defgroup wnn nil + "Wnn interface for Tamagotchy" + :group 'egg) + +(defconst wnn-support-languages + '("Japanese" "Chinese-GB" "Chinese-CNS" "Korean")) (eval-when-compile (defmacro WNN-const (c) @@ -56,10 +64,11 @@ wnn-fini ]) -;; ::= [ ] +;; ::= [ +;; ] -(defsubst wnnenv-create (proc env-id) - (vector proc env-id nil)) +(defsubst wnnenv-create (proc env-id server-type dic-set rev-flag) + (vector proc env-id server-type dic-set rev-flag nil)) (defsubst wnnenv-get-proc (env) (aref env 0)) @@ -67,10 +76,19 @@ (defsubst wnnenv-get-env-id (env) (aref env 1)) -(defsubst wnnenv-get-daibunsetsu-info (env) +(defsubst wnnenv-get-server-type (env) (aref env 2)) + +(defsubst wnnenv-get-dictionary-set (env) + (aref env 3)) + +(defsubst wnnenv-get-reverse-flag (env) + (aref env 4)) + +(defsubst wnnenv-get-daibunsetsu-info (env) + (aref env 5)) (defsubst wnnenv-set-daibunsetsu-info (env d) - (aset env 2 d)) + (aset env 5 d)) ;; ::= [ ;; @@ -132,19 +150,58 @@ (defsubst wnn-bunsetsu-set-zenkouho-pos (bunsetsu zp) (aset bunsetsu 18 zp)) -(defvar wnn-server "localhost" - "Hostname of wnn server") - -(defvar wnn-environment nil +(defvar wnn-environments nil "Environment for WNN kana-kanji conversion") +(defcustom wnn-jserver "localhost" "jserver host" :group 'wnn :type 'string) +(defcustom wnn-cserver "localhost" "cserver host" :group 'wnn :type 'string) +(defcustom wnn-tserver "localhost" "tserver host" :group 'wnn :type 'string) +(defcustom wnn-kserver "localhost" "kserver host" :group 'wnn :type 'string) + +;; The port number should be initialized from $WNNLIB/serverdefs by wnn-init +(defconst wnn-server-info-list + ;; language locale server port stream coding-system hostname + '(("Japanese" "ja_JP" jserver 22273 "Wnn" fixed-euc-jp wnn-jserver) + ("Chinese-GB" "zh_CN" cserver 22289 "cWnn" fixed-euc-cn wnn-cserver) + ("Chinese-CNS" "zh_TW" tserver 22321 "tWnn" fixed-euc-tw wnn-tserver) + ("Korean" "ko_KR" kserver 22305 "kWnn" fixed-euc-kr wnn-kserver))) + +(defun wnn-get-server-info (lang) + (let (info) + (if (null lang) + (setq lang its-current-language)) + (if (setq info (assoc lang wnn-server-info-list)) info + (assoc "Japanese" wnn-server-info-list)))) + +(defsubst wnn-server-locale (info) + (nth 1 info)) + +(defsubst wnn-server-type (info) + (nth 2 info)) + +(defsubst wnn-server-port (info) + (nth 3 info)) + +(defsubst wnn-server-stream-name (info) + (nth 4 info)) + +(defsubst wnn-server-buffer-name (info) + (concat " *" (wnn-server-stream-name info) "*")) + +(defsubst wnn-server-coding-system (info) + (nth 5 info)) + +(defsubst wnn-server-hostname (info) + (symbol-value (nth 6 info))) + (defun wnn-init () ) -(defun wnn-start-conversion (yomi) +(defun wnn-start-conversion (yomi &optional language dic-set reverse) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." - (let* ((env (wnn-get-environment wnn-dictionary-specification)) + (let* ((server-info (wnn-get-server-info language)) + (env (wnn-get-environment server-info dic-set reverse)) (result (wnnrpc-renbunsetsu-conversion env yomi (WNN-const BUN_SENTOU) ""))) (wnnenv-set-daibunsetsu-info env (car result)) @@ -171,7 +228,7 @@ Return the list of bunsetsu." (let ((hash-table (make-vector 31 0)) ; XXX why 31? (l bunsetsu-list) (i 0) - n sym0 result p b sym) + (n 0) sym0 result p b sym) (setq sym0 (intern (wnn-get-bunsetsu-converted bunsetsu) hash-table)) (while l (setq b (car l) @@ -255,10 +312,8 @@ Return the list of bunsetsu." prev-fuzokugo "") (setq prev-hinshi (wnn-bunsetsu-get-hinshi b0) prev-fuzokugo (wnn-bunsetsu-get-fuzokugo b0))) - (save-match-data - (string-match (concat "^\\(" (make-string len ?.) "\\)\\(.*$\\)") yomi) - (setq yomi1 (match-string 1 yomi)) - (setq yomi2 (match-string 2 yomi))) + (setq yomi1 (substring yomi 0 len) + yomi2 (substring yomi len)) (setq bunsetsu1 (car (wnnrpc-tanbunsetsu-conversion env yomi1 prev-hinshi prev-fuzokugo))) @@ -269,15 +324,14 @@ Return the list of bunsetsu." (list b1 b2) (list b1)))) (if (< 0 (length yomi2)) - ;; RENBUNSETSU? XXX (setq bunsetsu2 - (car (wnnrpc-tanbunsetsu-conversion + (cdr (wnnrpc-renbunsetsu-conversion env yomi2 (wnn-bunsetsu-get-hinshi bunsetsu1) (wnn-bunsetsu-get-fuzokugo bunsetsu1)))) (setq bunsetsu2 nil)) (if bunsetsu2 - (list bunsetsu1 bunsetsu2) + (append (list bunsetsu1) bunsetsu2) (list bunsetsu1)))) @@ -293,42 +347,60 @@ Return the list of bunsetsu." (defvar wnn-sticky-environment-flag nil "*Flag which specifies sticky environment.") -(defun wnn-fini () ; XXX - (if (null wnn-environment) - nil - (condition-case nil - (progn - (if wnn-sticky-environment-flag - (wnnrpc-make-env-sticky wnn-environment) - (wnnrpc-make-env-unsticky wnn-environment)) - (wnnrpc-disconnect wnn-environment)) - (error nil)) - (let ((proc (wnnenv-get-proc wnn-environment))) - (if (eq (process-status proc) 'open) - (progn - (wnnrpc-close proc) - (kill-buffer (process-buffer proc)) - (delete-process proc)))) - (setq wnn-environment nil))) +(defun wnn-fini (lang) ; XXX + ; tamago-971009 version + ; argument LANG is still dummy + (if wnn-environments + (let ((l wnn-environments)) + (condition-case nil + (while l + (let ((env (car l))) + (if wnn-sticky-environment-flag + (wnnrpc-make-env-sticky env) + (wnnrpc-make-env-unsticky env)) + (wnnrpc-disconnect env) + (setq l (cdr l)))) + (error nil)) + (setq l wnn-environments) + (while l + (let ((proc (wnnenv-get-proc (car l)))) + (if (eq (process-status proc) 'open) + (progn + (wnnrpc-close proc) + (kill-buffer (process-buffer proc))) + (setq l (cdr l))))) + (setq wnn-environments nil)))) -;; XXX should be array (index: server) of {C,J,K}server -(defconst wnn-jserver-port 22273) ;; (defun wnn-comm-sentinel (proc reason) ; assume it is close - (kill-buffer (process-buffer proc)) - (delete-process proc) - (setq wnn-environment nil) - (message "WNN: connection closed")) + ; tamago-971009 version + (let ((l wnn-environments) + env l1) + (kill-buffer (process-buffer proc)) + ;; delete env from the list. + (while l + (setq env (car l)) + (if (eq proc (wnnenv-get-proc env)) + (progn + (if l1 + (setcdr l1 (cdr l)) + (setq wnn-environments (cdr l))) + (setq l (cdr l))) + (setq l1 l + l (cdr l)))))) ;; -(defun wnn-open (hostname language) +(defun wnn-open (server-info) "Establish the connection to WNN server. Return process object." - ;; Specifying language (jserver/cserver/kserver), - ;; open the session to WNN server, - (let ((buf (generate-new-buffer " *WNN*")) - proc result) + ;; Open the session to WNN server, + (let ((buf (generate-new-buffer (wnn-server-buffer-name server-info))) + (hostname (wnn-server-hostname server-info)) + proc result) (condition-case result - (setq proc (open-network-stream "WNN" buf hostname wnn-jserver-port)) + (setq proc (open-network-stream (wnn-server-stream-name server-info) + buf + hostname + (wnn-server-port server-info))) (error (progn (kill-buffer buf) (signal (car result) (cdr result))))) @@ -340,36 +412,146 @@ Return the list of bunsetsu." (set-buffer buf) (erase-buffer) (buffer-disable-undo) - (setq enable-multibyte-characters nil)) - (setq result (wnnrpc-open proc (system-name) (user-login-name))) + (setq enable-multibyte-characters nil + egg-fixed-euc (wnn-server-coding-system server-info))) + (setq result (wnnrpc-open proc + (if (equal hostname "localhost") + "unix" + (system-name)) + (user-login-name))) (if (< result 0) (let ((msg (wnnrpc-get-error-message (- result)))) (delete-process proc) (kill-buffer buf) - (error "Can't open WNN session (%s %s): %s" hostname language msg)) + (error "Can't open WNN session (%s %S): %s" + hostname + (wnn-server-type server-info) msg)) proc))) -(defvar wnn-dictionary-specification - '([2 10 2 45 100 200 5 1 40 0 -100 200 -100 200 80 200 200] - "pubdic/full.fzk" - ["pubdic/kihon.dic" ("kihon.h") 5 nil t] - ["pubdic/setsuji.dic" ("setsuji.h") 5 nil t] - ["pubdic/koyuu.dic" ("koyuu.h") 1 nil t] - ["pubdic/chimei.dic" ("chimei.h") 1 nil t] - ["pubdic/jinmei.dic" ("jinmei.h") 1 nil t] - ["pubdic/special.dic" ("special.h") 5 nil t] - ["pubdic/computer.dic" ("computer.h") 5 nil t] - ["pubdic/symbol.dic" ("symbol.h") 1 nil t] - ["pubdic/tankan.dic" ("tankan.h") 1 nil t] - ["pubdic/bio.dic" ("bio.h") 1 nil t] - ["gerodic/g-jinmei.dic" ("g-jinmei.h") 1 nil t] - ["wnncons/tankan2.dic" ("tankan2.h") 1 nil t] - ["wnncons/tankan3.dic" ("tankan3.h") 1 nil t] - [("ud") nil 5 t t]) - "") - -(defvar wnn-usr-dic-dir (concat "usr/" (user-login-name)) - "*Directory of user dictionary for Wnn.") +(defvar wnn-dictionary-specification-list + '((jserver + (nil nil "" + [2 10 2 45 100 200 5 1 40 -100 200 -100 200 80 200 200 200] + "pubdic/full.fzk" + ["pubdic/kihon.dic" ("kihon.h") 5 nil t] + ["pubdic/setsuji.dic" ("setsuji.h") 5 nil t] + ["pubdic/koyuu.dic" ("koyuu.h") 1 nil t] + ["pubdic/chimei.dic" ("chimei.h") 1 nil t] + ["pubdic/jinmei.dic" ("jinmei.h") 1 nil t] + ["pubdic/special.dic" ("special.h") 5 nil t] + ["pubdic/computer.dic" ("computer.h") 5 nil t] + ["pubdic/symbol.dic" ("symbol.h") 1 nil t] + ["pubdic/tankan.dic" nil 1 nil nil] + ["pubdic/bio.dic" ("bio.h") 1 nil t] + ["gerodic/g-jinmei.dic" ("g-jinmei.h") 1 nil t] + ["wnncons/tankan2.dic" nil 1 nil nil] + ["wnncons/tankan3.dic" nil 1 nil nil] + [("ud") nil 5 t t]) + (nil t "R" + [2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200] + "pubdic/full.fzk" + ["pubdic/kihon.dic" ("kihon.h") 5 nil t] + ["pubdic/setsuji.dic" ("setsuji.h") 5 nil t] + ["pubdic/koyuu.dic" ("koyuu.h") 1 nil t] + ["pubdic/chimei.dic" ("chimei.h") 1 nil t] + ["pubdic/jinmei.dic" ("jinmei.h") 1 nil t] + ["pubdic/special.dic" ("special.h") 5 nil t] + ["pubdic/computer.dic" ("computer.h") 5 nil t] + ["pubdic/symbol.dic" ("symbol.h") 1 nil t] + ["pubdic/tankan.dic" nil 1 nil nil] + ["pubdic/bio.dic" ("bio.h") 1 nil t] + ["gerodic/g-jinmei.dic" ("g-jinmei.h") 1 nil t] + ["wnncons/tankan2.dic" nil 1 nil nil] + ["wnncons/tankan3.dic" nil 1 nil nil] + [("ud") nil 5 t t])) + (cserver + (Q nil "Q" + nil + "sys/full.con" + ["sys/QianMa.dic" nil 1 nil nil]) + (W nil "W" + nil + "sys/full.con" + ["sys/WuBi.dic" nil 1 nil nil]) + (nil nil "PZ" + [1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0] + "sys/full.con" + ["sys/level_1.dic" ("level_1.h") 4 nil t] + ["sys/level_2.dic" ("level_2.h") 1 nil t] + ["sys/basic.dic" ("basic.h") 7 nil t] + ["sys/computer.dic" ("computer.h") 4 nil t] + ["sys/cwnn.dic" ("cwnn.h") 4 nil t] + [("ud") nil 5 t t]) + (Q t "QR" + nil + "sys/full.conR" + ["sys/QianMa.dic" nil 1 nil nil]) + (W t "WR" + nil + "sys/full.conR" + ["sys/WuBi.dic" nil 1 nil nil]) + (nil t "PZR" + [1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0] + "sys/full.conR" + ["sys/level_1.dic" ("level_1.h") 4 nil t] + ["sys/level_2.dic" ("level_2.h") 1 nil t] + ["sys/basic.dic" ("basic.h") 7 nil t] + ["sys/computer.dic" ("computer.h") 4 nil t] + ["sys/cwnn.dic" ("cwnn.h") 4 nil t] + [("ud") nil 5 t t])) + (tserver + (nil nil "" + [1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0] + "sys/full.con" + ["sys/cns_ch.dic" ("cns_ch.h") 4 nil t] + ["sys/cns_wd.dic" ("cns_wd.h") 1 nil t] + [("ud") nil 5 t t]) + (nil t "R" + [1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0] + "sys/full.conR" + ["sys/cns_ch.dic" ("cns_ch.h") 4 nil t] + ["sys/cns_wd.dic" ("cns_wd.h") 1 nil t] + [("ud") nil 5 t t])) + (kserver + (nil nil "" + [2 5 2 45 200 80 5 1 40 0 400 -100 400 80 200 2 200] + "sys/full.fzk" + ["sys/hword.dic" ("hword.h") 5 nil t] + ["sys/single.dic" ("single.h") 1 nil t] + [("ud") nil 2 t t]) + (nil t "R" + [2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200] + "sys/full.fzk" + ["sys/hword.dic" ("hword.h") 5 nil t] + ["sys/single.dic" ("single.h") 1 nil t] + [("ud") nil 2 t t])))) + +(defsubst wnn-get-dic-spec (server) + (cdr (assoc server wnn-dictionary-specification-list))) + +(defsubst wnn-dic-spec-dic-set (spec) + (nth 0 spec)) + +(defsubst wnn-dic-spec-reverse (spec) + (nth 1 spec)) + +(defsubst wnn-dic-spec-name (spec) + (nth 2 spec)) + +(defsubst wnn-dic-spec-param (spec) + (nth 3 spec)) + +(defsubst wnn-dic-spec-fuzokugo (spec) + (nth 4 spec)) + +(defsubst wnn-dic-spec-dic-list (spec) + (nthcdr 5 spec)) + + +(defcustom wnn-usr-dic-dir (concat "usr/" (user-login-name)) + "*Directory of user dictionary for Wnn." + :group 'wnn + :type 'string) (defun wnn-filename (p) "" @@ -512,48 +694,77 @@ On failure, return negate-encoded error code." (wnnrpc-open-file proc env-id freqname)) ; XXX: error? -1)) -(defun wnn-get-environment (dic-spec) - "Return WNN Environemt. If none, create new environment. -Take one argument DIC-SPEC for dictionary specification." - (if wnn-environment - wnn-environment - (let ((username (user-login-name)) - (proc (wnn-open wnn-server "ja_JP"))) - (setq wnn-environment - (wnn-create-environment proc username nil dic-spec))))) - -(defun wnn-create-environment (proc username reverse-flag spec) +(defun wnn-get-environment (server-info &optional dic-set reverse) + "Return WNN Environemt for the conversion server specified +by SERVER-INFO. If none, create new environment. Optional +argument DIC-SET specifies dictionary set. Optional argument +REVERSE specifies reverse conversion, if non nil." + (let ((server-type (wnn-server-type server-info)) + (env wnn-environments) + proc spec e s) + (setq reverse (null (null reverse))) + (if (catch 'found + (while env + (setq e (car env)) + (if (and (eq (wnnenv-get-server-type e) server-type) + (eq (wnnenv-get-dictionary-set e) dic-set) + (eq (wnnenv-get-reverse-flag e) reverse)) + (throw 'found t)) + (setq env (cdr env)))) + e + (setq proc (wnn-open server-info) + spec (wnn-get-dic-spec server-type)) + (while spec + (setq s (car spec) + e (wnn-create-environment proc server-type s) + wnn-environments (cons e wnn-environments)) + (if (and (eq (wnn-dic-spec-dic-set s) dic-set) + (eq (wnn-dic-spec-reverse s) reverse)) + (setq env e)) + (setq spec (cdr spec))) + env))) + +(defun wnn-create-environment (proc server-type spec) "" ;; Create new data structure: something like wnn_buf ;; Process, Environment-ID and Daibunsetsu-info. - (let (env env-id parameters) - (setq env-id (wnnrpc-connect proc username)) + (let (env-id parameters filename fuzokugo-fid ret dic-set reverse) + (setq env-id (wnnrpc-connect proc (wnn-make-env-name spec))) (if (< env-id 0) - (let ((msg (wnnrpc-get-error-message (- env-id)))) - (error "Can't connect new WNN environment: %s" msg))) - (setq parameters (car spec)) - (setq spec (cdr spec)) - (let ((filename (wnn-filename (car spec))) - fuzokugo-fid ret) - (setq fuzokugo-fid (wnn-open-file proc env-id filename)) - (if (null fuzokugo-fid) - (setq fuzokugo-fid -1) - (if (< fuzokugo-fid 0) - (let ((msg (wnnrpc-get-error-message (- fuzokugo-fid)))) - (message "WNN: Can't open fuzokugo file (%s): %s" filename msg) - (setq fuzokugo-fid -1)))) - (setq ret (wnnrpc-set-fuzokugo-file proc env-id fuzokugo-fid)) - (if (< ret 0) - (let ((msg (wnnrpc-get-error-message (- ret)))) - (message "WNN: Error on setting fuzokugo (%s): %s" filename msg)))) - (setq spec (cdr spec)) + (error "Can't connect new WNN environment: %s" + (wnnrpc-get-error-message (- env-id)))) + (setq dic-set (wnn-dic-spec-dic-set spec) + reverse (wnn-dic-spec-reverse spec) + parameters (wnn-dic-spec-param spec) + filename (wnn-filename (wnn-dic-spec-fuzokugo spec)) + fuzokugo-fid (wnn-open-file proc env-id filename)) + (if (null fuzokugo-fid) + (setq fuzokugo-fid -1) + (if (< fuzokugo-fid 0) + (progn + (message "WNN: Can't open fuzokugo file (%s): %s" + filename + (wnnrpc-get-error-message (- fuzokugo-fid))) + (setq fuzokugo-fid -1)))) + (setq ret (wnnrpc-set-fuzokugo-file proc env-id fuzokugo-fid)) + (if (< ret 0) + (let ((msg (wnnrpc-get-error-message (- ret)))) + (message "WNN: Error on setting fuzokugo (%s): %s" filename msg))) + (setq spec (wnn-dic-spec-dic-list spec)) (while spec - (let ((dic-spec (car spec))) - (wnn-set-dictionary proc env-id reverse-flag dic-spec) - (setq spec (cdr spec)))) - (wnnrpc-set-conversion-parameters proc env-id parameters) - (setq env (wnnenv-create proc env-id)) - env)) + (wnn-set-dictionary proc env-id reverse (car spec)) + (setq spec (cdr spec))) + (if parameters + (wnnrpc-set-conversion-parameters proc env-id parameters)) + (wnnenv-create proc env-id server-type dic-set reverse))) + +(defvar wnn-user-name nil) + +(defun wnn-make-env-name (spec) + (or wnn-user-name + (setq wnn-user-name (getenv "WNNUSER")) + (setq wnn-user-name (user-login-name))) + (concat wnn-user-name (wnn-dic-spec-name spec))) (defun wnn-update-frequency (env bunsetsu-info-list) (let ((l bunsetsu-info-list)) @@ -663,4 +874,18 @@ Take one argument DIC-SPEC for dictionary specification." (wnnrpc-add-word env dic-number yomi kanji comment hinshi-id initial-freq))) +;;; setup + +(require 'egg) +(load "egg/wnnrpc") + +;;;###autoload +(defun egg-activate-wnn (&optional arg) + "Activate Wnn backend of Tamagotchy." + (egg-set-support-languages wnn-support-languages) + (egg-set-conversion-backend wnn-conversion-backend + (list (nth 2 arg)) + wnn-support-languages) + (apply 'egg-mode arg)) + ;;; egg/wnn.el ends here. diff --git a/egg/wnnrpc.el b/egg/wnnrpc.el index 901d088..723453a 100644 --- a/egg/wnnrpc.el +++ b/egg/wnnrpc.el @@ -1,21 +1,23 @@ ;;; egg/wnnrpc.el --- WNN Support (low level interface) in Egg ;;; Input Method Architecture -;; Copyright (C) 1997 Mule Project, Powered by Electrotechnical +;; Copyright (C) 1997, 1998 Mule Project, Powered by Electrotechnical ;; Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: NIIBE Yutaka +;; KATAYAMA Yoshio ; Korean, Chinese support. +;; ;; Maintainer: NIIBE Yutaka ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -31,7 +33,7 @@ (eval-when-compile (require 'egg-com) - (load-library "egg/wnn") + ;; (load-library "egg/wnn") (defmacro wnn-const (c) "Macro for WNN constants." (cond ((eq c 'JS_VERSION) 0) @@ -104,135 +106,500 @@ ((eq c 'WNN_MAX_FILE_OF_AN_ENV) 60)))) (defconst wnnrpc-error-message - [ - nil - "$B%U%!%$%k$,B8:_$7$^$;$s(B" - nil - "$B%a%b%j(B allocation $B$G<:GT$7$^$7$?(B" - nil - "$B<-=q$G$O$"$j$^$;$s(B" - "$BIQEY%U%!%$%k$G$O$"$j$^$;$s(B" - "$BIUB08l%U%!%$%k$G$O$"$j$^$;$s(B" - nil - "$B<-=q%F!<%V%k$,0lGU$G$9(B" - "$BIQEY%U%!%$%k$,;XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s(B" - nil - nil - nil - nil - nil - "$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" - "$B@5$7$$IQEY%U%!%$%k$G$O$"$j$^$;$s(B" - "$B@5$7$$IUB08l%U%!%$%k$G$O$"$j$^$;$s(B" - "$BIUB08l$N8D?t(B, $B%Y%/%?D9$5$J$I$,B?2a$.$^$9(B" - "$B$=$NHV9f$N<-=q$O;H$o$l$F$$$^$;$s(B" - nil - nil - nil - "$BIUB08l%U%!%$%k$NFbMF$,@5$7$/$"$j$^$;$s(B" - "$B5?;wIJ;lHV9f$,0[>o$G$9(B(hinsi.data $B$,@5$7$/$"$j$^$;$s(B)" - "$BL$Dj5A$NIJ;l$,A0Ce%U%!%$%k$rFI$_9~$`$3$H$,$G$-$^$;$s(B" - "$B%Q%9%o!<%I$,4V0c$C$F$$$^$9(B" - "$B%U%!%$%k$,FI$_9~$^$l$F$$$^$9(B" - "$B%U%!%$%k$,:o=|$G$-$^$;$s(B" - "$B%U%!%$%k$,:n@.=PMh$^$;$s(B" - "WNN $B$N%U%!%$%k$G$"$j$^$;$s(B" - "$B%U%!%$%k$N(B inode $B$H(B FILE_UNIQ $B$r0lCW$5$;$k;v$,$G$-$^$;$s(B" - "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" - "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" - "$BIJ;l%U%!%$%k$,B8:_$7$^$;$s(B" - "$BIJ;l%U%!%$%k$NFbMF$,4V0c$C$F$$$^$9(B" - nil - "$BIJ;l%U%!%$%k$,FI$_9~$^$l$F$$$^$;$s(B" - "$BIJ;lL>$,4V0c$C$F$$$^$9(B" - "$BIJ;lHV9f$,4V0c$C$F$$$^$9(B" - nil - "$B$=$NA`:n$O%5%]!<%H$5$l$F$$$^$;$s(B" - "$B%Q%9%o!<%I$NF~$C$F$$$k%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" - "uumrc $B%U%!%$%k$,B8:_$7$^$;$s(B" - "uumrc $B%U%!%$%k$N7A<0$,8m$C$F$$$^$9(B" - "$B$3$l0J>e4D6-$r:n$k$3$H$O$G$-$^$;$s(B" - "$B$3$N%/%i%$%"%s%H$,FI$_9~$s$@%U%!%$%k$G$"$j$^$;$s(B" - "$B<-=q$KIQEY%U%!%$%k$,$D$$$F$$$^$;$s(B" - "$B%Q%9%o!<%I$N%U%!%$%k$,:n@.=PMh$^$;$s(B" -] + '(("Japanese" . + [ + nil + "$B%U%!%$%k$,B8:_$7$^$;$s(B" + nil + "$B%a%b%j(B allocation $B$G<:GT$7$^$7$?(B" + nil + "$B<-=q$G$O$"$j$^$;$s(B" + "$BIQEY%U%!%$%k$G$O$"$j$^$;$s(B" + "$BIUB08l%U%!%$%k$G$O$"$j$^$;$s(B" + nil + "$B<-=q%F!<%V%k$,0lGU$G$9(B" + "$BIQEY%U%!%$%k$,;XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s(B" + nil + nil + nil + nil + nil + "$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" + "$B@5$7$$IQEY%U%!%$%k$G$O$"$j$^$;$s(B" + "$B@5$7$$IUB08l%U%!%$%k$G$O$"$j$^$;$s(B" + "$BIUB08l$N8D?t(B, $B%Y%/%?D9$5$J$I$,B?2a$.$^$9(B" + "$B$=$NHV9f$N<-=q$O;H$o$l$F$$$^$;$s(B" + nil + nil + nil + "$BIUB08l%U%!%$%k$NFbMF$,@5$7$/$"$j$^$;$s(B" + "$B5?;wIJ;lHV9f$,0[>o$G$9(B(hinsi.data $B$,@5$7$/$"$j$^$;$s(B)" + "$BL$Dj5A$NIJ;l$,A0Ce%U%!%$%k$rFI$_9~$`$3$H$,$G$-$^$;$s(B" + "$B%Q%9%o!<%I$,4V0c$C$F$$$^$9(B" + "$B%U%!%$%k$,FI$_9~$^$l$F$$$^$9(B" + "$B%U%!%$%k$,:o=|$G$-$^$;$s(B" + "$B%U%!%$%k$,:n@.=PMh$^$;$s(B" + "WNN $B$N%U%!%$%k$G$"$j$^$;$s(B" + "$B%U%!%$%k$N(B inode $B$H(B FILE_UNIQ $B$r0lCW$5$;$k;v$,$G$-$^$;$s(B" + "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" + "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" + "$BIJ;l%U%!%$%k$,B8:_$7$^$;$s(B" + "$BIJ;l%U%!%$%k$NFbMF$,4V0c$C$F$$$^$9(B" + nil + "$BIJ;l%U%!%$%k$,FI$_9~$^$l$F$$$^$;$s(B" + "$BIJ;lL>$,4V0c$C$F$$$^$9(B" + "$BIJ;lHV9f$,4V0c$C$F$$$^$9(B" + nil + "$B$=$NA`:n$O%5%]!<%H$5$l$F$$$^$;$s(B" + "$B%Q%9%o!<%I$NF~$C$F$$$k%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" + "uumrc $B%U%!%$%k$,B8:_$7$^$;$s(B" + "uumrc $B%U%!%$%k$N7A<0$,8m$C$F$$$^$9(B" + "$B$3$l0J>e4D6-$r:n$k$3$H$O$G$-$^$;$s(B" + "$B$3$N%/%i%$%"%s%H$,FI$_9~$s$@%U%!%$%k$G$"$j$^$;$s(B" + "$B<-=q$KIQEY%U%!%$%k$,$D$$$F$$$^$;$s(B" + "$B%Q%9%o!<%I$N%U%!%$%k$,:n@.=PMh$^$;$s(B" + ]) + ("Chinese-GB" . + [ + nil + "$AND<~2;4fTZ(B" + nil + "$ADZ4f(Balloc$AJ'0\(B" + nil + "$A2;JGWV5d(B" + "$A2;JGF56HND<~(B" + "$A2;JGND7(ND<~(B" + nil + "$AWV5d1m8qBz(B" + "$AF56HND<~#:2;JGV86(5DWV5d5DF56HND<~(B" + nil + nil + nil + nil + nil + "$AND<~2;D\4r?*(B" + "$A2;JGU}H75DF56HND<~(B" + "$A2;JGU}H75DND7(ND<~(B" + "$A8=JtSo5D8vJ}!"OrA?3$6H5H3,9}(B" + "$AUb8v:EBk5DWV5d!"C;SPJ9SC(B" + nil + nil + nil + "$AND7(ND<~5DDZH]2;U}H7(B" + "$APiDb4JPT:EBkRl3#(Bcixing.data$A2;U}H7(B" + "$AN46(Re5D4JPT!"6(ReAKG06K4JPT(B" + "$AND7(ND<~2;D\6AH!(B" + nil + nil + "$AWV5d5DOnJ}3,9}(B" + "$A1d;;:sWV7{4.5D3$6H3,9}(B" + "$A8=JtSo=bNvSr2;9;(B" + nil + "$A4N:n29Sr2;9;(B" + "$A:n29(B 1$A8vR2C;SP(B" + nil + nil + nil + nil + "$A6ARt3$6H3,9}(B" + "$A::WV3$6H3,9}(B" + "$AV86(5DWV5d!"2;D\5GB<(B" + "$A6ARt5D3$6HJG(B0" + "$AV86(5DWV5d!"2;D\Df2i(B" + "$AV;6A5DWV5d!"5GB<(B/$AO{3}AK(B" + "$A;7>3VP2;4fTZ5DWV5d!"5GB2;7{(B" + "$A2;JG#c#W#n#nSC;'Iz3I5D;7>3(B" + nil + nil + nil + nil + nil + "$AWSD?B<2;D\44=((B" + nil + nil + nil + nil + nil + nil + nil + nil + nil + "$AND<~2;D\6AH!(B" + "$AND<~2;D\P43v(B" + "$A2;JG#c#W#n#nSC;'?I6AH!5DND<~(B" + "$ARTIO5DND<~2;D\6AH!(B" + "password$A2;6T(B" + "$AND<~U}TZ6AH!(B" + "$AND<~2;D\O{3}(B" + "$AND<~C;SP44=(3v@4(B" + "$A2;JG#c#W#n#n5DND<~(B" + "$AND<~5D(BI-node$A:M(BFILE_UNIQ$A2;D\R;VB(B" + "$A4JPTND<~L+4s(B" + "$A4JPTND<~L+4s(B" + "$A4JPTND<~2;4fTZ(B" + "$A4JPTND<~5DDZH]2;6T(B" + nil + "$A4JPTND<~2;D\6AH!(B" + "$A4JPTC{2;6T(B" + "$A4JPT:EBk2;6T(B" + nil + "$AUb8v2YWw2;V'3V(B" + "password$A5DJdHkND<~2;D\4r?*(B" + "uumrc$AND<~2;4fTZ(B" + "uumrc$AND<~5DPNJ=4mNs(B" + "$ARTIO;7>32;D\44=((B" + "$AUb8v#c#W#n#nSC;'!"6AH!5DND<~C;SP(B" + "$AWV5d5DF56HND<~C;SP(B" + "password$A5DND<~C;SP44=(3v@4(B" + ]) + ("Chinese-CNS" . + [ + nil + "$(GEFG5DbGtGc(B" + nil + "$(GDyGt(Balloc$(GFBZu(B" + nil + "$(GDbQRGsL((B" + "$(GDbQRs"PyEFG5(B" + "$(GDbQREFNNEFG5(B" + nil + "$(GGsL(OPV*iH(B" + "$(Gs"PyEFG5!3DbQRQ@LyN{GsL(N{s"PyEFG5(B" + nil + nil + nil + nil + nil + "$(GEFG5DbWdFTbd(B" + "$(GDbQRF_m}N{s"PyEFG5(B" + "$(GDbQRF_m}N{EFNNEFG5(B" + "$(GOazhk#N{T6m0!#GWbXO[Pya+b>g4(B" + "$(G]UT6f@n#N{GsL(!#JtH4KpFn(B" + nil + nil + nil + "$(GEFNNEFG5N{DyU)DbF_m}(B" + "$(Gapsib$MLf@n#\,Z&(Bcixing.data$(GDbF_m}(B" + "$(GF\LyexN{b$ML!#LyexD'P)j&b$ML(B" + "$(GEFNNEFG5DbWd{tL=(B" + nil + nil + "$(GGsL(N{bzm0b>g4(B" + "$(G|H_PG[Gs\JHkN{O[Pyb>g4(B" + "$(GOazhk#fXN5YQDbY\(B" + nil + "$(GH9OlfPYQDbY\(B" + "$(GOlfP(B 1$(GT6D>JtH4(B" + nil + nil + nil + nil + "$(G{tSvO[Pyb>g4(B" + "$(GiGGsO[Pyb>g4(B" + "$(GQ@LyN{GsL(!#DbWd`trg(B" + "$(G{tSvN{O[PyQR(B0" + "$(GQ@LyN{GsL(!#DbWdXKQg(B" + "$(GF7{tN{GsL(!#`trg(B/$(GVJ=@4O4Y(B" + nil + "$(C8^8p8.(B alloc $(C?!<-(B $(C=GFPG_@>4O4Y(B" + nil + "$(C;g@|@L(B $(C>F4U4O4Y(B" + "$(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(C:Nn(B $(CH-@O@L(B $(C>F4U4O4Y(B" + nil + "$(C;g@|(B $(CEW@L:m@L(B $(C2K(B $(CC!@>4O4Y(B" + "$(CAvA$5H(B $(C;g@|@G(B $(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" + nil + nil + nil + nil + nil + "$(CH-@O@;(B $(C?-(B $(Cx@>4O4Y(B" + "$(C8B4B(B $(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(C8B4B(B $(C:Nn(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(C:Nn@G(B $(C09J=@4O4Y(B" + nil + nil + nil + "$(C:Nn(B $(CH-@O@G(B $(C3;?k@L(B $(C8BAv(B $(C>J=@4O4Y(B" + "$(C0!;s(B $(CG0;g@G(B $(C9xH#0!(B $(CF2834O4Y(B. hinsi.data $(C0!(B $(C8BAv(B $(C>J=@4O4Y(B" + "$(C9LA$@G@G(B $(CG0;g0!(B $(C@|4\(B $(CG0;g7N(B $(CA$@G5G>n(B $(C@V=@4O4Y(B" + "$(C:Nn(B $(CH-@O@L(B $(C@PGtA.(B $(C@VAv(B $(C>J=@4O4Y(B" + nil + nil + "$(C;g@|@G(B $(C?#F.8.0!(B $(C3J9+(B $(C89=@4O4Y(B" + "$(C:/H/GO7A4B(B $(C9.@Z?-@L(B $(C3J9+(B $(C1i4O4Y(B" + "$(C:Nn(B $(CGX<.(B $(C?5?*@L(B $(C:NA7GU4O4Y(B" + nil + "$(C4Y@=(B $(CHD:8(B $(C?5?*@L(B $(C:NA7GU4O4Y(B" + "$(CHD:80!(B $(C>x@>4O4Y(B" + nil + nil + nil + nil + "$(CGQ1[@L(B $(C3J9+(B $(C1i4O4Y(B" + "$(CGQ@Z0!(B $(C3J9+(B $(C1i4O4Y(B" + "$(CAvA$5H(B $(C;g@|@:(B $(C5n7O(B $(C:R0!4I@T4O4Y(B" + "$(CGQ1[@G(B $(C1f@L0!(B 0 $(C@T4O4Y(B" + "$(CAvA$5H(B $(C;g@|@:(B $(C?*B|A6(B $(C:R0!4I@T4O4Y(B" + "$(C@P1b@|?k(B $(C;g@|?!(B $(C5n7O(B/$(C4O4Y(B" + "$(CA8@gGOAv(B $(C>J4B(B $(C;g@|?!(B $(C5n7O(B $(CGO7A0m(B $(CG_@>4O4Y(B" + nil + nil + "$(C@P1b@|?k(B $(C:s558&(B $(C0f=E(B $(CGO7A0m(B $(CG_@>4O4Y(B" + "$(CAvA$5H(B $(C4\>n4B(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" + nil + nil + nil + nil + nil + nil + nil + nil + nil + "$(C8^8p8.(B alloc $(C?!(B $(C=GFPG_@>4O4Y(B" + nil + nil + nil + nil + nil + nil + nil + "$(C?!7/0!(B $(C9_;}G_@>4O4Y(B" + "$(C9v1W(B(Bug)$(C0!(B $(C9_;}G_@>4O4Y(B" + "$(C<-9v(B(Server)$(C0!(B $(CAW>n(B $(C@V@>4O4Y(B" + "alloc$(C?!(B $(C=GFPG_@>4O4Y(B" + "$(C<-9v(B(Server) $(C?M(B $(CA"CKGR(B $(Cx@>4O4Y(B" + "$(CEk=E(B $(CGA7NEdD]@G(B $(C9vA/@L(B $(C8BAv(B $(C>J=@4O4Y(B" + "$(CE,6s@L>HF.0!(B $(C;}<:GQ(B $(CH/0f@L(B $(C>F4U4O4Y(B" + nil + nil + nil + nil + nil + "$(C5p7:Ed8.8&(B $(C885i(B $(Cx@>4O4Y(B" + nil + nil + nil + nil + nil + nil + nil + nil + nil + "$(CH-@O(B $(C@P1b?!(B $(C=GFPG_@>4O4Y(B" + "$(CH-@O(B $(C>21b?!(B $(C=GFPG_@>4O4Y(B" + "$(CE,6s@L>HF.0!(B $(C@P>n(B $(C5e80(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(C4u(B $(C@L;s@G(B $(CH-@O@;(B $(C@P>n(B $(C5e81(B $(Cx@>4O4Y(B" + "$(CFP=:?v5e0!(B $(CF2834O4Y(B" + "$(CH-@O@L(B $(C@PGtA.(B $(C@V@>4O4Y(B" + "$(CH-@O@;(B $(Cx@>4O4Y(B" + "$(CH-@O@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" + "kWnn$(C@G(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(CH-@O@G(B I-node $(C?M(B FILE_UNIQ $(C8&(B $(C@OD!=CE3(B $(Cx@>4O4Y(B" + "$(CG0;g(B $(CH-@O@G(B $(CE)1b0!(B $(C3J9+(B $(CE.4O4Y(B" + "$(CG0;g(B $(CH-@O@G(B $(CE)1b0!(B $(C3J9+(B $(CE.4O4Y(B" + "$(CG0;g(B $(CH-@O@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" + "$(CG0;g(B $(CH-@O@G(B $(C3;?k@L(B $(CF2834O4Y(B" + nil + "$(CG0;g(B $(CH-@O@L(B $(C@PGtA.(B $(C@VAv(B $(C>J=@4O4Y(B" + "$(CG0;g(B $(C@L8'@L(B $(CF2834O4Y(B" + "$(CG0;g(B $(C9xH#0!(B $(CF2834O4Y(B" + nil + "$(C1W(B $(CA6@[@:(B $(CAv?x5GAv(B $(C>J=@4O4Y(B" + "$(CFP=:?v5e0!(B $(C5i>n@V4B(B $(CH-@O@;(B $(C?-(B $(Cx@>4O4Y(B" + "uumrc $(C@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" + "uumrc $(C@G(B $(CG|=D@L(B $(CF2834O4Y(B" + "$(C@L(B $(C@L;s(B $(CH/0f@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" + "$(CE)6s@L>HF.0!(B $(C@P>n(B $(C5e80(B $(CH-@O@L(B $(C>F4U4O4Y(B" + "$(C;g@|?!(B $(C:s55(B $(CH-@O@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" + "$(CFP=:?v5e(B $(CH-@O@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" + ])) "Array of WNN error messages. Indexed by error code.") (defun wnnrpc-get-error-message (errno) "Return error message string specified by ERRNO." - (or (aref wnnrpc-error-message errno) (format "#%d" errno))) + (let ((msg (or (assoc egg-default-language wnnrpc-error-message) + (assoc its-current-language wnnrpc-error-message) + (assoc "Japanese" wnnrpc-error-message)))) + (or (aref (cdr msg) errno) (format "#%d" errno)))) (defmacro wnnrpc-call-with-environment (e vlist send-expr &rest receive-exprs) (let ((v (append `((proc (wnnenv-get-proc ,e)) - (env-id (wnnenv-get-env-id ,e))) + (env-id (wnnenv-get-env-id ,e)) + (egg-zhuyin its-zhuyin)) vlist))) (list 'let v diff --git a/its-keydef.el b/its-keydef.el new file mode 100644 index 0000000..90b77f1 --- /dev/null +++ b/its-keydef.el @@ -0,0 +1,60 @@ +(eval-when-compile + (require 'cl)) + +(defvar its-current-language "Japanese") + +(defvar its-zhuyin nil) +(make-variable-buffer-local 'its-zhuyin) + +(defmacro its-make-slect-func (key name file map &optional lang zhuyin) + (setq name (intern (concat "its-select-" (symbol-name name))) + file (intern (concat "its/" (symbol-name file))) + map (intern (concat "its-" (symbol-name map) "-map")) + lang (symbol-name lang)) + `(progn + (defun ,name () + (interactive) + (cond + ((its-in-fence-p) + (its-input-end) + (its-put-cursor t)) + ((egg-get-bunsetsu-info (point)) + (egg-exit-conversion))) + ,(if lang `(egg-check-language ,lang)) + (require ',file) + (setq its-current-map ,map) + ,(if lang `(setq its-current-language ,lang)) + ,(if zhuyin `(setq its-zhuyin ,(eq zhuyin 'T))) + (egg-set-mode-line-title (its-get-indicator its-current-map))) + (define-key mule-keymap ,key ',name))) + +(defmacro its-do-list-make-slect-func (list) + (eval-when (eval compile) + (let (e l) + (while list + (setq e (car list)) + (setq l (cons `(its-make-slect-func ,@(car list)) l)) + (setq list (cdr list))) + (cons 'progn l)))) + +(its-do-list-make-slect-func + (("Q" upcase ascii up) + ("q" downcase ascii down) + ("h" hiragana hira hira Japanese) + ("K" katakana kata kata Japanese) + ("x" hankaku-katakana hankata han-kata Japanese) + ("Z" zenkaku-upcase zenkaku zenkaku-up Japanese) + ("z" zenkaku-downcase zenkaku zenkaku-down Japanese) + ("\C-e" erpin-cn erpin erpin-cn Chinese-GB NIL) + ("\C-p" pinyin-cn pinyin pinyin-cn Chinese-GB NIL) + ("\C-z" zhuyin-cn zhuyin zhuyin-cn Chinese-GB T) + ("\C-u" quanjiao-upcase-cn quanjiao quanjiao-up-cn Chinese-GB) + ("\C-d" quanjiao-downcase-cn quanjiao quanjiao-down-cn Chinese-GB) + ("E" erpin-tw erpin erpin-tw Chinese-CNS NIL) + ("P" pinyin-tw pinyin pinyin-tw Chinese-CNS NIL) + ("Z" zhuyin-tw zhuyin zhuyin-tw Chinese-CNS T) + ("U" quanjiao-upcase-tw quanjiao quanjiao-up-tw Chinese-CNS) + ("D" quanjiao-downcase-tw quanjiao quanjiao-down-tw Chinese-CNS) + ("H" hangul hangul hangul Korean) + ("J" jeonkak-upcase jeonkak jeonkak-up Korean) + ("j" jeonkak-downcase jeonkak jeonkak-down Korean))) diff --git a/its.el b/its.el index 6a19430..26aeb04 100644 --- a/its.el +++ b/its.el @@ -1,21 +1,22 @@ ;;; its.el --- Input Translation Systam AKA "ITS(uDekirunDa!)" -;; Copyright (C) 1997 Mule Project, Powered by Electrotechnical +;; Copyright (C) 1997, 1998 Mule Project, Powered by Electrotechnical ;; Laboratory, JAPAN. ;; Project Leader: Satoru Tomura ;; Author: NIIBE Yutaka +;; KATAYAMA Yoshio ;; Maintainer: NIIBE Yutaka ;; Keywords: mule, multilingual, input method ;; This file will be part of GNU Emacs (in future). -;; GNU Emacs is free software; you can redistribute it and/or modify +;; EGG 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 version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; EGG 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. @@ -29,6 +30,11 @@ ;;; Code: +(require 'cl) + +(defvar its-current-language) +(make-variable-buffer-local 'its-current-language) + ;; Data structure in ITS ;; (1) SYL and CURSOR ;; @@ -82,30 +88,27 @@ ;; Data structure in ITS (3) Map ;; -;; ::= ( . ( . ) ) -;; ::= +;; ::= ( . ) ;; ::= "string" ;; ::= "string" +;; ::= "string" +;; ::= ;; (defsubst its-new-state (output keyseq back) (cons output (cons keyseq back))) -(defsubst its-new-map (name indicator) - (cons name (cons indicator (its-new-state "" "" nil)))) +(defsubst its-new-map (name indicator language) + (cons name (cons indicator (cons language (its-new-state "" "" nil))))) (defsubst its-get-indicator (map) - (car (cdr map))) + (nth 1 map)) -(defsubst its-set-indicator (map indicator) - (setcar (cdr map) indicator)) +(defsubst its-get-language (map) + (nth 2 map)) (defsubst its-get-start-state (map) - (cdr (cdr map))) - -(defsubst its-reset-start-state (map) - (setcdr (cdr map) (its-new-state "" "" nil)) - map) + (nthcdr 3 map)) (defsubst its-get-kst/t (state) (cdr (cdr state))) @@ -118,6 +121,7 @@ (defsubst its-set-keyseq (state keyseq) (setcar (cdr state) keyseq)) + (defun its-get-keyseq-cooked (state) (let ((keyseq (its-get-keyseq state)) (back (its-get-kst/t state))) @@ -377,6 +381,8 @@ (insert (its-get-output newsyl)) (add-text-properties p (point) (list 'its-syl newsyl + 'its-map its-current-map + 'its-lang its-current-language 'intangible 'its-part-1)) (if its-fence-face (put-text-property p (point) 'face its-fence-face)))) @@ -425,29 +431,16 @@ (setq its-map-alist (cons map its-map-alist))) map)) -(defun its-define-state-machine (name indicator &optional continue) - "NAME $B$G;XDj$5$l$?(B State Machine $B$NDj5A$r3+;O$9$k!#(B -INDICATOR $B$O(B mode line $B$KI=<($9$k(B indicator $B$r;XDj$9$k!#(B -CONTINUE $B$,(B nil $B$N;~$K$O(B State Machine $B$NDj5A$r6u$K$9$k!#(Bits-defrule -$B$r;2>H!#(B" - (setq its-current-map - (if (null (its-get-map name)) - (its-register-map (its-new-map name indicator)) - (let ((map (its-get-map name))) - (its-set-indicator map indicator) - (if continue - map - (its-reset-start-state map)))))) - -(defmacro define-its-state-machine (map name indicator doc &rest exprs) - `(let ((its-current-map (its-new-map ,name ,indicator))) - ,(cons 'progn exprs) - (defconst ,map its-current-map ,doc))) - -;;(defmacro define-its-state-machine (map name indicator doc &rest exprs) -;; (let ((its-current-map (its-new-map name indicator))) -;; (eval (cons 'progn exprs)) -;; `(defconst ,map ',its-current-map ,doc))) +(defmacro define-its-state-machine (map name indicator lang doc &rest exprs) + `(progn + (eval-when (eval compile) + (let ((its-current-map (its-new-map ,name ,indicator ,lang))) + ,@exprs + (setq ,map its-current-map))) + (define-its-compiled-map ,map ,doc))) + +(defmacro define-its-compiled-map (map doc) + `(defconst ,map ',(symbol-value map) ,doc)) (defmacro define-its-state-machine-append (map &rest exprs) (append @@ -525,8 +518,8 @@ Return last state." (let ((begpos (previous-single-property-change (point) 'its-start))) ;; Make SYLs have property of "part 2" (put-text-property begpos (point) 'intangible 'its-part-2) - (goto-char begpos) - (its-put-cursor t)))) + (goto-char begpos))) + (its-put-cursor t)) (defun its-end-of-input-buffer () (interactive) @@ -535,8 +528,8 @@ Return last state." (let ((endpos (next-single-property-change (point) 'its-end))) ;; Make SYLs have property of "part 1" (put-text-property (point) endpos 'intangible 'its-part-1) - (goto-char endpos) - (its-put-cursor t)))) + (goto-char endpos))) + (its-put-cursor t)) ;; TODO: move in VSYL (defun its-backward-SYL (n) @@ -568,7 +561,7 @@ Return last state." (setq syl (get-text-property p 'its-syl)) (setq n (1- n))) ;; Make SYLs have property of "part 1" - (put-text-property p old-point'intangible 'its-part-1) + (put-text-property p old-point 'intangible 'its-part-1) (goto-char p) (its-put-cursor t) (if (> n 0) @@ -631,7 +624,8 @@ Return last state." (defun its-delete-backward-within-SYL (syl n killflag) (let* ((keyseq (its-get-keyseq-syl syl)) (len (length keyseq)) - (p (point))) + (p (point)) + (its-current-map (get-text-property (1- (point)) 'its-map))) (if (> n len) (signal 'args-out-of-range (list p n))) ;; Delete CURSOR @@ -695,10 +689,12 @@ Return last state." (delete-region end (1+ end)) ;; Remove all properties added by ITS (remove-text-properties start end '(its-syl nil + its-map nil face nil intangible nil)) (if proceed-to-conversion (egg-convert-region start end) + (remove-text-properties start end '(its-lang nil)) (egg-do-auto-fill) (run-hooks 'input-method-after-insert-chunk-hook)))) @@ -706,6 +702,10 @@ Return last state." (interactive) (its-input-end) (its-exit-mode-internal t)) + +(defun its-in-fence-p () + (let ((prop (get-text-property (point) 'intangible))) + (or (eq prop 'its-part-1) (eq prop 'its-part-2)))) (defvar its-translation-result nil "") @@ -739,51 +739,7 @@ Return last state." (delete-region start end) (apply 'insert (reverse its-translation-result)))) -(defvar its-select-map-menu '(menu "Map:" nil)) - -(defun its-select-map-from-menu () - (interactive) - (setcar (nthcdr 2 its-select-map-menu) its-map-alist) - (setq its-current-map (menudiag-select its-select-map-menu)) - (force-mode-line-update)) - -(defun its-select-hiragana () - (interactive) - (its-select-map "roma-kana")) - -(defun its-select-katakana () - (interactive) - (its-select-map "roma-kata")) - -(defun its-select-downcase () - (interactive) - (its-select-map "downcase")) - -(defun its-select-upcase () - (interactive) - (its-select-map "upcase")) - -(defun its-select-zenkaku-downcase () - (interactive) - (its-select-map "zenkaku-downcase")) - -(defun its-select-zenkaku-upcase () - (interactive) - (its-select-map "zenkaku-upcase")) - -(defun its-select-map (name) - (interactive (list (completing-read "ITS map: " its-map-alist))) - (if (its-get-map name) - (progn - (setq its-current-map (its-get-map name)) - (force-mode-line-update)) - (ding))) - -;; Escape character to Zenkaku inputs -(defconst its-zenkaku-escape "Z") - -;; Escape character to Hankaku inputs -(defconst its-hankaku-escape "~") +(load "its-keydef.el") (provide 'its) ;;; its.el ends here. diff --git a/its/hangul.el b/its/hangul.el new file mode 100644 index 0000000..a37f32e --- /dev/null +++ b/its/hangul.el @@ -0,0 +1,2864 @@ +(eval-when-compile + (require 'its) + (require 'cl)) + +(defvar its-hangul-open-bracket "$(C!8(B" "*[") ; "$(C#[(B" +(defvar its-hangul-close-bracket "$(C!9(B" "*]") ; "$(C#](B" + +(eval-when-compile + + (defvar its-jeonkak-escape "J") + (defvar its-pankak-escape "B") + + (defconst its-hangul-kijuhynbmlopOP + (its-make-class+back "[kijuhynbmlopOP]" -2)) + (defconst its-hangul-kijuhynbmlopP + (its-make-class+back "[kijuhynbmlopP]" -2)) + (defconst its-hangul-kjhynmlop + (its-make-class+back "[kjhynmlop]" -2)) + + (defmacro its-defrule-hangul-2 (seq out &rest exprs) + `(let ((next-state (its-goto-state ,seq nil t))) + (its-set-output next-state ,out) + (its-make-next-state next-state -1 ,seq ,out) + (its-defrule-otherwise next-state ,out) + (let ((kijuhynbmlopOP (its-make-otherwise ,out its-hangul-kijuhynbmlopOP)) + (kijuhynbmlopP (its-make-otherwise ,out its-hangul-kijuhynbmlopP)) + (kjhynmlop (its-make-otherwise ,out its-hangul-kjhynmlop)) + (next-state next-state)) + ,@exprs))) + + (defmacro its-define-hangul (seq out otherwise &rest exprs) + `(let ((next-state (its-make-next-state ',next-state + (aref ,seq (1- (length ,seq))) + ,seq ,out))) + (its-set-output next-state ,out) + (its-make-next-state next-state -1 ,seq ,out) + (its-define-otherwise next-state + (its-make-otherwise ,out its-otherwise-back-one)) + (its-define-otherwise next-state ,otherwise) + (if ',exprs + (let ((kijuhynbmlopOP (its-make-otherwise ,out its-hangul-kijuhynbmlopOP)) + (kijuhynbmlopP (its-make-otherwise ,out its-hangul-kijuhynbmlopP)) + (kjhynmlop (its-make-otherwise ,out its-hangul-kjhynmlop))) + ,@exprs)))) + + (defun its-defrule-hangul (seq output) + (let ((state (its-goto-state seq nil t))) + (its-set-output state output) + (its-make-next-state state -1 seq output) + + (its-defrule-otherwise state output)))) + +(define-its-state-machine its-hangul-map + "hangul" "$(CGQ(B" "korean" + "Map for Hangul input. (Korean)" + (its-defrule-hangul "r" "$(C$!(B") + (its-defrule-hangul "s" "$(C$$(B") + (its-defrule-hangul "e" "$(C$'(B") + (its-defrule-hangul "f" "$(C$)(B") + (its-defrule-hangul "a" "$(C$1(B") + (its-defrule-hangul "q" "$(C$2(B") + (its-defrule-hangul "t" "$(C$5(B") + (its-defrule-hangul "d" "$(C$7(B") + (its-defrule-hangul "w" "$(C$8(B") + (its-defrule-hangul "c" "$(C$:(B") + (its-defrule-hangul "z" "$(C$;(B") + (its-defrule-hangul "x" "$(C$<(B") + (its-defrule-hangul "v" "$(C$=(B") + (its-defrule-hangul "g" "$(C$>(B") + (its-defrule-hangul "R" "$(C$"(B") + (its-defrule-hangul "E" "$(C$((B") + (its-defrule-hangul "Q" "$(C$3(B") + (its-defrule-hangul "T" "$(C$6(B") + (its-defrule-hangul "W" "$(C$9(B") + + (its-defrule-hangul "k" "$(C$?(B") + (its-defrule-hangul "i" "$(C$A(B") + (its-defrule-hangul "j" "$(C$C(B") + (its-defrule-hangul "u" "$(C$E(B") + (its-defrule-hangul "h" "$(C$G(B") + (its-defrule-hangul "y" "$(C$K(B") + (its-defrule-hangul "n" "$(C$L(B") + (its-defrule-hangul "b" "$(C$P(B") + (its-defrule-hangul "m" "$(C$Q(B") + (its-defrule-hangul "l" "$(C$S(B") + (its-defrule-hangul "o" "$(C$@(B") + (its-defrule-hangul "p" "$(C$D(B") + (its-defrule-hangul "O" "$(C$B(B") + (its-defrule-hangul "P" "$(C$F(B") + + (its-defrule-hangul-2 "rk" "$(C0!(B" + (its-define-hangul "rkr" "$(C0"(B" kijuhynbmlopOP) + (its-define-hangul "rks" "$(C0#(B" kijuhynbmlopP) + (its-define-hangul "rke" "$(C0$(B" kijuhynbmlopP) + (its-define-hangul "rkf" "$(C0%(B" kijuhynbmlopP + (its-define-hangul "rkfr" "$(C0&(B" kijuhynbmlopOP) + (its-define-hangul "rkfa" "$(C0'(B" kijuhynbmlopP)) + (its-define-hangul "rka" "$(C0((B" kijuhynbmlopP) + (its-define-hangul "rkq" "$(C0)(B" kijuhynbmlopP + (its-define-hangul "rkqt" "$(C0*(B" kijuhynbmlopOP)) + (its-define-hangul "rkt" "$(C0+(B" kijuhynbmlopOP) + (its-define-hangul "rkT" "$(C0,(B" kjhynmlop) + (its-define-hangul "rkd" "$(C0-(B" kijuhynbmlopOP) + (its-define-hangul "rkw" "$(C0.(B" kijuhynbmlopOP) + (its-define-hangul "rkc" "$(C0/(B" kijuhynbmlopP) + (its-define-hangul "rkx" "$(C00(B" kijuhynbmlopP) + (its-define-hangul "rkv" "$(C01(B" kijuhynbmlopP) + (its-define-hangul "rkg" "$(C02(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ro" "$(C03(B" + (its-define-hangul "ror" "$(C04(B" kijuhynbmlopOP) + (its-define-hangul "ros" "$(C05(B" kijuhynbmlopP) + (its-define-hangul "rof" "$(C06(B" kijuhynbmlopP) + (its-define-hangul "roa" "$(C07(B" kijuhynbmlopP) + (its-define-hangul "roq" "$(C08(B" kijuhynbmlopP) + (its-define-hangul "rot" "$(C09(B" kijuhynbmlopOP) + (its-define-hangul "roT" "$(C0:(B" kjhynmlop) + (its-define-hangul "rod" "$(C0;(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ri" "$(C0<(B" + (its-define-hangul "rir" "$(C0=(B" kijuhynbmlopOP) + (its-define-hangul "ris" "$(C0>(B" kijuhynbmlopP) + (its-define-hangul "rif" "$(C0?(B" kijuhynbmlopP) + (its-define-hangul "rit" "$(C0@(B" kijuhynbmlopOP) + (its-define-hangul "rid" "$(C0A(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rO" "$(C0B(B" + (its-define-hangul "rOs" "$(C0C(B" kijuhynbmlopP) + (its-define-hangul "rOf" "$(C0D(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "rj" "$(C0E(B" + (its-define-hangul "rjr" "$(C0F(B" kijuhynbmlopOP) + (its-define-hangul "rjs" "$(C0G(B" kijuhynbmlopP) + (its-define-hangul "rje" "$(C0H(B" kijuhynbmlopP) + (its-define-hangul "rjf" "$(C0I(B" kijuhynbmlopP + (its-define-hangul "rjfa" "$(C0J(B" kijuhynbmlopP)) + (its-define-hangul "rja" "$(C0K(B" kijuhynbmlopP) + (its-define-hangul "rjq" "$(C0L(B" kijuhynbmlopP) + (its-define-hangul "rjt" "$(C0M(B" kijuhynbmlopOP) + (its-define-hangul "rjT" "$(C0N(B" kjhynmlop) + (its-define-hangul "rjd" "$(C0O(B" kijuhynbmlopOP) + (its-define-hangul "rjw" "$(C0P(B" kijuhynbmlopOP) + (its-define-hangul "rjx" "$(C0Q(B" kijuhynbmlopP) + (its-define-hangul "rjv" "$(C0R(B" kijuhynbmlopP) + (its-define-hangul "rjg" "$(C0S(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "rp" "$(C0T(B" + (its-define-hangul "rps" "$(C0U(B" kijuhynbmlopP) + (its-define-hangul "rpf" "$(C0V(B" kijuhynbmlopP) + (its-define-hangul "rpa" "$(C0W(B" kijuhynbmlopP) + (its-define-hangul "rpq" "$(C0X(B" kijuhynbmlopP) + (its-define-hangul "rpt" "$(C0Y(B" kijuhynbmlopOP) + (its-define-hangul "rpT" "$(C0Z(B" kjhynmlop) + (its-define-hangul "rpd" "$(C0[(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ru" "$(C0\(B" + (its-define-hangul "rur" "$(C0](B" kijuhynbmlopOP) + (its-define-hangul "ruR" "$(C0^(B" kijuhynbmlopP) + (its-define-hangul "rus" "$(C0_(B" kijuhynbmlopP) + (its-define-hangul "rue" "$(C0`(B" kijuhynbmlopP) + (its-define-hangul "ruf" "$(C0a(B" kijuhynbmlopP) + (its-define-hangul "rua" "$(C0b(B" kijuhynbmlopP) + (its-define-hangul "ruq" "$(C0c(B" kijuhynbmlopP) + (its-define-hangul "rut" "$(C0d(B" kijuhynbmlopOP) + (its-define-hangul "ruT" "$(C0e(B" kjhynmlop) + (its-define-hangul "rud" "$(C0f(B" kijuhynbmlopOP) + (its-define-hangul "rux" "$(C0g(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "rP" "$(C0h(B" + (its-define-hangul "rPs" "$(C0i(B" kijuhynbmlopP) + (its-define-hangul "rPf" "$(C0j(B" kijuhynbmlopP) + (its-define-hangul "rPq" "$(C0k(B" kijuhynbmlopP) + (its-define-hangul "rPt" "$(C0l(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rh" "$(C0m(B" + (its-define-hangul "rhr" "$(C0n(B" kijuhynbmlopOP) + (its-define-hangul "rhs" "$(C0o(B" kijuhynbmlopP) + (its-define-hangul "rhe" "$(C0p(B" kijuhynbmlopP) + (its-define-hangul "rhf" "$(C0q(B" kijuhynbmlopP + (its-define-hangul "rhfa" "$(C0r(B" kijuhynbmlopP) + (its-define-hangul "rhft" "$(C0s(B" kijuhynbmlopOP) + (its-define-hangul "rhfg" "$(C0t(B" kijuhynbmlopP)) + (its-define-hangul "rha" "$(C0u(B" kijuhynbmlopP) + (its-define-hangul "rhq" "$(C0v(B" kijuhynbmlopP) + (its-define-hangul "rht" "$(C0w(B" kijuhynbmlopOP) + (its-define-hangul "rhd" "$(C0x(B" kijuhynbmlopOP) + (its-define-hangul "rhw" "$(C0y(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rhk" "$(C0z(B" + (its-define-hangul "rhkr" "$(C0{(B" kijuhynbmlopOP) + (its-define-hangul "rhks" "$(C0|(B" kijuhynbmlopP) + (its-define-hangul "rhkf" "$(C0}(B" kijuhynbmlopP + (its-define-hangul "rhkfa" "$(C0~(B" kijuhynbmlopP)) + (its-define-hangul "rhka" "$(C1!(B" kijuhynbmlopP) + (its-define-hangul "rhkq" "$(C1"(B" kijuhynbmlopP) + (its-define-hangul "rhkt" "$(C1#(B" kijuhynbmlopOP) + (its-define-hangul "rhkd" "$(C1$(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rho" "$(C1%(B" + (its-define-hangul "rhos" "$(C1&(B" kijuhynbmlopP) + (its-define-hangul "rhof" "$(C1'(B" kijuhynbmlopP) + (its-define-hangul "rhoq" "$(C1((B" kijuhynbmlopP) + (its-define-hangul "rhoT" "$(C1)(B" kjhynmlop) + (its-define-hangul "rhod" "$(C1*(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rhl" "$(C1+(B" + (its-define-hangul "rhlr" "$(C1,(B" kijuhynbmlopOP) + (its-define-hangul "rhls" "$(C1-(B" kijuhynbmlopP) + (its-define-hangul "rhlf" "$(C1.(B" kijuhynbmlopP) + (its-define-hangul "rhla" "$(C1/(B" kijuhynbmlopP) + (its-define-hangul "rhlq" "$(C10(B" kijuhynbmlopP) + (its-define-hangul "rhlt" "$(C11(B" kijuhynbmlopOP) + (its-define-hangul "rhld" "$(C12(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ry" "$(C13(B" + (its-define-hangul "rys" "$(C14(B" kijuhynbmlopP) + (its-define-hangul "ryf" "$(C15(B" kijuhynbmlopP) + (its-define-hangul "ryq" "$(C16(B" kijuhynbmlopP) + (its-define-hangul "ryt" "$(C17(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rn" "$(C18(B" + (its-define-hangul "rnr" "$(C19(B" kijuhynbmlopOP) + (its-define-hangul "rns" "$(C1:(B" kijuhynbmlopP) + (its-define-hangul "rne" "$(C1;(B" kijuhynbmlopP) + (its-define-hangul "rnf" "$(C1<(B" kijuhynbmlopP + (its-define-hangul "rnfr" "$(C1=(B" kijuhynbmlopOP) + (its-define-hangul "rnfa" "$(C1>(B" kijuhynbmlopP) + (its-define-hangul "rnfg" "$(C1?(B" kijuhynbmlopP)) + (its-define-hangul "rna" "$(C1@(B" kijuhynbmlopP) + (its-define-hangul "rnq" "$(C1A(B" kijuhynbmlopP) + (its-define-hangul "rnt" "$(C1B(B" kijuhynbmlopOP) + (its-define-hangul "rnd" "$(C1C(B" kijuhynbmlopOP) + (its-define-hangul "rnw" "$(C1D(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rnj" "$(C1E(B" + (its-define-hangul "rnjr" "$(C1F(B" kijuhynbmlopOP) + (its-define-hangul "rnjs" "$(C1G(B" kijuhynbmlopP) + (its-define-hangul "rnjf" "$(C1H(B" kijuhynbmlopP) + (its-define-hangul "rnjT" "$(C1I(B" kjhynmlop) + (its-define-hangul "rnjd" "$(C1J(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rnp" "$(C1K(B" + (its-define-hangul "rnpt" "$(C1L(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rnl" "$(C1M(B" + (its-define-hangul "rnlr" "$(C1N(B" kijuhynbmlopOP) + (its-define-hangul "rnls" "$(C1O(B" kijuhynbmlopP) + (its-define-hangul "rnlf" "$(C1P(B" kijuhynbmlopP) + (its-define-hangul "rnla" "$(C1Q(B" kijuhynbmlopP) + (its-define-hangul "rnlq" "$(C1R(B" kijuhynbmlopP) + (its-define-hangul "rnlt" "$(C1S(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "rb" "$(C1T(B" + (its-define-hangul "rbs" "$(C1U(B" kijuhynbmlopP) + (its-define-hangul "rbf" "$(C1V(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "rm" "$(C1W(B" + (its-define-hangul "rmr" "$(C1X(B" kijuhynbmlopOP) + (its-define-hangul "rms" "$(C1Y(B" kijuhynbmlopP) + (its-define-hangul "rme" "$(C1Z(B" kijuhynbmlopP) + (its-define-hangul "rmf" "$(C1[(B" kijuhynbmlopP + (its-define-hangul "rmfr" "$(C1\(B" kijuhynbmlopOP)) + (its-define-hangul "rma" "$(C1](B" kijuhynbmlopP) + (its-define-hangul "rmq" "$(C1^(B" kijuhynbmlopP) + (its-define-hangul "rmt" "$(C1_(B" kijuhynbmlopOP) + (its-define-hangul "rmd" "$(C1`(B" kijuhynbmlopOP)) + + (its-defrule-hangul "rml" "$(C1a(B") + + (its-defrule-hangul-2 "rl" "$(C1b(B" + (its-define-hangul "rlr" "$(C1c(B" kijuhynbmlopOP) + (its-define-hangul "rls" "$(C1d(B" kijuhynbmlopP) + (its-define-hangul "rle" "$(C1e(B" kijuhynbmlopP) + (its-define-hangul "rlf" "$(C1f(B" kijuhynbmlopP + (its-define-hangul "rlfa" "$(C1g(B" kijuhynbmlopP)) + (its-define-hangul "rla" "$(C1h(B" kijuhynbmlopP) + (its-define-hangul "rlq" "$(C1i(B" kijuhynbmlopP) + (its-define-hangul "rlt" "$(C1j(B" kijuhynbmlopOP) + (its-define-hangul "rld" "$(C1k(B" kijuhynbmlopOP) + (its-define-hangul "rlw" "$(C1l(B" kijuhynbmlopOP) + (its-define-hangul "rlv" "$(C1m(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Rk" "$(C1n(B" + (its-define-hangul "Rkr" "$(C1o(B" kijuhynbmlopOP) + (its-define-hangul "RkR" "$(C1p(B" kijuhynbmlopP) + (its-define-hangul "Rks" "$(C1q(B" kijuhynbmlopP) + (its-define-hangul "Rkf" "$(C1r(B" kijuhynbmlopP + (its-define-hangul "Rkfa" "$(C1s(B" kijuhynbmlopP)) + (its-define-hangul "Rka" "$(C1t(B" kijuhynbmlopP) + (its-define-hangul "Rkq" "$(C1u(B" kijuhynbmlopP) + (its-define-hangul "Rkt" "$(C1v(B" kijuhynbmlopOP) + (its-define-hangul "RkT" "$(C1w(B" kjhynmlop) + (its-define-hangul "Rkd" "$(C1x(B" kijuhynbmlopOP) + (its-define-hangul "Rkx" "$(C1y(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Ro" "$(C1z(B" + (its-define-hangul "Ror" "$(C1{(B" kijuhynbmlopOP) + (its-define-hangul "Ros" "$(C1|(B" kijuhynbmlopP) + (its-define-hangul "Rof" "$(C1}(B" kijuhynbmlopP) + (its-define-hangul "Roa" "$(C1~(B" kijuhynbmlopP) + (its-define-hangul "Roq" "$(C2!(B" kijuhynbmlopP) + (its-define-hangul "Rot" "$(C2"(B" kijuhynbmlopOP) + (its-define-hangul "RoT" "$(C2#(B" kjhynmlop) + (its-define-hangul "Rod" "$(C2$(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Ri" "$(C2%(B" + (its-define-hangul "Rir" "$(C2&(B" kijuhynbmlopOP) + (its-define-hangul "Rif" "$(C2'(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Rj" "$(C2((B" + (its-define-hangul "Rjr" "$(C2)(B" kijuhynbmlopOP) + (its-define-hangul "RjR" "$(C2*(B" kijuhynbmlopP) + (its-define-hangul "Rjs" "$(C2+(B" kijuhynbmlopP) + (its-define-hangul "Rjf" "$(C2,(B" kijuhynbmlopP) + (its-define-hangul "Rja" "$(C2-(B" kijuhynbmlopP) + (its-define-hangul "Rjq" "$(C2.(B" kijuhynbmlopP) + (its-define-hangul "Rjt" "$(C2/(B" kijuhynbmlopOP) + (its-define-hangul "RjT" "$(C20(B" kjhynmlop) + (its-define-hangul "Rjd" "$(C21(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Rp" "$(C22(B" + (its-define-hangul "Rpr" "$(C23(B" kijuhynbmlopOP) + (its-define-hangul "Rps" "$(C24(B" kijuhynbmlopP) + (its-define-hangul "Rpa" "$(C25(B" kijuhynbmlopP) + (its-define-hangul "Rpt" "$(C26(B" kijuhynbmlopOP) + (its-define-hangul "Rpd" "$(C27(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Ru" "$(C28(B" + (its-define-hangul "Rus" "$(C29(B" kijuhynbmlopP) + (its-define-hangul "Ruf" "$(C2:(B" kijuhynbmlopP) + (its-define-hangul "Rut" "$(C2;(B" kijuhynbmlopOP) + (its-define-hangul "RuT" "$(C2<(B" kjhynmlop) + (its-define-hangul "Rux" "$(C2=(B" kijuhynbmlopP)) + + (its-defrule-hangul "RP" "$(C2>(B") + + (its-defrule-hangul-2 "Rh" "$(C2?(B" + (its-define-hangul "Rhr" "$(C2@(B" kijuhynbmlopOP) + (its-define-hangul "Rhs" "$(C2A(B" kijuhynbmlopP + (its-define-hangul "Rhsg" "$(C2B(B" kijuhynbmlopP)) + (its-define-hangul "Rhf" "$(C2C(B" kijuhynbmlopP) + (its-define-hangul "Rha" "$(C2D(B" kijuhynbmlopP) + (its-define-hangul "Rhq" "$(C2E(B" kijuhynbmlopP) + (its-define-hangul "Rht" "$(C2F(B" kijuhynbmlopOP) + (its-define-hangul "Rhd" "$(C2G(B" kijuhynbmlopOP) + (its-define-hangul "Rhw" "$(C2H(B" kijuhynbmlopOP) + (its-define-hangul "Rhc" "$(C2I(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Rhk" "$(C2J(B" + (its-define-hangul "Rhkr" "$(C2K(B" kijuhynbmlopOP) + (its-define-hangul "Rhkf" "$(C2L(B" kijuhynbmlopP) + (its-define-hangul "RhkT" "$(C2M(B" kjhynmlop) + (its-define-hangul "Rhkd" "$(C2N(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Rho" "$(C2O(B" + (its-define-hangul "Rhor" "$(C2P(B" kijuhynbmlopOP) + (its-define-hangul "Rhod" "$(C2Q(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Rhl" "$(C2R(B" + (its-define-hangul "Rhls" "$(C2S(B" kijuhynbmlopP) + (its-define-hangul "Rhlf" "$(C2T(B" kijuhynbmlopP) + (its-define-hangul "Rhla" "$(C2U(B" kijuhynbmlopP) + (its-define-hangul "Rhlq" "$(C2V(B" kijuhynbmlopP) + (its-define-hangul "Rhld" "$(C2W(B" kijuhynbmlopOP)) + + (its-defrule-hangul "Ry" "$(C2X(B") + + (its-defrule-hangul-2 "Rn" "$(C2Y(B" + (its-define-hangul "Rnr" "$(C2Z(B" kijuhynbmlopOP) + (its-define-hangul "Rns" "$(C2[(B" kijuhynbmlopP) + (its-define-hangul "Rnf" "$(C2\(B" kijuhynbmlopP + (its-define-hangul "Rnfg" "$(C2](B" kijuhynbmlopP)) + (its-define-hangul "Rna" "$(C2^(B" kijuhynbmlopP) + (its-define-hangul "Rnq" "$(C2_(B" kijuhynbmlopP) + (its-define-hangul "Rnt" "$(C2`(B" kijuhynbmlopOP) + (its-define-hangul "Rnd" "$(C2a(B" kijuhynbmlopOP) + (its-define-hangul "Rnw" "$(C2b(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Rnj" "$(C2c(B" + (its-define-hangul "Rnjf" "$(C2d(B" kijuhynbmlopP) + (its-define-hangul "RnjT" "$(C2e(B" kjhynmlop) + (its-define-hangul "Rnjd" "$(C2f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Rnp" "$(C2g(B" + (its-define-hangul "Rnpr" "$(C2h(B" kijuhynbmlopOP) + (its-define-hangul "Rnps" "$(C2i(B" kijuhynbmlopP) + (its-define-hangul "Rnpf" "$(C2j(B" kijuhynbmlopP) + (its-define-hangul "Rnpa" "$(C2k(B" kijuhynbmlopP) + (its-define-hangul "Rnpq" "$(C2l(B" kijuhynbmlopP) + (its-define-hangul "RnpT" "$(C2m(B" kjhynmlop)) + + (its-defrule-hangul-2 "Rnl" "$(C2n(B" + (its-define-hangul "Rnls" "$(C2o(B" kijuhynbmlopP) + (its-define-hangul "Rnlf" "$(C2p(B" kijuhynbmlopP) + (its-define-hangul "Rnla" "$(C2q(B" kijuhynbmlopP) + (its-define-hangul "Rnlq" "$(C2r(B" kijuhynbmlopP)) + + (its-defrule-hangul "Rb" "$(C2s(B") + + (its-defrule-hangul-2 "Rm" "$(C2t(B" + (its-define-hangul "Rmr" "$(C2u(B" kijuhynbmlopOP) + (its-define-hangul "Rms" "$(C2v(B" kijuhynbmlopP + (its-define-hangul "Rmsg" "$(C2w(B" kijuhynbmlopP)) + (its-define-hangul "Rmf" "$(C2x(B" kijuhynbmlopP + (its-define-hangul "Rmfa" "$(C2y(B" kijuhynbmlopP) + (its-define-hangul "Rmfg" "$(C2z(B" kijuhynbmlopP)) + (its-define-hangul "Rma" "$(C2{(B" kijuhynbmlopP) + (its-define-hangul "Rmq" "$(C2|(B" kijuhynbmlopP) + (its-define-hangul "Rmt" "$(C2}(B" kijuhynbmlopOP) + (its-define-hangul "Rmd" "$(C2~(B" kijuhynbmlopOP) + (its-define-hangul "Rmx" "$(C3!(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Rl" "$(C3"(B" + (its-define-hangul "Rlr" "$(C3#(B" kijuhynbmlopOP) + (its-define-hangul "Rls" "$(C3$(B" kijuhynbmlopP) + (its-define-hangul "Rlf" "$(C3%(B" kijuhynbmlopP) + (its-define-hangul "Rla" "$(C3&(B" kijuhynbmlopP) + (its-define-hangul "Rlq" "$(C3'(B" kijuhynbmlopP) + (its-define-hangul "Rlt" "$(C3((B" kijuhynbmlopOP) + (its-define-hangul "Rld" "$(C3)(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "sk" "$(C3*(B" + (its-define-hangul "skr" "$(C3+(B" kijuhynbmlopOP) + (its-define-hangul "skR" "$(C3,(B" kijuhynbmlopP) + (its-define-hangul "sks" "$(C3-(B" kijuhynbmlopP) + (its-define-hangul "ske" "$(C3.(B" kijuhynbmlopP) + (its-define-hangul "skf" "$(C3/(B" kijuhynbmlopP + (its-define-hangul "skfr" "$(C30(B" kijuhynbmlopOP) + (its-define-hangul "skfa" "$(C31(B" kijuhynbmlopP)) + (its-define-hangul "ska" "$(C32(B" kijuhynbmlopP) + (its-define-hangul "skq" "$(C33(B" kijuhynbmlopP) + (its-define-hangul "skt" "$(C34(B" kijuhynbmlopOP) + (its-define-hangul "skT" "$(C35(B" kjhynmlop) + (its-define-hangul "skd" "$(C36(B" kijuhynbmlopOP) + (its-define-hangul "skw" "$(C37(B" kijuhynbmlopOP) + (its-define-hangul "skc" "$(C38(B" kijuhynbmlopP) + (its-define-hangul "skx" "$(C39(B" kijuhynbmlopP) + (its-define-hangul "skg" "$(C3:(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "so" "$(C3;(B" + (its-define-hangul "sor" "$(C3<(B" kijuhynbmlopOP) + (its-define-hangul "sos" "$(C3=(B" kijuhynbmlopP) + (its-define-hangul "sof" "$(C3>(B" kijuhynbmlopP) + (its-define-hangul "soa" "$(C3?(B" kijuhynbmlopP) + (its-define-hangul "soq" "$(C3@(B" kijuhynbmlopP) + (its-define-hangul "sot" "$(C3A(B" kijuhynbmlopOP) + (its-define-hangul "soT" "$(C3B(B" kjhynmlop) + (its-define-hangul "sod" "$(C3C(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "si" "$(C3D(B" + (its-define-hangul "sir" "$(C3E(B" kijuhynbmlopOP) + (its-define-hangul "sis" "$(C3F(B" kijuhynbmlopP) + (its-define-hangul "sif" "$(C3G(B" kijuhynbmlopP) + (its-define-hangul "sia" "$(C3H(B" kijuhynbmlopP) + (its-define-hangul "sid" "$(C3I(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "sj" "$(C3J(B" + (its-define-hangul "sjr" "$(C3K(B" kijuhynbmlopOP + (its-define-hangul "sjrt" "$(C3L(B" kijuhynbmlopOP)) + (its-define-hangul "sjs" "$(C3M(B" kijuhynbmlopP) + (its-define-hangul "sjf" "$(C3N(B" kijuhynbmlopP + (its-define-hangul "sjfa" "$(C3O(B" kijuhynbmlopP) + (its-define-hangul "sjfq" "$(C3P(B" kijuhynbmlopP)) + (its-define-hangul "sja" "$(C3Q(B" kijuhynbmlopP) + (its-define-hangul "sjq" "$(C3R(B" kijuhynbmlopP) + (its-define-hangul "sjt" "$(C3S(B" kijuhynbmlopOP) + (its-define-hangul "sjT" "$(C3T(B" kjhynmlop) + (its-define-hangul "sjd" "$(C3U(B" kijuhynbmlopOP) + (its-define-hangul "sjg" "$(C3V(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sp" "$(C3W(B" + (its-define-hangul "spr" "$(C3X(B" kijuhynbmlopOP) + (its-define-hangul "sps" "$(C3Y(B" kijuhynbmlopP) + (its-define-hangul "spf" "$(C3Z(B" kijuhynbmlopP) + (its-define-hangul "spa" "$(C3[(B" kijuhynbmlopP) + (its-define-hangul "spq" "$(C3\(B" kijuhynbmlopP) + (its-define-hangul "spt" "$(C3](B" kijuhynbmlopOP) + (its-define-hangul "spT" "$(C3^(B" kjhynmlop) + (its-define-hangul "spd" "$(C3_(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "su" "$(C3`(B" + (its-define-hangul "sur" "$(C3a(B" kijuhynbmlopOP) + (its-define-hangul "sus" "$(C3b(B" kijuhynbmlopP) + (its-define-hangul "suf" "$(C3c(B" kijuhynbmlopP) + (its-define-hangul "sua" "$(C3d(B" kijuhynbmlopP) + (its-define-hangul "suq" "$(C3e(B" kijuhynbmlopP) + (its-define-hangul "suT" "$(C3f(B" kjhynmlop) + (its-define-hangul "sud" "$(C3g(B" kijuhynbmlopOP) + (its-define-hangul "suz" "$(C3h(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sP" "$(C3i(B" + (its-define-hangul "sPs" "$(C3j(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sh" "$(C3k(B" + (its-define-hangul "shr" "$(C3l(B" kijuhynbmlopOP) + (its-define-hangul "shs" "$(C3m(B" kijuhynbmlopP) + (its-define-hangul "shf" "$(C3n(B" kijuhynbmlopP + (its-define-hangul "shfa" "$(C3o(B" kijuhynbmlopP)) + (its-define-hangul "sha" "$(C3p(B" kijuhynbmlopP) + (its-define-hangul "shq" "$(C3q(B" kijuhynbmlopP) + (its-define-hangul "sht" "$(C3r(B" kijuhynbmlopOP) + (its-define-hangul "shd" "$(C3s(B" kijuhynbmlopOP) + (its-define-hangul "shv" "$(C3t(B" kijuhynbmlopP) + (its-define-hangul "shg" "$(C3u(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "shk" "$(C3v(B" + (its-define-hangul "shks" "$(C3w(B" kijuhynbmlopP) + (its-define-hangul "shkf" "$(C3x(B" kijuhynbmlopP) + (its-define-hangul "shkT" "$(C3y(B" kjhynmlop)) + + (its-defrule-hangul-2 "shl" "$(C3z(B" + (its-define-hangul "shls" "$(C3{(B" kijuhynbmlopP) + (its-define-hangul "shlf" "$(C3|(B" kijuhynbmlopP) + (its-define-hangul "shla" "$(C3}(B" kijuhynbmlopP) + (its-define-hangul "shlq" "$(C3~(B" kijuhynbmlopP) + (its-define-hangul "shlt" "$(C4!(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "sy" "$(C4"(B" + (its-define-hangul "syr" "$(C4#(B" kijuhynbmlopOP) + (its-define-hangul "sys" "$(C4$(B" kijuhynbmlopP) + (its-define-hangul "syf" "$(C4%(B" kijuhynbmlopP) + (its-define-hangul "syq" "$(C4&(B" kijuhynbmlopP) + (its-define-hangul "syt" "$(C4'(B" kijuhynbmlopOP) + (its-define-hangul "syd" "$(C4((B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "sn" "$(C4)(B" + (its-define-hangul "snr" "$(C4*(B" kijuhynbmlopOP) + (its-define-hangul "sns" "$(C4+(B" kijuhynbmlopP) + (its-define-hangul "sne" "$(C4,(B" kijuhynbmlopP) + (its-define-hangul "snf" "$(C4-(B" kijuhynbmlopP) + (its-define-hangul "sna" "$(C4.(B" kijuhynbmlopP) + (its-define-hangul "snq" "$(C4/(B" kijuhynbmlopP) + (its-define-hangul "snt" "$(C40(B" kijuhynbmlopOP) + (its-define-hangul "snd" "$(C41(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "snj" "$(C42(B" + (its-define-hangul "snjT" "$(C43(B" kjhynmlop)) + + (its-defrule-hangul "snp" "$(C44(B") + + (its-defrule-hangul-2 "snl" "$(C45(B" + (its-define-hangul "snls" "$(C46(B" kijuhynbmlopP) + (its-define-hangul "snlf" "$(C47(B" kijuhynbmlopP) + (its-define-hangul "snla" "$(C48(B" kijuhynbmlopP) + (its-define-hangul "snlq" "$(C49(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sb" "$(C4:(B" + (its-define-hangul "sbr" "$(C4;(B" kijuhynbmlopOP) + (its-define-hangul "sbf" "$(C4<(B" kijuhynbmlopP) + (its-define-hangul "sba" "$(C4=(B" kijuhynbmlopP) + (its-define-hangul "sbq" "$(C4>(B" kijuhynbmlopP) + (its-define-hangul "sbd" "$(C4?(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "sm" "$(C4@(B" + (its-define-hangul "smr" "$(C4A(B" kijuhynbmlopOP) + (its-define-hangul "sms" "$(C4B(B" kijuhynbmlopP) + (its-define-hangul "smf" "$(C4C(B" kijuhynbmlopP + (its-define-hangul "smfr" "$(C4D(B" kijuhynbmlopOP) + (its-define-hangul "smfa" "$(C4E(B" kijuhynbmlopP)) + (its-define-hangul "sma" "$(C4F(B" kijuhynbmlopP) + (its-define-hangul "smq" "$(C4G(B" kijuhynbmlopP) + (its-define-hangul "smt" "$(C4H(B" kijuhynbmlopOP) + (its-define-hangul "smd" "$(C4I(B" kijuhynbmlopOP) + (its-define-hangul "smw" "$(C4J(B" kijuhynbmlopOP) + (its-define-hangul "smv" "$(C4K(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sml" "$(C4L(B" + (its-define-hangul "smls" "$(C4M(B" kijuhynbmlopP) + (its-define-hangul "smlf" "$(C4N(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "sl" "$(C4O(B" + (its-define-hangul "slr" "$(C4P(B" kijuhynbmlopOP) + (its-define-hangul "sls" "$(C4Q(B" kijuhynbmlopP) + (its-define-hangul "slf" "$(C4R(B" kijuhynbmlopP + (its-define-hangul "slfa" "$(C4S(B" kijuhynbmlopP)) + (its-define-hangul "sla" "$(C4T(B" kijuhynbmlopP) + (its-define-hangul "slq" "$(C4U(B" kijuhynbmlopP) + (its-define-hangul "slt" "$(C4V(B" kijuhynbmlopOP) + (its-define-hangul "sld" "$(C4W(B" kijuhynbmlopOP) + (its-define-hangul "slv" "$(C4X(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ek" "$(C4Y(B" + (its-define-hangul "ekr" "$(C4Z(B" kijuhynbmlopOP) + (its-define-hangul "ekR" "$(C4[(B" kijuhynbmlopP) + (its-define-hangul "eks" "$(C4\(B" kijuhynbmlopP) + (its-define-hangul "eke" "$(C4](B" kijuhynbmlopP) + (its-define-hangul "ekf" "$(C4^(B" kijuhynbmlopP + (its-define-hangul "ekfr" "$(C4_(B" kijuhynbmlopOP) + (its-define-hangul "ekfa" "$(C4`(B" kijuhynbmlopP) + (its-define-hangul "ekfq" "$(C4a(B" kijuhynbmlopP) + (its-define-hangul "ekfg" "$(C4b(B" kijuhynbmlopP)) + (its-define-hangul "eka" "$(C4c(B" kijuhynbmlopP) + (its-define-hangul "ekq" "$(C4d(B" kijuhynbmlopP) + (its-define-hangul "ekt" "$(C4e(B" kijuhynbmlopOP) + (its-define-hangul "ekT" "$(C4f(B" kjhynmlop) + (its-define-hangul "ekd" "$(C4g(B" kijuhynbmlopOP) + (its-define-hangul "ekw" "$(C4h(B" kijuhynbmlopOP) + (its-define-hangul "ekc" "$(C4i(B" kijuhynbmlopP) + (its-define-hangul "ekg" "$(C4j(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "eo" "$(C4k(B" + (its-define-hangul "eor" "$(C4l(B" kijuhynbmlopOP) + (its-define-hangul "eos" "$(C4m(B" kijuhynbmlopP) + (its-define-hangul "eof" "$(C4n(B" kijuhynbmlopP) + (its-define-hangul "eoa" "$(C4o(B" kijuhynbmlopP) + (its-define-hangul "eoq" "$(C4p(B" kijuhynbmlopP) + (its-define-hangul "eot" "$(C4q(B" kijuhynbmlopOP) + (its-define-hangul "eoT" "$(C4r(B" kjhynmlop) + (its-define-hangul "eod" "$(C4s(B" kijuhynbmlopOP)) + + (its-defrule-hangul "ei" "$(C4t(B") + + (its-defrule-hangul-2 "ej" "$(C4u(B" + (its-define-hangul "ejr" "$(C4v(B" kijuhynbmlopOP) + (its-define-hangul "ejR" "$(C4w(B" kijuhynbmlopP) + (its-define-hangul "ejs" "$(C4x(B" kijuhynbmlopP) + (its-define-hangul "eje" "$(C4y(B" kijuhynbmlopP) + (its-define-hangul "ejf" "$(C4z(B" kijuhynbmlopP + (its-define-hangul "ejfa" "$(C4{(B" kijuhynbmlopP) + (its-define-hangul "ejfq" "$(C4|(B" kijuhynbmlopP)) + (its-define-hangul "eja" "$(C4}(B" kijuhynbmlopP) + (its-define-hangul "ejq" "$(C4~(B" kijuhynbmlopP) + (its-define-hangul "ejt" "$(C5!(B" kijuhynbmlopOP) + (its-define-hangul "ejd" "$(C5"(B" kijuhynbmlopOP) + (its-define-hangul "ejc" "$(C5#(B" kijuhynbmlopP) + (its-define-hangul "ejv" "$(C5$(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ep" "$(C5%(B" + (its-define-hangul "epr" "$(C5&(B" kijuhynbmlopOP) + (its-define-hangul "eps" "$(C5'(B" kijuhynbmlopP) + (its-define-hangul "epf" "$(C5((B" kijuhynbmlopP) + (its-define-hangul "epa" "$(C5)(B" kijuhynbmlopP) + (its-define-hangul "epq" "$(C5*(B" kijuhynbmlopP) + (its-define-hangul "ept" "$(C5+(B" kijuhynbmlopOP) + (its-define-hangul "epT" "$(C5,(B" kjhynmlop) + (its-define-hangul "epd" "$(C5-(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "eu" "$(C5.(B" + (its-define-hangul "eus" "$(C5/(B" kijuhynbmlopP) + (its-define-hangul "euf" "$(C50(B" kijuhynbmlopP) + (its-define-hangul "euT" "$(C51(B" kjhynmlop) + (its-define-hangul "eud" "$(C52(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "eP" "$(C53(B" + (its-define-hangul "ePs" "$(C54(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "eh" "$(C55(B" + (its-define-hangul "ehr" "$(C56(B" kijuhynbmlopOP) + (its-define-hangul "ehs" "$(C57(B" kijuhynbmlopP) + (its-define-hangul "ehe" "$(C58(B" kijuhynbmlopP) + (its-define-hangul "ehf" "$(C59(B" kijuhynbmlopP + (its-define-hangul "ehfa" "$(C5:(B" kijuhynbmlopP) + (its-define-hangul "ehft" "$(C5;(B" kijuhynbmlopOP)) + (its-define-hangul "eha" "$(C5<(B" kijuhynbmlopP) + (its-define-hangul "ehq" "$(C5=(B" kijuhynbmlopP) + (its-define-hangul "eht" "$(C5>(B" kijuhynbmlopOP) + (its-define-hangul "ehd" "$(C5?(B" kijuhynbmlopOP) + (its-define-hangul "ehc" "$(C5@(B" kijuhynbmlopP) + (its-define-hangul "ehx" "$(C5A(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ehk" "$(C5B(B" + (its-define-hangul "ehks" "$(C5C(B" kijuhynbmlopP) + (its-define-hangul "ehkf" "$(C5D(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "eho" "$(C5E(B" + (its-define-hangul "ehoT" "$(C5F(B" kjhynmlop)) + + (its-defrule-hangul-2 "ehl" "$(C5G(B" + (its-define-hangul "ehls" "$(C5H(B" kijuhynbmlopP) + (its-define-hangul "ehlf" "$(C5I(B" kijuhynbmlopP) + (its-define-hangul "ehla" "$(C5J(B" kijuhynbmlopP) + (its-define-hangul "ehlq" "$(C5K(B" kijuhynbmlopP) + (its-define-hangul "ehlt" "$(C5L(B" kijuhynbmlopOP)) + + (its-defrule-hangul "ey" "$(C5M(B") + + (its-defrule-hangul-2 "en" "$(C5N(B" + (its-define-hangul "enr" "$(C5O(B" kijuhynbmlopOP) + (its-define-hangul "ens" "$(C5P(B" kijuhynbmlopP) + (its-define-hangul "enf" "$(C5Q(B" kijuhynbmlopP) + (its-define-hangul "ena" "$(C5R(B" kijuhynbmlopP) + (its-define-hangul "enq" "$(C5S(B" kijuhynbmlopP) + (its-define-hangul "ent" "$(C5T(B" kijuhynbmlopOP) + (its-define-hangul "end" "$(C5U(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "enj" "$(C5V(B" + (its-define-hangul "enjT" "$(C5W(B" kjhynmlop)) + + (its-defrule-hangul-2 "enp" "$(C5X(B" + (its-define-hangul "enpd" "$(C5Y(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "enl" "$(C5Z(B" + (its-define-hangul "enls" "$(C5[(B" kijuhynbmlopP) + (its-define-hangul "enlf" "$(C5\(B" kijuhynbmlopP) + (its-define-hangul "enlq" "$(C5](B" kijuhynbmlopP) + (its-define-hangul "enlt" "$(C5^(B" kijuhynbmlopOP) + (its-define-hangul "enld" "$(C5_(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "eb" "$(C5`(B" + (its-define-hangul "ebs" "$(C5a(B" kijuhynbmlopP) + (its-define-hangul "ebf" "$(C5b(B" kijuhynbmlopP) + (its-define-hangul "eba" "$(C5c(B" kijuhynbmlopP) + (its-define-hangul "ebd" "$(C5d(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "em" "$(C5e(B" + (its-define-hangul "emr" "$(C5f(B" kijuhynbmlopOP) + (its-define-hangul "ems" "$(C5g(B" kijuhynbmlopP) + (its-define-hangul "eme" "$(C5h(B" kijuhynbmlopP) + (its-define-hangul "emf" "$(C5i(B" kijuhynbmlopP + (its-define-hangul "emfa" "$(C5j(B" kijuhynbmlopP)) + (its-define-hangul "ema" "$(C5k(B" kijuhynbmlopP) + (its-define-hangul "emq" "$(C5l(B" kijuhynbmlopP) + (its-define-hangul "emt" "$(C5m(B" kijuhynbmlopOP) + (its-define-hangul "emd" "$(C5n(B" kijuhynbmlopOP)) + + (its-defrule-hangul "eml" "$(C5o(B") + + (its-defrule-hangul-2 "el" "$(C5p(B" + (its-define-hangul "elr" "$(C5q(B" kijuhynbmlopOP) + (its-define-hangul "els" "$(C5r(B" kijuhynbmlopP) + (its-define-hangul "ele" "$(C5s(B" kijuhynbmlopP) + (its-define-hangul "elf" "$(C5t(B" kijuhynbmlopP) + (its-define-hangul "ela" "$(C5u(B" kijuhynbmlopP) + (its-define-hangul "elq" "$(C5v(B" kijuhynbmlopP) + (its-define-hangul "elt" "$(C5w(B" kijuhynbmlopOP) + (its-define-hangul "elT" "$(C5x(B" kjhynmlop) + (its-define-hangul "eld" "$(C5y(B" kijuhynbmlopOP) + (its-define-hangul "elw" "$(C5z(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Ek" "$(C5{(B" + (its-define-hangul "Ekr" "$(C5|(B" kijuhynbmlopOP) + (its-define-hangul "Eks" "$(C5}(B" kijuhynbmlopP) + (its-define-hangul "Ekf" "$(C5~(B" kijuhynbmlopP) + (its-define-hangul "Eka" "$(C6!(B" kijuhynbmlopP) + (its-define-hangul "Ekq" "$(C6"(B" kijuhynbmlopP) + (its-define-hangul "Ekt" "$(C6#(B" kijuhynbmlopOP) + (its-define-hangul "EkT" "$(C6$(B" kjhynmlop) + (its-define-hangul "Ekd" "$(C6%(B" kijuhynbmlopOP) + (its-define-hangul "Ekg" "$(C6&(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Eo" "$(C6'(B" + (its-define-hangul "Eor" "$(C6((B" kijuhynbmlopOP) + (its-define-hangul "Eos" "$(C6)(B" kijuhynbmlopP) + (its-define-hangul "Eof" "$(C6*(B" kijuhynbmlopP) + (its-define-hangul "Eoa" "$(C6+(B" kijuhynbmlopP) + (its-define-hangul "Eoq" "$(C6,(B" kijuhynbmlopP) + (its-define-hangul "Eot" "$(C6-(B" kijuhynbmlopOP) + (its-define-hangul "EoT" "$(C6.(B" kjhynmlop) + (its-define-hangul "Eod" "$(C6/(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Ej" "$(C60(B" + (its-define-hangul "Ejr" "$(C61(B" kijuhynbmlopOP) + (its-define-hangul "Ejs" "$(C62(B" kijuhynbmlopP) + (its-define-hangul "Ejf" "$(C63(B" kijuhynbmlopP + (its-define-hangul "Ejfa" "$(C64(B" kijuhynbmlopP) + (its-define-hangul "Ejfq" "$(C65(B" kijuhynbmlopP)) + (its-define-hangul "Eja" "$(C66(B" kijuhynbmlopP) + (its-define-hangul "Ejq" "$(C67(B" kijuhynbmlopP) + (its-define-hangul "Ejt" "$(C68(B" kijuhynbmlopOP) + (its-define-hangul "EjT" "$(C69(B" kjhynmlop) + (its-define-hangul "Ejd" "$(C6:(B" kijuhynbmlopOP) + (its-define-hangul "Ejg" "$(C6;(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Ep" "$(C6<(B" + (its-define-hangul "Epr" "$(C6=(B" kijuhynbmlopOP) + (its-define-hangul "Eps" "$(C6>(B" kijuhynbmlopP) + (its-define-hangul "Epf" "$(C6?(B" kijuhynbmlopP) + (its-define-hangul "Epa" "$(C6@(B" kijuhynbmlopP) + (its-define-hangul "Epq" "$(C6A(B" kijuhynbmlopP) + (its-define-hangul "Ept" "$(C6B(B" kijuhynbmlopOP) + (its-define-hangul "EpT" "$(C6C(B" kjhynmlop) + (its-define-hangul "Epd" "$(C6D(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Eu" "$(C6E(B" + (its-define-hangul "EuT" "$(C6F(B" kjhynmlop)) + + (its-defrule-hangul-2 "Eh" "$(C6G(B" + (its-define-hangul "Ehr" "$(C6H(B" kijuhynbmlopOP) + (its-define-hangul "Ehs" "$(C6I(B" kijuhynbmlopP) + (its-define-hangul "Ehf" "$(C6J(B" kijuhynbmlopP) + (its-define-hangul "Ehd" "$(C6K(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Ehk" "$(C6L(B" + (its-define-hangul "Ehkf" "$(C6M(B" kijuhynbmlopP)) + + (its-defrule-hangul "Eho" "$(C6N(B") + + (its-defrule-hangul-2 "Ehl" "$(C6O(B" + (its-define-hangul "Ehls" "$(C6P(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "En" "$(C6Q(B" + (its-define-hangul "Enr" "$(C6R(B" kijuhynbmlopOP) + (its-define-hangul "Ens" "$(C6S(B" kijuhynbmlopP) + (its-define-hangul "Enf" "$(C6T(B" kijuhynbmlopP + (its-define-hangul "Enfg" "$(C6U(B" kijuhynbmlopP)) + (its-define-hangul "Ena" "$(C6V(B" kijuhynbmlopP) + (its-define-hangul "End" "$(C6W(B" kijuhynbmlopOP)) + + (its-defrule-hangul "Enp" "$(C6X(B") + + (its-defrule-hangul-2 "Enl" "$(C6Y(B" + (its-define-hangul "Enls" "$(C6Z(B" kijuhynbmlopP) + (its-define-hangul "Enlf" "$(C6[(B" kijuhynbmlopP) + (its-define-hangul "Enla" "$(C6\(B" kijuhynbmlopP) + (its-define-hangul "Enlq" "$(C6](B" kijuhynbmlopP) + (its-define-hangul "Enld" "$(C6^(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Em" "$(C6_(B" + (its-define-hangul "Emr" "$(C6`(B" kijuhynbmlopOP) + (its-define-hangul "Ems" "$(C6a(B" kijuhynbmlopP) + (its-define-hangul "Eme" "$(C6b(B" kijuhynbmlopP) + (its-define-hangul "Emf" "$(C6c(B" kijuhynbmlopP) + (its-define-hangul "Ema" "$(C6d(B" kijuhynbmlopP) + (its-define-hangul "Emq" "$(C6e(B" kijuhynbmlopP) + (its-define-hangul "Emt" "$(C6f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Eml" "$(C6g(B" + (its-define-hangul "Emls" "$(C6h(B" kijuhynbmlopP) + (its-define-hangul "Emlf" "$(C6i(B" kijuhynbmlopP) + (its-define-hangul "Emla" "$(C6j(B" kijuhynbmlopP) + (its-define-hangul "Emlq" "$(C6k(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "El" "$(C6l(B" + (its-define-hangul "Els" "$(C6m(B" kijuhynbmlopP) + (its-define-hangul "Elf" "$(C6n(B" kijuhynbmlopP) + (its-define-hangul "Ela" "$(C6o(B" kijuhynbmlopP) + (its-define-hangul "Elq" "$(C6p(B" kijuhynbmlopP) + (its-define-hangul "Elt" "$(C6q(B" kijuhynbmlopOP) + (its-define-hangul "Eld" "$(C6r(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fk" "$(C6s(B" + (its-define-hangul "fkr" "$(C6t(B" kijuhynbmlopOP) + (its-define-hangul "fks" "$(C6u(B" kijuhynbmlopP) + (its-define-hangul "fkf" "$(C6v(B" kijuhynbmlopP) + (its-define-hangul "fka" "$(C6w(B" kijuhynbmlopP) + (its-define-hangul "fkq" "$(C6x(B" kijuhynbmlopP) + (its-define-hangul "fkt" "$(C6y(B" kijuhynbmlopOP) + (its-define-hangul "fkT" "$(C6z(B" kjhynmlop) + (its-define-hangul "fkd" "$(C6{(B" kijuhynbmlopOP) + (its-define-hangul "fkw" "$(C6|(B" kijuhynbmlopOP) + (its-define-hangul "fkv" "$(C6}(B" kijuhynbmlopP) + (its-define-hangul "fkg" "$(C6~(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "fo" "$(C7!(B" + (its-define-hangul "for" "$(C7"(B" kijuhynbmlopOP) + (its-define-hangul "fos" "$(C7#(B" kijuhynbmlopP) + (its-define-hangul "fof" "$(C7$(B" kijuhynbmlopP) + (its-define-hangul "foa" "$(C7%(B" kijuhynbmlopP) + (its-define-hangul "foq" "$(C7&(B" kijuhynbmlopP) + (its-define-hangul "fot" "$(C7'(B" kijuhynbmlopOP) + (its-define-hangul "foT" "$(C7((B" kjhynmlop) + (its-define-hangul "fod" "$(C7)(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fi" "$(C7*(B" + (its-define-hangul "fir" "$(C7+(B" kijuhynbmlopOP) + (its-define-hangul "fis" "$(C7,(B" kijuhynbmlopP) + (its-define-hangul "fit" "$(C7-(B" kijuhynbmlopOP) + (its-define-hangul "fid" "$(C7.(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fj" "$(C7/(B" + (its-define-hangul "fjr" "$(C70(B" kijuhynbmlopOP) + (its-define-hangul "fjs" "$(C71(B" kijuhynbmlopP) + (its-define-hangul "fjf" "$(C72(B" kijuhynbmlopP) + (its-define-hangul "fja" "$(C73(B" kijuhynbmlopP) + (its-define-hangul "fjq" "$(C74(B" kijuhynbmlopP) + (its-define-hangul "fjt" "$(C75(B" kijuhynbmlopOP) + (its-define-hangul "fjT" "$(C76(B" kjhynmlop) + (its-define-hangul "fjd" "$(C77(B" kijuhynbmlopOP) + (its-define-hangul "fjg" "$(C78(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "fp" "$(C79(B" + (its-define-hangul "fpr" "$(C7:(B" kijuhynbmlopOP) + (its-define-hangul "fps" "$(C7;(B" kijuhynbmlopP) + (its-define-hangul "fpf" "$(C7<(B" kijuhynbmlopP) + (its-define-hangul "fpa" "$(C7=(B" kijuhynbmlopP) + (its-define-hangul "fpq" "$(C7>(B" kijuhynbmlopP) + (its-define-hangul "fpt" "$(C7?(B" kijuhynbmlopOP) + (its-define-hangul "fpd" "$(C7@(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fu" "$(C7A(B" + (its-define-hangul "fur" "$(C7B(B" kijuhynbmlopOP) + (its-define-hangul "fus" "$(C7C(B" kijuhynbmlopP) + (its-define-hangul "fuf" "$(C7D(B" kijuhynbmlopP) + (its-define-hangul "fua" "$(C7E(B" kijuhynbmlopP) + (its-define-hangul "fuq" "$(C7F(B" kijuhynbmlopP) + (its-define-hangul "fut" "$(C7G(B" kijuhynbmlopOP) + (its-define-hangul "fuT" "$(C7H(B" kjhynmlop) + (its-define-hangul "fud" "$(C7I(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fP" "$(C7J(B" + (its-define-hangul "fPs" "$(C7K(B" kijuhynbmlopP) + (its-define-hangul "fPq" "$(C7L(B" kijuhynbmlopP) + (its-define-hangul "fPt" "$(C7M(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fh" "$(C7N(B" + (its-define-hangul "fhr" "$(C7O(B" kijuhynbmlopOP) + (its-define-hangul "fhs" "$(C7P(B" kijuhynbmlopP) + (its-define-hangul "fhf" "$(C7Q(B" kijuhynbmlopP) + (its-define-hangul "fha" "$(C7R(B" kijuhynbmlopP) + (its-define-hangul "fhq" "$(C7S(B" kijuhynbmlopP) + (its-define-hangul "fht" "$(C7T(B" kijuhynbmlopOP) + (its-define-hangul "fhd" "$(C7U(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fhk" "$(C7V(B" + (its-define-hangul "fhks" "$(C7W(B" kijuhynbmlopP) + (its-define-hangul "fhkd" "$(C7X(B" kijuhynbmlopOP)) + + (its-defrule-hangul "fho" "$(C7N(Bo") + (its-defrule-hangul "fhoT" "$(C7Y(B") + + (its-defrule-hangul-2 "fhl" "$(C7Z(B" + (its-define-hangul "fhls" "$(C7[(B" kijuhynbmlopP) + (its-define-hangul "fhlf" "$(C7\(B" kijuhynbmlopP) + (its-define-hangul "fhla" "$(C7](B" kijuhynbmlopP) + (its-define-hangul "fhlq" "$(C7^(B" kijuhynbmlopP) + (its-define-hangul "fhlt" "$(C7_(B" kijuhynbmlopOP) + (its-define-hangul "fhld" "$(C7`(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fy" "$(C7a(B" + (its-define-hangul "fys" "$(C7b(B" kijuhynbmlopP) + (its-define-hangul "fyf" "$(C7c(B" kijuhynbmlopP) + (its-define-hangul "fyq" "$(C7d(B" kijuhynbmlopP) + (its-define-hangul "fyt" "$(C7e(B" kijuhynbmlopOP) + (its-define-hangul "fyd" "$(C7f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fn" "$(C7g(B" + (its-define-hangul "fnr" "$(C7h(B" kijuhynbmlopOP) + (its-define-hangul "fns" "$(C7i(B" kijuhynbmlopP) + (its-define-hangul "fnf" "$(C7j(B" kijuhynbmlopP) + (its-define-hangul "fna" "$(C7k(B" kijuhynbmlopP) + (its-define-hangul "fnq" "$(C7l(B" kijuhynbmlopP) + (its-define-hangul "fnt" "$(C7m(B" kijuhynbmlopOP) + (its-define-hangul "fnd" "$(C7n(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fnj" "$(C7o(B" + (its-define-hangul "fnjT" "$(C7p(B" kjhynmlop)) + + (its-defrule-hangul "fnp" "$(C7q(B") + + (its-defrule-hangul-2 "fnl" "$(C7r(B" + (its-define-hangul "fnlr" "$(C7s(B" kijuhynbmlopOP) + (its-define-hangul "fnls" "$(C7t(B" kijuhynbmlopP) + (its-define-hangul "fnlf" "$(C7u(B" kijuhynbmlopP) + (its-define-hangul "fnla" "$(C7v(B" kijuhynbmlopP) + (its-define-hangul "fnlt" "$(C7w(B" kijuhynbmlopOP) + (its-define-hangul "fnld" "$(C7x(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fb" "$(C7y(B" + (its-define-hangul "fbr" "$(C7z(B" kijuhynbmlopOP) + (its-define-hangul "fbs" "$(C7{(B" kijuhynbmlopP) + (its-define-hangul "fbf" "$(C7|(B" kijuhynbmlopP) + (its-define-hangul "fba" "$(C7}(B" kijuhynbmlopP) + (its-define-hangul "fbq" "$(C7~(B" kijuhynbmlopP) + (its-define-hangul "fbt" "$(C8!(B" kijuhynbmlopOP) + (its-define-hangul "fbd" "$(C8"(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "fm" "$(C8#(B" + (its-define-hangul "fmr" "$(C8$(B" kijuhynbmlopOP) + (its-define-hangul "fms" "$(C8%(B" kijuhynbmlopP) + (its-define-hangul "fmf" "$(C8&(B" kijuhynbmlopP) + (its-define-hangul "fma" "$(C8'(B" kijuhynbmlopP) + (its-define-hangul "fmq" "$(C8((B" kijuhynbmlopP) + (its-define-hangul "fmt" "$(C8)(B" kijuhynbmlopOP) + (its-define-hangul "fmd" "$(C8*(B" kijuhynbmlopOP) + (its-define-hangul "fmw" "$(C8+(B" kijuhynbmlopOP) + (its-define-hangul "fmx" "$(C8,(B" kijuhynbmlopP) + (its-define-hangul "fmv" "$(C8-(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "fl" "$(C8.(B" + (its-define-hangul "flr" "$(C8/(B" kijuhynbmlopOP) + (its-define-hangul "fls" "$(C80(B" kijuhynbmlopP) + (its-define-hangul "flf" "$(C81(B" kijuhynbmlopP) + (its-define-hangul "fla" "$(C82(B" kijuhynbmlopP) + (its-define-hangul "flq" "$(C83(B" kijuhynbmlopP) + (its-define-hangul "flt" "$(C84(B" kijuhynbmlopOP) + (its-define-hangul "fld" "$(C85(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ak" "$(C86(B" + (its-define-hangul "akr" "$(C87(B" kijuhynbmlopOP) + (its-define-hangul "aks" "$(C88(B" kijuhynbmlopP + (its-define-hangul "aksg" "$(C89(B" kijuhynbmlopP)) + (its-define-hangul "ake" "$(C8:(B" kijuhynbmlopP) + (its-define-hangul "akf" "$(C8;(B" kijuhynbmlopP + (its-define-hangul "akfr" "$(C8<(B" kijuhynbmlopOP) + (its-define-hangul "akfa" "$(C8=(B" kijuhynbmlopP)) + (its-define-hangul "aka" "$(C8>(B" kijuhynbmlopP) + (its-define-hangul "akq" "$(C8?(B" kijuhynbmlopP) + (its-define-hangul "akt" "$(C8@(B" kijuhynbmlopOP) + (its-define-hangul "akd" "$(C8A(B" kijuhynbmlopOP) + (its-define-hangul "akw" "$(C8B(B" kijuhynbmlopOP) + (its-define-hangul "akx" "$(C8C(B" kijuhynbmlopP) + (its-define-hangul "akg" "$(C8D(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ao" "$(C8E(B" + (its-define-hangul "aor" "$(C8F(B" kijuhynbmlopOP) + (its-define-hangul "aos" "$(C8G(B" kijuhynbmlopP) + (its-define-hangul "aof" "$(C8H(B" kijuhynbmlopP) + (its-define-hangul "aoa" "$(C8I(B" kijuhynbmlopP) + (its-define-hangul "aoq" "$(C8J(B" kijuhynbmlopP) + (its-define-hangul "aot" "$(C8K(B" kijuhynbmlopOP) + (its-define-hangul "aoT" "$(C8L(B" kjhynmlop) + (its-define-hangul "aod" "$(C8M(B" kijuhynbmlopOP) + (its-define-hangul "aow" "$(C8N(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ai" "$(C8O(B" + (its-define-hangul "air" "$(C8P(B" kijuhynbmlopOP) + (its-define-hangul "aif" "$(C8Q(B" kijuhynbmlopP) + (its-define-hangul "aid" "$(C8R(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "aj" "$(C8S(B" + (its-define-hangul "ajr" "$(C8T(B" kijuhynbmlopOP) + (its-define-hangul "ajs" "$(C8U(B" kijuhynbmlopP) + (its-define-hangul "ajf" "$(C8V(B" kijuhynbmlopP + (its-define-hangul "ajfa" "$(C8W(B" kijuhynbmlopP)) + (its-define-hangul "aja" "$(C8X(B" kijuhynbmlopP) + (its-define-hangul "ajq" "$(C8Y(B" kijuhynbmlopP) + (its-define-hangul "ajt" "$(C8Z(B" kijuhynbmlopOP) + (its-define-hangul "ajd" "$(C8[(B" kijuhynbmlopOP) + (its-define-hangul "ajw" "$(C8\(B" kijuhynbmlopOP) + (its-define-hangul "ajg" "$(C8](B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ap" "$(C8^(B" + (its-define-hangul "apr" "$(C8_(B" kijuhynbmlopOP) + (its-define-hangul "aps" "$(C8`(B" kijuhynbmlopP) + (its-define-hangul "apf" "$(C8a(B" kijuhynbmlopP) + (its-define-hangul "apa" "$(C8b(B" kijuhynbmlopP) + (its-define-hangul "apq" "$(C8c(B" kijuhynbmlopP) + (its-define-hangul "apt" "$(C8d(B" kijuhynbmlopOP) + (its-define-hangul "apT" "$(C8e(B" kjhynmlop) + (its-define-hangul "apd" "$(C8f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "au" "$(C8g(B" + (its-define-hangul "aur" "$(C8h(B" kijuhynbmlopOP) + (its-define-hangul "aus" "$(C8i(B" kijuhynbmlopP) + (its-define-hangul "auf" "$(C8j(B" kijuhynbmlopP) + (its-define-hangul "aut" "$(C8k(B" kijuhynbmlopOP) + (its-define-hangul "auT" "$(C8l(B" kjhynmlop) + (its-define-hangul "aud" "$(C8m(B" kijuhynbmlopOP) + (its-define-hangul "auc" "$(C8n(B" kijuhynbmlopP)) + + (its-defrule-hangul "aP" "$(C8o(B") + + (its-defrule-hangul-2 "ah" "$(C8p(B" + (its-define-hangul "ahr" "$(C8q(B" kijuhynbmlopOP + (its-define-hangul "ahrt" "$(C8r(B" kijuhynbmlopOP)) + (its-define-hangul "ahs" "$(C8s(B" kijuhynbmlopP) + (its-define-hangul "ahf" "$(C8t(B" kijuhynbmlopP + (its-define-hangul "ahfa" "$(C8u(B" kijuhynbmlopP)) + (its-define-hangul "aha" "$(C8v(B" kijuhynbmlopP) + (its-define-hangul "ahq" "$(C8w(B" kijuhynbmlopP) + (its-define-hangul "aht" "$(C8x(B" kijuhynbmlopOP) + (its-define-hangul "ahd" "$(C8y(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ahk" "$(C8z(B" + (its-define-hangul "ahks" "$(C8{(B" kijuhynbmlopP) + (its-define-hangul "ahkT" "$(C8|(B" kjhynmlop) + (its-define-hangul "ahkd" "$(C8}(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ahl" "$(C8~(B" + (its-define-hangul "ahls" "$(C9!(B" kijuhynbmlopP) + (its-define-hangul "ahlf" "$(C9"(B" kijuhynbmlopP) + (its-define-hangul "ahlq" "$(C9#(B" kijuhynbmlopP) + (its-define-hangul "ahlt" "$(C9$(B" kijuhynbmlopOP) + (its-define-hangul "ahld" "$(C9%(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ay" "$(C9&(B" + (its-define-hangul "ays" "$(C9'(B" kijuhynbmlopP) + (its-define-hangul "ayf" "$(C9((B" kijuhynbmlopP) + (its-define-hangul "ayq" "$(C9)(B" kijuhynbmlopP) + (its-define-hangul "ayt" "$(C9*(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "an" "$(C9+(B" + (its-define-hangul "anr" "$(C9,(B" kijuhynbmlopOP) + (its-define-hangul "anR" "$(C9-(B" kijuhynbmlopP) + (its-define-hangul "ans" "$(C9.(B" kijuhynbmlopP) + (its-define-hangul "ane" "$(C9/(B" kijuhynbmlopP) + (its-define-hangul "anf" "$(C90(B" kijuhynbmlopP + (its-define-hangul "anfr" "$(C91(B" kijuhynbmlopOP) + (its-define-hangul "anfa" "$(C92(B" kijuhynbmlopP)) + (its-define-hangul "ana" "$(C93(B" kijuhynbmlopP) + (its-define-hangul "anq" "$(C94(B" kijuhynbmlopP) + (its-define-hangul "ant" "$(C95(B" kijuhynbmlopOP) + (its-define-hangul "and" "$(C96(B" kijuhynbmlopOP) + (its-define-hangul "anx" "$(C97(B" kijuhynbmlopP) + (its-define-hangul "ang" "$(C98(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "anj" "$(C99(B" + (its-define-hangul "anjs" "$(C9:(B" kijuhynbmlopP) + (its-define-hangul "anjf" "$(C9;(B" kijuhynbmlopP) + (its-define-hangul "anjq" "$(C9<(B" kijuhynbmlopP) + (its-define-hangul "anjt" "$(C9=(B" kijuhynbmlopOP)) + + (its-defrule-hangul "anp" "$(C9>(B") + + (its-defrule-hangul-2 "anl" "$(C9?(B" + (its-define-hangul "anls" "$(C9@(B" kijuhynbmlopP) + (its-define-hangul "anlf" "$(C9A(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ab" "$(C9B(B" + (its-define-hangul "abs" "$(C9C(B" kijuhynbmlopP) + (its-define-hangul "abf" "$(C9D(B" kijuhynbmlopP) + (its-define-hangul "aba" "$(C9E(B" kijuhynbmlopP) + (its-define-hangul "abt" "$(C9F(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "am" "$(C9G(B" + (its-define-hangul "ams" "$(C9H(B" kijuhynbmlopP) + (its-define-hangul "amf" "$(C9I(B" kijuhynbmlopP) + (its-define-hangul "ama" "$(C9J(B" kijuhynbmlopP) + (its-define-hangul "amt" "$(C9K(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "al" "$(C9L(B" + (its-define-hangul "alr" "$(C9M(B" kijuhynbmlopOP) + (its-define-hangul "als" "$(C9N(B" kijuhynbmlopP) + (its-define-hangul "ale" "$(C9O(B" kijuhynbmlopP) + (its-define-hangul "alf" "$(C9P(B" kijuhynbmlopP + (its-define-hangul "alfa" "$(C9Q(B" kijuhynbmlopP)) + (its-define-hangul "ala" "$(C9R(B" kijuhynbmlopP) + (its-define-hangul "alq" "$(C9S(B" kijuhynbmlopP) + (its-define-hangul "alt" "$(C9T(B" kijuhynbmlopOP) + (its-define-hangul "alT" "$(C9U(B" kjhynmlop) + (its-define-hangul "ald" "$(C9V(B" kijuhynbmlopOP) + (its-define-hangul "alc" "$(C9W(B" kijuhynbmlopP) + (its-define-hangul "alx" "$(C9X(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qk" "$(C9Y(B" + (its-define-hangul "qkr" "$(C9Z(B" kijuhynbmlopOP + (its-define-hangul "qkrt" "$(C9\(B" kijuhynbmlopOP)) + (its-define-hangul "qkR" "$(C9[(B" kijuhynbmlopP) + (its-define-hangul "qks" "$(C9](B" kijuhynbmlopP) + (its-define-hangul "qke" "$(C9^(B" kijuhynbmlopP) + (its-define-hangul "qkf" "$(C9_(B" kijuhynbmlopP + (its-define-hangul "qkfr" "$(C9`(B" kijuhynbmlopOP) + (its-define-hangul "qkfa" "$(C9a(B" kijuhynbmlopP) + (its-define-hangul "qkfq" "$(C9b(B" kijuhynbmlopP)) + (its-define-hangul "qka" "$(C9c(B" kijuhynbmlopP) + (its-define-hangul "qkq" "$(C9d(B" kijuhynbmlopP) + (its-define-hangul "qkt" "$(C9e(B" kijuhynbmlopOP) + (its-define-hangul "qkd" "$(C9f(B" kijuhynbmlopOP) + (its-define-hangul "qkx" "$(C9g(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qo" "$(C9h(B" + (its-define-hangul "qor" "$(C9i(B" kijuhynbmlopOP) + (its-define-hangul "qos" "$(C9j(B" kijuhynbmlopP) + (its-define-hangul "qof" "$(C9k(B" kijuhynbmlopP) + (its-define-hangul "qoa" "$(C9l(B" kijuhynbmlopP) + (its-define-hangul "qoq" "$(C9m(B" kijuhynbmlopP) + (its-define-hangul "qot" "$(C9n(B" kijuhynbmlopOP) + (its-define-hangul "qoT" "$(C9o(B" kjhynmlop) + (its-define-hangul "qod" "$(C9p(B" kijuhynbmlopOP) + (its-define-hangul "qox" "$(C9q(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qi" "$(C9r(B" + (its-define-hangul "qir" "$(C9s(B" kijuhynbmlopOP) + (its-define-hangul "qis" "$(C9t(B" kijuhynbmlopP) + (its-define-hangul "qiq" "$(C9u(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qj" "$(C9v(B" + (its-define-hangul "qjr" "$(C9w(B" kijuhynbmlopOP) + (its-define-hangul "qjs" "$(C9x(B" kijuhynbmlopP) + (its-define-hangul "qje" "$(C9y(B" kijuhynbmlopP) + (its-define-hangul "qjf" "$(C9z(B" kijuhynbmlopP + (its-define-hangul "qjfa" "$(C9{(B" kijuhynbmlopP)) + (its-define-hangul "qja" "$(C9|(B" kijuhynbmlopP) + (its-define-hangul "qjq" "$(C9}(B" kijuhynbmlopP) + (its-define-hangul "qjt" "$(C9~(B" kijuhynbmlopOP) + (its-define-hangul "qjd" "$(C:!(B" kijuhynbmlopOP) + (its-define-hangul "qjw" "$(C:"(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "qp" "$(C:#(B" + (its-define-hangul "qpr" "$(C:$(B" kijuhynbmlopOP) + (its-define-hangul "qps" "$(C:%(B" kijuhynbmlopP) + (its-define-hangul "qpe" "$(C:&(B" kijuhynbmlopP) + (its-define-hangul "qpf" "$(C:'(B" kijuhynbmlopP) + (its-define-hangul "qpa" "$(C:((B" kijuhynbmlopP) + (its-define-hangul "qpq" "$(C:)(B" kijuhynbmlopP) + (its-define-hangul "qpt" "$(C:*(B" kijuhynbmlopOP) + (its-define-hangul "qpT" "$(C:+(B" kjhynmlop) + (its-define-hangul "qpd" "$(C:,(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "qu" "$(C:-(B" + (its-define-hangul "qur" "$(C:.(B" kijuhynbmlopOP) + (its-define-hangul "qus" "$(C:/(B" kijuhynbmlopP) + (its-define-hangul "quf" "$(C:0(B" kijuhynbmlopP) + (its-define-hangul "quq" "$(C:1(B" kijuhynbmlopP) + (its-define-hangul "qut" "$(C:2(B" kijuhynbmlopOP) + (its-define-hangul "quT" "$(C:3(B" kjhynmlop) + (its-define-hangul "qud" "$(C:4(B" kijuhynbmlopOP) + (its-define-hangul "qux" "$(C:5(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qP" "$(C:6(B" + (its-define-hangul "qPs" "$(C:7(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qh" "$(C:8(B" + (its-define-hangul "qhr" "$(C:9(B" kijuhynbmlopOP) + (its-define-hangul "qhR" "$(C::(B" kijuhynbmlopP) + (its-define-hangul "qhs" "$(C:;(B" kijuhynbmlopP) + (its-define-hangul "qhf" "$(C:<(B" kijuhynbmlopP) + (its-define-hangul "qha" "$(C:=(B" kijuhynbmlopP) + (its-define-hangul "qhq" "$(C:>(B" kijuhynbmlopP) + (its-define-hangul "qht" "$(C:?(B" kijuhynbmlopOP) + (its-define-hangul "qhd" "$(C:@(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "qhk" "$(C:A(B" + (its-define-hangul "qhks" "$(C:B(B" kijuhynbmlopP) + (its-define-hangul "qhkT" "$(C:C(B" kjhynmlop)) + + (its-defrule-hangul-2 "qho" "$(C:D(B" + (its-define-hangul "qhoT" "$(C:E(B" kjhynmlop)) + + (its-defrule-hangul-2 "qhl" "$(C:F(B" + (its-define-hangul "qhlr" "$(C:G(B" kijuhynbmlopOP) + (its-define-hangul "qhls" "$(C:H(B" kijuhynbmlopP) + (its-define-hangul "qhlf" "$(C:I(B" kijuhynbmlopP) + (its-define-hangul "qhla" "$(C:J(B" kijuhynbmlopP) + (its-define-hangul "qhlq" "$(C:K(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qy" "$(C:L(B" + (its-define-hangul "qys" "$(C:M(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qn" "$(C:N(B" + (its-define-hangul "qnr" "$(C:O(B" kijuhynbmlopOP) + (its-define-hangul "qns" "$(C:P(B" kijuhynbmlopP) + (its-define-hangul "qne" "$(C:Q(B" kijuhynbmlopP) + (its-define-hangul "qnf" "$(C:R(B" kijuhynbmlopP + (its-define-hangul "qnfr" "$(C:S(B" kijuhynbmlopOP) + (its-define-hangul "qnfa" "$(C:T(B" kijuhynbmlopP)) + (its-define-hangul "qna" "$(C:U(B" kijuhynbmlopP) + (its-define-hangul "qnq" "$(C:V(B" kijuhynbmlopP) + (its-define-hangul "qnt" "$(C:W(B" kijuhynbmlopOP) + (its-define-hangul "qnd" "$(C:X(B" kijuhynbmlopOP) + (its-define-hangul "qnx" "$(C:Y(B" kijuhynbmlopP) + (its-define-hangul "qnv" "$(C:Z(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "qnj" "$(C:[(B" + (its-define-hangul "qnjf" "$(C:\(B" kijuhynbmlopP) + (its-define-hangul "qnjT" "$(C:](B" kjhynmlop)) + + (its-defrule-hangul "qnp" "$(C:^(B") + + (its-defrule-hangul-2 "qnl" "$(C:_(B" + (its-define-hangul "qnlr" "$(C:`(B" kijuhynbmlopOP) + (its-define-hangul "qnls" "$(C:a(B" kijuhynbmlopP) + (its-define-hangul "qnlf" "$(C:b(B" kijuhynbmlopP) + (its-define-hangul "qnld" "$(C:c(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "qb" "$(C:d(B" + (its-define-hangul "qbs" "$(C:e(B" kijuhynbmlopP) + (its-define-hangul "qbf" "$(C:f(B" kijuhynbmlopP) + (its-define-hangul "qba" "$(C:g(B" kijuhynbmlopP) + (its-define-hangul "qbt" "$(C:h(B" kijuhynbmlopOP) + (its-define-hangul "qbd" "$(C:i(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "qm" "$(C:j(B" + (its-define-hangul "qmr" "$(C:k(B" kijuhynbmlopOP) + (its-define-hangul "qms" "$(C:l(B" kijuhynbmlopP) + (its-define-hangul "qmf" "$(C:m(B" kijuhynbmlopP) + (its-define-hangul "qma" "$(C:n(B" kijuhynbmlopP) + (its-define-hangul "qmq" "$(C:o(B" kijuhynbmlopP) + (its-define-hangul "qmt" "$(C:p(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ql" "$(C:q(B" + (its-define-hangul "qlr" "$(C:r(B" kijuhynbmlopOP) + (its-define-hangul "qls" "$(C:s(B" kijuhynbmlopP) + (its-define-hangul "qlf" "$(C:t(B" kijuhynbmlopP + (its-define-hangul "qlfa" "$(C:u(B" kijuhynbmlopP)) + (its-define-hangul "qla" "$(C:v(B" kijuhynbmlopP) + (its-define-hangul "qlq" "$(C:w(B" kijuhynbmlopP) + (its-define-hangul "qlt" "$(C:x(B" kijuhynbmlopOP) + (its-define-hangul "qld" "$(C:y(B" kijuhynbmlopOP) + (its-define-hangul "qlw" "$(C:z(B" kijuhynbmlopOP) + (its-define-hangul "qlc" "$(C:{(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Qk" "$(C:|(B" + (its-define-hangul "Qkr" "$(C:}(B" kijuhynbmlopOP) + (its-define-hangul "Qks" "$(C:~(B" kijuhynbmlopP) + (its-define-hangul "Qkf" "$(C;!(B" kijuhynbmlopP + (its-define-hangul "Qkfa" "$(C;"(B" kijuhynbmlopP)) + (its-define-hangul "Qka" "$(C;#(B" kijuhynbmlopP) + (its-define-hangul "Qkq" "$(C;$(B" kijuhynbmlopP) + (its-define-hangul "Qkt" "$(C;%(B" kijuhynbmlopOP) + (its-define-hangul "QkT" "$(C;&(B" kjhynmlop) + (its-define-hangul "Qkd" "$(C;'(B" kijuhynbmlopOP) + (its-define-hangul "Qkg" "$(C;((B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Qo" "$(C;)(B" + (its-define-hangul "Qor" "$(C;*(B" kijuhynbmlopOP) + (its-define-hangul "Qos" "$(C;+(B" kijuhynbmlopP) + (its-define-hangul "Qof" "$(C;,(B" kijuhynbmlopP) + (its-define-hangul "Qoa" "$(C;-(B" kijuhynbmlopP) + (its-define-hangul "Qoq" "$(C;.(B" kijuhynbmlopP) + (its-define-hangul "Qot" "$(C;/(B" kijuhynbmlopOP) + (its-define-hangul "QoT" "$(C;0(B" kjhynmlop) + (its-define-hangul "Qod" "$(C;1(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qi" "$(C;2(B" + (its-define-hangul "Qir" "$(C;3(B" kijuhynbmlopOP) + (its-define-hangul "Qia" "$(C;4(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Qj" "$(C;5(B" + (its-define-hangul "Qjr" "$(C;6(B" kijuhynbmlopOP) + (its-define-hangul "Qjs" "$(C;7(B" kijuhynbmlopP) + (its-define-hangul "Qje" "$(C;8(B" kijuhynbmlopP) + (its-define-hangul "Qjf" "$(C;9(B" kijuhynbmlopP) + (its-define-hangul "Qja" "$(C;:(B" kijuhynbmlopP) + (its-define-hangul "Qjt" "$(C;;(B" kijuhynbmlopOP) + (its-define-hangul "QjT" "$(C;<(B" kjhynmlop) + (its-define-hangul "Qjd" "$(C;=(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qp" "$(C;>(B" + (its-define-hangul "Qpd" "$(C;?(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qu" "$(C;@(B" + (its-define-hangul "Qur" "$(C;A(B" kijuhynbmlopOP) + (its-define-hangul "Qua" "$(C;B(B" kijuhynbmlopP) + (its-define-hangul "Quq" "$(C;C(B" kijuhynbmlopP) + (its-define-hangul "Qut" "$(C;D(B" kijuhynbmlopOP) + (its-define-hangul "QuT" "$(C;E(B" kjhynmlop) + (its-define-hangul "Qud" "$(C;F(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qh" "$(C;G(B" + (its-define-hangul "Qhr" "$(C;H(B" kijuhynbmlopOP) + (its-define-hangul "Qhs" "$(C;I(B" kijuhynbmlopP) + (its-define-hangul "Qhf" "$(C;J(B" kijuhynbmlopP) + (its-define-hangul "Qha" "$(C;K(B" kijuhynbmlopP) + (its-define-hangul "Qhq" "$(C;L(B" kijuhynbmlopP) + (its-define-hangul "Qhd" "$(C;M(B" kijuhynbmlopOP)) + + (its-defrule-hangul "Qhl" "$(C;N(B") + + (its-defrule-hangul-2 "Qy" "$(C;O(B" + (its-define-hangul "Qyd" "$(C;P(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qn" "$(C;Q(B" + (its-define-hangul "Qnr" "$(C;R(B" kijuhynbmlopOP) + (its-define-hangul "Qns" "$(C;S(B" kijuhynbmlopP) + (its-define-hangul "Qnf" "$(C;T(B" kijuhynbmlopP) + (its-define-hangul "Qna" "$(C;U(B" kijuhynbmlopP) + (its-define-hangul "Qnt" "$(C;V(B" kijuhynbmlopOP) + (its-define-hangul "Qnd" "$(C;W(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qb" "$(C;X(B" + (its-define-hangul "Qbd" "$(C;Y(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Qm" "$(C;Z(B" + (its-define-hangul "Qms" "$(C;[(B" kijuhynbmlopP) + (its-define-hangul "Qmf" "$(C;\(B" kijuhynbmlopP) + (its-define-hangul "Qma" "$(C;](B" kijuhynbmlopP) + (its-define-hangul "Qmq" "$(C;^(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Ql" "$(C;_(B" + (its-define-hangul "Qlr" "$(C;`(B" kijuhynbmlopOP) + (its-define-hangul "Qls" "$(C;a(B" kijuhynbmlopP) + (its-define-hangul "Qlf" "$(C;b(B" kijuhynbmlopP) + (its-define-hangul "Qla" "$(C;c(B" kijuhynbmlopP) + (its-define-hangul "Qlq" "$(C;d(B" kijuhynbmlopP) + (its-define-hangul "Qlt" "$(C;e(B" kijuhynbmlopOP) + (its-define-hangul "Qld" "$(C;f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "tk" "$(C;g(B" + (its-define-hangul "tkr" "$(C;h(B" kijuhynbmlopOP + (its-define-hangul "tkrt" "$(C;i(B" kijuhynbmlopOP)) + (its-define-hangul "tks" "$(C;j(B" kijuhynbmlopP) + (its-define-hangul "tke" "$(C;k(B" kijuhynbmlopP) + (its-define-hangul "tkf" "$(C;l(B" kijuhynbmlopP + (its-define-hangul "tkfr" "$(C;m(B" kijuhynbmlopOP) + (its-define-hangul "tkfa" "$(C;n(B" kijuhynbmlopP)) + (its-define-hangul "tka" "$(C;o(B" kijuhynbmlopP) + (its-define-hangul "tkq" "$(C;p(B" kijuhynbmlopP) + (its-define-hangul "tkt" "$(C;q(B" kijuhynbmlopOP + (its-define-hangul "tktT" "$(C;r(B" kjhynmlop)) + (its-define-hangul "tkd" "$(C;s(B" kijuhynbmlopOP) + (its-define-hangul "tkx" "$(C;t(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "to" "$(C;u(B" + (its-define-hangul "tor" "$(C;v(B" kijuhynbmlopOP) + (its-define-hangul "tos" "$(C;w(B" kijuhynbmlopP) + (its-define-hangul "tof" "$(C;x(B" kijuhynbmlopP) + (its-define-hangul "toa" "$(C;y(B" kijuhynbmlopP) + (its-define-hangul "toq" "$(C;z(B" kijuhynbmlopP) + (its-define-hangul "tot" "$(C;{(B" kijuhynbmlopOP) + (its-define-hangul "toT" "$(C;|(B" kjhynmlop) + (its-define-hangul "tod" "$(C;}(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ti" "$(C;~(B" + (its-define-hangul "tir" "$(C(B" kijuhynbmlopP) + (its-define-hangul "tpf" "$(C(B" kijuhynbmlopOP)) + (its-define-hangul "tma" "$(C=?(B" kijuhynbmlopP) + (its-define-hangul "tmq" "$(C=@(B" kijuhynbmlopP) + (its-define-hangul "tmt" "$(C=A(B" kijuhynbmlopOP) + (its-define-hangul "tmd" "$(C=B(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "tl" "$(C=C(B" + (its-define-hangul "tlr" "$(C=D(B" kijuhynbmlopOP) + (its-define-hangul "tls" "$(C=E(B" kijuhynbmlopP) + (its-define-hangul "tle" "$(C=F(B" kijuhynbmlopP) + (its-define-hangul "tlf" "$(C=G(B" kijuhynbmlopP + (its-define-hangul "tlfg" "$(C=H(B" kijuhynbmlopP)) + (its-define-hangul "tla" "$(C=I(B" kijuhynbmlopP) + (its-define-hangul "tlq" "$(C=J(B" kijuhynbmlopP) + (its-define-hangul "tlt" "$(C=K(B" kijuhynbmlopOP) + (its-define-hangul "tld" "$(C=L(B" kijuhynbmlopOP) + (its-define-hangul "tlv" "$(C=M(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Tk" "$(C=N(B" + (its-define-hangul "Tkr" "$(C=O(B" kijuhynbmlopOP + (its-define-hangul "Tkrt" "$(C=P(B" kijuhynbmlopOP)) + (its-define-hangul "Tks" "$(C=Q(B" kijuhynbmlopP) + (its-define-hangul "Tkf" "$(C=R(B" kijuhynbmlopP) + (its-define-hangul "Tka" "$(C=S(B" kijuhynbmlopP) + (its-define-hangul "Tkq" "$(C=T(B" kijuhynbmlopP) + (its-define-hangul "TkT" "$(C=U(B" kjhynmlop) + (its-define-hangul "Tkd" "$(C=V(B" kijuhynbmlopOP) + (its-define-hangul "Tkg" "$(C=W(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "To" "$(C=X(B" + (its-define-hangul "Tor" "$(C=Y(B" kijuhynbmlopOP) + (its-define-hangul "Tos" "$(C=Z(B" kijuhynbmlopP) + (its-define-hangul "Tof" "$(C=[(B" kijuhynbmlopP) + (its-define-hangul "Toa" "$(C=\(B" kijuhynbmlopP) + (its-define-hangul "Toq" "$(C=](B" kijuhynbmlopP) + (its-define-hangul "ToT" "$(C=^(B" kjhynmlop) + (its-define-hangul "Tod" "$(C=_(B" kijuhynbmlopOP)) + + (its-defrule-hangul "Ti" "$(C$6(Bi") + (its-defrule-hangul "Tid" "$(C=`(B") + + (its-defrule-hangul-2 "Tj" "$(C=a(B" + (its-define-hangul "Tjr" "$(C=b(B" kijuhynbmlopOP) + (its-define-hangul "Tjs" "$(C=c(B" kijuhynbmlopP) + (its-define-hangul "Tjf" "$(C=d(B" kijuhynbmlopP + (its-define-hangul "Tjfq" "$(C=e(B" kijuhynbmlopP)) + (its-define-hangul "Tja" "$(C=f(B" kijuhynbmlopP) + (its-define-hangul "Tjq" "$(C=g(B" kijuhynbmlopP) + (its-define-hangul "TjT" "$(C=h(B" kjhynmlop) + (its-define-hangul "Tjd" "$(C=i(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Tp" "$(C=j(B" + (its-define-hangul "Tps" "$(C=k(B" kijuhynbmlopP) + (its-define-hangul "Tpf" "$(C=l(B" kijuhynbmlopP)) + + (its-defrule-hangul "TP" "$(C$6(BP") + (its-defrule-hangul "TPs" "$(C=m(B") + + (its-defrule-hangul-2 "Th" "$(C=n(B" + (its-define-hangul "Thr" "$(C=o(B" kijuhynbmlopOP) + (its-define-hangul "Ths" "$(C=p(B" kijuhynbmlopP) + (its-define-hangul "The" "$(C=q(B" kijuhynbmlopP) + (its-define-hangul "Thf" "$(C=r(B" kijuhynbmlopP + (its-define-hangul "Thfa" "$(C=s(B" kijuhynbmlopP)) + (its-define-hangul "Tha" "$(C=t(B" kijuhynbmlopP) + (its-define-hangul "Thq" "$(C=u(B" kijuhynbmlopP) + (its-define-hangul "Thd" "$(C=v(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Thk" "$(C=w(B" + (its-define-hangul "Thkr" "$(C=x(B" kijuhynbmlopOP) + (its-define-hangul "Thks" "$(C=y(B" kijuhynbmlopP) + (its-define-hangul "ThkT" "$(C=z(B" kjhynmlop)) + + (its-defrule-hangul-2 "Tho" "$(C={(B" + (its-define-hangul "ThoT" "$(C=|(B" kjhynmlop)) + + (its-defrule-hangul-2 "Thl" "$(C=}(B" + (its-define-hangul "Thls" "$(C=~(B" kijuhynbmlopP) + (its-define-hangul "Thlf" "$(C>!(B" kijuhynbmlopP) + (its-define-hangul "Thla" "$(C>"(B" kijuhynbmlopP) + (its-define-hangul "Thlq" "$(C>#(B" kijuhynbmlopP)) + + (its-defrule-hangul "Ty" "$(C>$(B") + + (its-defrule-hangul-2 "Tn" "$(C>%(B" + (its-define-hangul "Tnr" "$(C>&(B" kijuhynbmlopOP) + (its-define-hangul "Tns" "$(C>'(B" kijuhynbmlopP) + (its-define-hangul "Tnf" "$(C>((B" kijuhynbmlopP) + (its-define-hangul "Tna" "$(C>)(B" kijuhynbmlopP) + (its-define-hangul "Tnq" "$(C>*(B" kijuhynbmlopP) + (its-define-hangul "Tnd" "$(C>+(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Tnj" "$(C>,(B" + (its-define-hangul "TnjT" "$(C>-(B" kjhynmlop)) + + (its-defrule-hangul "Tnjp" "$(C>.(B") + + (its-defrule-hangul-2 "Tnl" "$(C>/(B" + (its-define-hangul "Tnls" "$(C>0(B" kijuhynbmlopP)) + + (its-defrule-hangul "Tb" "$(C$6(Bd") + (its-defrule-hangul "Tbd" "$(C>1(B") + + (its-defrule-hangul-2 "Tm" "$(C>2(B" + (its-define-hangul "Tmr" "$(C>3(B" kijuhynbmlopOP) + (its-define-hangul "Tms" "$(C>4(B" kijuhynbmlopP) + (its-define-hangul "Tmf" "$(C>5(B" kijuhynbmlopP + (its-define-hangul "Tmfa" "$(C>6(B" kijuhynbmlopP) + (its-define-hangul "Tmfg" "$(C>7(B" kijuhynbmlopP)) + (its-define-hangul "Tma" "$(C>8(B" kijuhynbmlopP) + (its-define-hangul "Tmq" "$(C>9(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Tml" "$(C>:(B" + (its-define-hangul "Tmls" "$(C>;(B" kijuhynbmlopP) + (its-define-hangul "Tmlf" "$(C><(B" kijuhynbmlopP) + (its-define-hangul "Tmla" "$(C>=(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Tl" "$(C>>(B" + (its-define-hangul "Tlr" "$(C>?(B" kijuhynbmlopOP) + (its-define-hangul "Tls" "$(C>@(B" kijuhynbmlopP) + (its-define-hangul "Tlf" "$(C>A(B" kijuhynbmlopP) + (its-define-hangul "Tla" "$(C>B(B" kijuhynbmlopP) + (its-define-hangul "Tlq" "$(C>C(B" kijuhynbmlopP) + (its-define-hangul "Tlt" "$(C>D(B" kijuhynbmlopOP) + (its-define-hangul "Tld" "$(C>E(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dk" "$(C>F(B" + (its-define-hangul "dkr" "$(C>G(B" kijuhynbmlopOP) + (its-define-hangul "dks" "$(C>H(B" kijuhynbmlopP + (its-define-hangul "dksw" "$(C>I(B" kijuhynbmlopOP) + (its-define-hangul "dksg" "$(C>J(B" kijuhynbmlopP)) + (its-define-hangul "dkf" "$(C>K(B" kijuhynbmlopP + (its-define-hangul "dkfr" "$(C>L(B" kijuhynbmlopOP) + (its-define-hangul "dkfa" "$(C>M(B" kijuhynbmlopP) + (its-define-hangul "dkfg" "$(C>N(B" kijuhynbmlopP)) + (its-define-hangul "dka" "$(C>O(B" kijuhynbmlopP) + (its-define-hangul "dkq" "$(C>P(B" kijuhynbmlopP) + (its-define-hangul "dkt" "$(C>Q(B" kijuhynbmlopOP) + (its-define-hangul "dkT" "$(C>R(B" kjhynmlop) + (its-define-hangul "dkd" "$(C>S(B" kijuhynbmlopOP) + (its-define-hangul "dkx" "$(C>T(B" kijuhynbmlopP) + (its-define-hangul "dkv" "$(C>U(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "do" "$(C>V(B" + (its-define-hangul "dor" "$(C>W(B" kijuhynbmlopOP) + (its-define-hangul "dos" "$(C>X(B" kijuhynbmlopP) + (its-define-hangul "dof" "$(C>Y(B" kijuhynbmlopP) + (its-define-hangul "doa" "$(C>Z(B" kijuhynbmlopP) + (its-define-hangul "doq" "$(C>[(B" kijuhynbmlopP) + (its-define-hangul "dot" "$(C>\(B" kijuhynbmlopOP) + (its-define-hangul "doT" "$(C>](B" kjhynmlop) + (its-define-hangul "dod" "$(C>^(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "di" "$(C>_(B" + (its-define-hangul "dir" "$(C>`(B" kijuhynbmlopOP) + (its-define-hangul "dis" "$(C>a(B" kijuhynbmlopP) + (its-define-hangul "dif" "$(C>b(B" kijuhynbmlopP + (its-define-hangul "difq" "$(C>c(B" kijuhynbmlopP)) + (its-define-hangul "dia" "$(C>d(B" kijuhynbmlopP) + (its-define-hangul "diq" "$(C>e(B" kijuhynbmlopP) + (its-define-hangul "dit" "$(C>f(B" kijuhynbmlopOP) + (its-define-hangul "did" "$(C>g(B" kijuhynbmlopOP) + (its-define-hangul "dix" "$(C>h(B" kijuhynbmlopP) + (its-define-hangul "dig" "$(C>i(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dO" "$(C>j(B" + (its-define-hangul "dOs" "$(C>k(B" kijuhynbmlopP) + (its-define-hangul "dOf" "$(C>l(B" kijuhynbmlopP) + (its-define-hangul "dOq" "$(C>m(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dj" "$(C>n(B" + (its-define-hangul "djr" "$(C>o(B" kijuhynbmlopOP) + (its-define-hangul "djs" "$(C>p(B" kijuhynbmlopP + (its-define-hangul "djsw" "$(C>q(B" kijuhynbmlopOP)) + (its-define-hangul "dje" "$(C>r(B" kijuhynbmlopP) + (its-define-hangul "djf" "$(C>s(B" kijuhynbmlopP + (its-define-hangul "djfr" "$(C>t(B" kijuhynbmlopOP) + (its-define-hangul "djfa" "$(C>u(B" kijuhynbmlopP)) + (its-define-hangul "dja" "$(C>v(B" kijuhynbmlopP) + (its-define-hangul "djq" "$(C>w(B" kijuhynbmlopP + (its-define-hangul "djqt" "$(C>x(B" kijuhynbmlopOP)) + (its-define-hangul "djt" "$(C>y(B" kijuhynbmlopOP) + (its-define-hangul "djT" "$(C>z(B" kjhynmlop) + (its-define-hangul "djd" "$(C>{(B" kijuhynbmlopOP) + (its-define-hangul "djw" "$(C>|(B" kijuhynbmlopOP) + (its-define-hangul "djz" "$(C>}(B" kijuhynbmlopP) + (its-define-hangul "djv" "$(C>~(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dp" "$(C?!(B" + (its-define-hangul "dpr" "$(C?"(B" kijuhynbmlopOP) + (its-define-hangul "dps" "$(C?#(B" kijuhynbmlopP) + (its-define-hangul "dpf" "$(C?$(B" kijuhynbmlopP) + (its-define-hangul "dpa" "$(C?%(B" kijuhynbmlopP) + (its-define-hangul "dpq" "$(C?&(B" kijuhynbmlopP) + (its-define-hangul "dpt" "$(C?'(B" kijuhynbmlopOP) + (its-define-hangul "dpd" "$(C?((B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "du" "$(C?)(B" + (its-define-hangul "dur" "$(C?*(B" kijuhynbmlopOP) + (its-define-hangul "duR" "$(C?+(B" kijuhynbmlopP) + (its-define-hangul "dus" "$(C?,(B" kijuhynbmlopP) + (its-define-hangul "duf" "$(C?-(B" kijuhynbmlopP + (its-define-hangul "dufa" "$(C?.(B" kijuhynbmlopP) + (its-define-hangul "dufq" "$(C?/(B" kijuhynbmlopP)) + (its-define-hangul "dua" "$(C?0(B" kijuhynbmlopP) + (its-define-hangul "duq" "$(C?1(B" kijuhynbmlopP + (its-define-hangul "duqt" "$(C?2(B" kijuhynbmlopOP)) + (its-define-hangul "dut" "$(C?3(B" kijuhynbmlopOP) + (its-define-hangul "duT" "$(C?4(B" kjhynmlop) + (its-define-hangul "dud" "$(C?5(B" kijuhynbmlopOP) + (its-define-hangul "dux" "$(C?6(B" kijuhynbmlopP) + (its-define-hangul "duv" "$(C?7(B" kijuhynbmlopP) + (its-define-hangul "dug" "$(C?8(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dP" "$(C?9(B" + (its-define-hangul "dPs" "$(C?:(B" kijuhynbmlopP) + (its-define-hangul "dPf" "$(C?;(B" kijuhynbmlopP) + (its-define-hangul "dPa" "$(C?<(B" kijuhynbmlopP) + (its-define-hangul "dPq" "$(C?=(B" kijuhynbmlopP) + (its-define-hangul "dPt" "$(C?>(B" kijuhynbmlopOP) + (its-define-hangul "dPT" "$(C??(B" kjhynmlop)) + + (its-defrule-hangul-2 "dh" "$(C?@(B" + (its-define-hangul "dhr" "$(C?A(B" kijuhynbmlopOP) + (its-define-hangul "dhs" "$(C?B(B" kijuhynbmlopP) + (its-define-hangul "dhf" "$(C?C(B" kijuhynbmlopP + (its-define-hangul "dhfr" "$(C?D(B" kijuhynbmlopOP) + (its-define-hangul "dhfa" "$(C?E(B" kijuhynbmlopP) + (its-define-hangul "dhft" "$(C?F(B" kijuhynbmlopOP) + (its-define-hangul "dhfg" "$(C?G(B" kijuhynbmlopP)) + (its-define-hangul "dha" "$(C?H(B" kijuhynbmlopP) + (its-define-hangul "dhq" "$(C?I(B" kijuhynbmlopP) + (its-define-hangul "dht" "$(C?J(B" kijuhynbmlopOP) + (its-define-hangul "dhd" "$(C?K(B" kijuhynbmlopOP) + (its-define-hangul "dhc" "$(C?L(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dhk" "$(C?M(B" + (its-define-hangul "dhkr" "$(C?N(B" kijuhynbmlopOP) + (its-define-hangul "dhks" "$(C?O(B" kijuhynbmlopP) + (its-define-hangul "dhkf" "$(C?P(B" kijuhynbmlopP) + (its-define-hangul "dhka" "$(C?Q(B" kijuhynbmlopP) + (its-define-hangul "dhkq" "$(C?R(B" kijuhynbmlopP) + (its-define-hangul "dhkt" "$(C?S(B" kijuhynbmlopOP) + (its-define-hangul "dhkT" "$(C?T(B" kjhynmlop) + (its-define-hangul "dhkd" "$(C?U(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dho" "$(C?V(B" + (its-define-hangul "dhor" "$(C?W(B" kijuhynbmlopOP) + (its-define-hangul "dhos" "$(C?X(B" kijuhynbmlopP) + (its-define-hangul "dhoa" "$(C?Y(B" kijuhynbmlopP) + (its-define-hangul "dhot" "$(C?Z(B" kijuhynbmlopOP) + (its-define-hangul "dhod" "$(C?[(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dhl" "$(C?\(B" + (its-define-hangul "dhlr" "$(C?](B" kijuhynbmlopOP) + (its-define-hangul "dhls" "$(C?^(B" kijuhynbmlopP) + (its-define-hangul "dhlf" "$(C?_(B" kijuhynbmlopP) + (its-define-hangul "dhla" "$(C?`(B" kijuhynbmlopP) + (its-define-hangul "dhlq" "$(C?a(B" kijuhynbmlopP) + (its-define-hangul "dhlt" "$(C?b(B" kijuhynbmlopOP) + (its-define-hangul "dhld" "$(C?c(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dy" "$(C?d(B" + (its-define-hangul "dyr" "$(C?e(B" kijuhynbmlopOP) + (its-define-hangul "dys" "$(C?f(B" kijuhynbmlopP) + (its-define-hangul "dyf" "$(C?g(B" kijuhynbmlopP) + (its-define-hangul "dya" "$(C?h(B" kijuhynbmlopP) + (its-define-hangul "dyq" "$(C?i(B" kijuhynbmlopP) + (its-define-hangul "dyt" "$(C?j(B" kijuhynbmlopOP) + (its-define-hangul "dyd" "$(C?k(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dn" "$(C?l(B" + (its-define-hangul "dnr" "$(C?m(B" kijuhynbmlopOP) + (its-define-hangul "dns" "$(C?n(B" kijuhynbmlopP) + (its-define-hangul "dnf" "$(C?o(B" kijuhynbmlopP + (its-define-hangul "dnfr" "$(C?p(B" kijuhynbmlopOP) + (its-define-hangul "dnfa" "$(C?q(B" kijuhynbmlopP)) + (its-define-hangul "dna" "$(C?r(B" kijuhynbmlopP) + (its-define-hangul "dnq" "$(C?s(B" kijuhynbmlopP) + (its-define-hangul "dnt" "$(C?t(B" kijuhynbmlopOP) + (its-define-hangul "dnd" "$(C?u(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dnj" "$(C?v(B" + (its-define-hangul "dnjr" "$(C?w(B" kijuhynbmlopOP) + (its-define-hangul "dnjs" "$(C?x(B" kijuhynbmlopP) + (its-define-hangul "dnjf" "$(C?y(B" kijuhynbmlopP) + (its-define-hangul "dnja" "$(C?z(B" kijuhynbmlopP) + (its-define-hangul "dnjq" "$(C?{(B" kijuhynbmlopP) + (its-define-hangul "dnjT" "$(C?|(B" kjhynmlop) + (its-define-hangul "dnjd" "$(C?}(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dnp" "$(C?~(B" + (its-define-hangul "dnpr" "$(C@!(B" kijuhynbmlopOP) + (its-define-hangul "dnps" "$(C@"(B" kijuhynbmlopP) + (its-define-hangul "dnpf" "$(C@#(B" kijuhynbmlopP) + (its-define-hangul "dnpa" "$(C@$(B" kijuhynbmlopP) + (its-define-hangul "dnpq" "$(C@%(B" kijuhynbmlopP) + (its-define-hangul "dnpd" "$(C@&(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dnl" "$(C@'(B" + (its-define-hangul "dnlr" "$(C@((B" kijuhynbmlopOP) + (its-define-hangul "dnls" "$(C@)(B" kijuhynbmlopP) + (its-define-hangul "dnlf" "$(C@*(B" kijuhynbmlopP) + (its-define-hangul "dnla" "$(C@+(B" kijuhynbmlopP) + (its-define-hangul "dnlq" "$(C@,(B" kijuhynbmlopP) + (its-define-hangul "dnlt" "$(C@-(B" kijuhynbmlopOP) + (its-define-hangul "dnld" "$(C@.(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "db" "$(C@/(B" + (its-define-hangul "dbr" "$(C@0(B" kijuhynbmlopOP) + (its-define-hangul "dbs" "$(C@1(B" kijuhynbmlopP) + (its-define-hangul "dbf" "$(C@2(B" kijuhynbmlopP) + (its-define-hangul "dba" "$(C@3(B" kijuhynbmlopP) + (its-define-hangul "dbq" "$(C@4(B" kijuhynbmlopP) + (its-define-hangul "dbt" "$(C@5(B" kijuhynbmlopOP) + (its-define-hangul "dbd" "$(C@6(B" kijuhynbmlopOP) + (its-define-hangul "dbc" "$(C@7(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dm" "$(C@8(B" + (its-define-hangul "dmr" "$(C@9(B" kijuhynbmlopOP) + (its-define-hangul "dms" "$(C@:(B" kijuhynbmlopP) + (its-define-hangul "dmf" "$(C@;(B" kijuhynbmlopP + (its-define-hangul "dmfv" "$(C@<(B" kijuhynbmlopP)) + (its-define-hangul "dma" "$(C@=(B" kijuhynbmlopP) + (its-define-hangul "dmq" "$(C@>(B" kijuhynbmlopP) + (its-define-hangul "dmt" "$(C@?(B" kijuhynbmlopOP) + (its-define-hangul "dmd" "$(C@@(B" kijuhynbmlopOP) + (its-define-hangul "dmw" "$(C@A(B" kijuhynbmlopOP) + (its-define-hangul "dmc" "$(C@B(B" kijuhynbmlopP) + (its-define-hangul "dmz" "$(C@C(B" kijuhynbmlopP) + (its-define-hangul "dmx" "$(C@D(B" kijuhynbmlopP) + (its-define-hangul "dmv" "$(C@E(B" kijuhynbmlopP) + (its-define-hangul "dmg" "$(C@F(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "dml" "$(C@G(B" + (its-define-hangul "dmls" "$(C@H(B" kijuhynbmlopP) + (its-define-hangul "dmlf" "$(C@I(B" kijuhynbmlopP) + (its-define-hangul "dmla" "$(C@J(B" kijuhynbmlopP) + (its-define-hangul "dmlt" "$(C@K(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "dl" "$(C@L(B" + (its-define-hangul "dlr" "$(C@M(B" kijuhynbmlopOP) + (its-define-hangul "dls" "$(C@N(B" kijuhynbmlopP) + (its-define-hangul "dlf" "$(C@O(B" kijuhynbmlopP + (its-define-hangul "dlfr" "$(C@P(B" kijuhynbmlopOP) + (its-define-hangul "dlfa" "$(C@Q(B" kijuhynbmlopP) + (its-define-hangul "dlfg" "$(C@R(B" kijuhynbmlopP)) + (its-define-hangul "dla" "$(C@S(B" kijuhynbmlopP) + (its-define-hangul "dlq" "$(C@T(B" kijuhynbmlopP) + (its-define-hangul "dlt" "$(C@U(B" kijuhynbmlopOP) + (its-define-hangul "dlT" "$(C@V(B" kjhynmlop) + (its-define-hangul "dld" "$(C@W(B" kijuhynbmlopOP) + (its-define-hangul "dlw" "$(C@X(B" kijuhynbmlopOP) + (its-define-hangul "dlv" "$(C@Y(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "wk" "$(C@Z(B" + (its-define-hangul "wkr" "$(C@[(B" kijuhynbmlopOP) + (its-define-hangul "wks" "$(C@\(B" kijuhynbmlopP + (its-define-hangul "wksg" "$(C@](B" kijuhynbmlopP)) + (its-define-hangul "wke" "$(C@^(B" kijuhynbmlopP) + (its-define-hangul "wkf" "$(C@_(B" kijuhynbmlopP + (its-define-hangul "wkfa" "$(C@`(B" kijuhynbmlopP)) + (its-define-hangul "wka" "$(C@a(B" kijuhynbmlopP) + (its-define-hangul "wkq" "$(C@b(B" kijuhynbmlopP) + (its-define-hangul "wkt" "$(C@c(B" kijuhynbmlopOP) + (its-define-hangul "wkT" "$(C@d(B" kjhynmlop) + (its-define-hangul "wkd" "$(C@e(B" kijuhynbmlopOP) + (its-define-hangul "wkw" "$(C@f(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wo" "$(C@g(B" + (its-define-hangul "wor" "$(C@h(B" kijuhynbmlopOP) + (its-define-hangul "wos" "$(C@i(B" kijuhynbmlopP) + (its-define-hangul "wof" "$(C@j(B" kijuhynbmlopP) + (its-define-hangul "woa" "$(C@k(B" kijuhynbmlopP) + (its-define-hangul "woq" "$(C@l(B" kijuhynbmlopP) + (its-define-hangul "wot" "$(C@m(B" kijuhynbmlopOP) + (its-define-hangul "woT" "$(C@n(B" kjhynmlop) + (its-define-hangul "wod" "$(C@o(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wi" "$(C@p(B" + (its-define-hangul "wir" "$(C@q(B" kijuhynbmlopOP) + (its-define-hangul "wis" "$(C@r(B" kijuhynbmlopP + (its-define-hangul "wisg" "$(C@s(B" kijuhynbmlopP)) + (its-define-hangul "wif" "$(C@t(B" kijuhynbmlopP) + (its-define-hangul "wia" "$(C@u(B" kijuhynbmlopP) + (its-define-hangul "wid" "$(C@v(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wO" "$(C@w(B" + (its-define-hangul "wOs" "$(C@x(B" kijuhynbmlopP) + (its-define-hangul "wOf" "$(C@y(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "wj" "$(C@z(B" + (its-define-hangul "wjr" "$(C@{(B" kijuhynbmlopOP) + (its-define-hangul "wjs" "$(C@|(B" kijuhynbmlopP) + (its-define-hangul "wjf" "$(C@}(B" kijuhynbmlopP + (its-define-hangul "wjfa" "$(C@~(B" kijuhynbmlopP)) + (its-define-hangul "wja" "$(CA!(B" kijuhynbmlopP) + (its-define-hangul "wjq" "$(CA"(B" kijuhynbmlopP) + (its-define-hangul "wjt" "$(CA#(B" kijuhynbmlopOP) + (its-define-hangul "wjd" "$(CA$(B" kijuhynbmlopOP) + (its-define-hangul "wjw" "$(CA%(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wp" "$(CA&(B" + (its-define-hangul "wpr" "$(CA'(B" kijuhynbmlopOP) + (its-define-hangul "wps" "$(CA((B" kijuhynbmlopP) + (its-define-hangul "wpf" "$(CA)(B" kijuhynbmlopP) + (its-define-hangul "wpa" "$(CA*(B" kijuhynbmlopP) + (its-define-hangul "wpq" "$(CA+(B" kijuhynbmlopP) + (its-define-hangul "wpt" "$(CA,(B" kijuhynbmlopOP) + (its-define-hangul "wpd" "$(CA-(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wu" "$(CA.(B" + (its-define-hangul "wus" "$(CA/(B" kijuhynbmlopP) + (its-define-hangul "wuf" "$(CA0(B" kijuhynbmlopP) + (its-define-hangul "wua" "$(CA1(B" kijuhynbmlopP) + (its-define-hangul "wuq" "$(CA2(B" kijuhynbmlopP) + (its-define-hangul "wuT" "$(CA3(B" kjhynmlop) + (its-define-hangul "wud" "$(CA4(B" kijuhynbmlopOP)) + + (its-defrule-hangul "wP" "$(CA5(B") + + (its-defrule-hangul-2 "wh" "$(CA6(B" + (its-define-hangul "whr" "$(CA7(B" kijuhynbmlopOP) + (its-define-hangul "whs" "$(CA8(B" kijuhynbmlopP) + (its-define-hangul "whf" "$(CA9(B" kijuhynbmlopP + (its-define-hangul "whfa" "$(CA:(B" kijuhynbmlopP)) + (its-define-hangul "wha" "$(CA;(B" kijuhynbmlopP) + (its-define-hangul "whq" "$(CA<(B" kijuhynbmlopP) + (its-define-hangul "wht" "$(CA=(B" kijuhynbmlopOP) + (its-define-hangul "whd" "$(CA>(B" kijuhynbmlopOP) + (its-define-hangul "whw" "$(CA?(B" kijuhynbmlopOP) + (its-define-hangul "whc" "$(CA@(B" kijuhynbmlopP) + (its-define-hangul "whg" "$(CAA(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "whk" "$(CAB(B" + (its-define-hangul "whkr" "$(CAC(B" kijuhynbmlopOP) + (its-define-hangul "whkf" "$(CAD(B" kijuhynbmlopP) + (its-define-hangul "whkq" "$(CAE(B" kijuhynbmlopP) + (its-define-hangul "whkt" "$(CAF(B" kijuhynbmlopOP) + (its-define-hangul "whkd" "$(CAG(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "who" "$(CAH(B" + (its-define-hangul "whoT" "$(CAI(B" kjhynmlop) + (its-define-hangul "whod" "$(CAJ(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "whl" "$(CAK(B" + (its-define-hangul "whls" "$(CAL(B" kijuhynbmlopP) + (its-define-hangul "whlf" "$(CAM(B" kijuhynbmlopP) + (its-define-hangul "whla" "$(CAN(B" kijuhynbmlopP) + (its-define-hangul "whlq" "$(CAO(B" kijuhynbmlopP) + (its-define-hangul "whlt" "$(CAP(B" kijuhynbmlopOP) + (its-define-hangul "whld" "$(CAQ(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wy" "$(CAR(B" + (its-define-hangul "wyr" "$(CAS(B" kijuhynbmlopOP) + (its-define-hangul "wys" "$(CAT(B" kijuhynbmlopP) + (its-define-hangul "wyd" "$(CAU(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wn" "$(CAV(B" + (its-define-hangul "wnr" "$(CAW(B" kijuhynbmlopOP) + (its-define-hangul "wns" "$(CAX(B" kijuhynbmlopP) + (its-define-hangul "wnf" "$(CAY(B" kijuhynbmlopP + (its-define-hangul "wnfr" "$(CAZ(B" kijuhynbmlopOP) + (its-define-hangul "wnfa" "$(CA[(B" kijuhynbmlopP)) + (its-define-hangul "wna" "$(CA\(B" kijuhynbmlopP) + (its-define-hangul "wnq" "$(CA](B" kijuhynbmlopP) + (its-define-hangul "wnt" "$(CA^(B" kijuhynbmlopOP) + (its-define-hangul "wnd" "$(CA_(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wnj" "$(CA`(B" + (its-define-hangul "wnjT" "$(CAa(B" kjhynmlop)) + + (its-defrule-hangul "wnp" "$(CAb(B") + + (its-defrule-hangul-2 "wnl" "$(CAc(B" + (its-define-hangul "wnlr" "$(CAd(B" kijuhynbmlopOP) + (its-define-hangul "wnls" "$(CAe(B" kijuhynbmlopP) + (its-define-hangul "wnlf" "$(CAf(B" kijuhynbmlopP) + (its-define-hangul "wnla" "$(CAg(B" kijuhynbmlopP) + (its-define-hangul "wnlq" "$(CAh(B" kijuhynbmlopP) + (its-define-hangul "wnlt" "$(CAi(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wb" "$(CAj(B" + (its-define-hangul "wbs" "$(CAk(B" kijuhynbmlopP) + (its-define-hangul "wbf" "$(CAl(B" kijuhynbmlopP) + (its-define-hangul "wba" "$(CAm(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "wm" "$(CAn(B" + (its-define-hangul "wmr" "$(CAo(B" kijuhynbmlopOP) + (its-define-hangul "wms" "$(CAp(B" kijuhynbmlopP) + (its-define-hangul "wmf" "$(CAq(B" kijuhynbmlopP) + (its-define-hangul "wma" "$(CAr(B" kijuhynbmlopP) + (its-define-hangul "wmq" "$(CAs(B" kijuhynbmlopP) + (its-define-hangul "wmt" "$(CAt(B" kijuhynbmlopOP) + (its-define-hangul "wmd" "$(CAu(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "wl" "$(CAv(B" + (its-define-hangul "wlr" "$(CAw(B" kijuhynbmlopOP) + (its-define-hangul "wls" "$(CAx(B" kijuhynbmlopP) + (its-define-hangul "wle" "$(CAy(B" kijuhynbmlopP) + (its-define-hangul "wlf" "$(CAz(B" kijuhynbmlopP + (its-define-hangul "wlfa" "$(CA{(B" kijuhynbmlopP)) + (its-define-hangul "wla" "$(CA|(B" kijuhynbmlopP) + (its-define-hangul "wlq" "$(CA}(B" kijuhynbmlopP) + (its-define-hangul "wlt" "$(CA~(B" kijuhynbmlopOP) + (its-define-hangul "wld" "$(CB!(B" kijuhynbmlopOP) + (its-define-hangul "wlw" "$(CB"(B" kijuhynbmlopOP) + (its-define-hangul "wlx" "$(CB#(B" kijuhynbmlopP) + (its-define-hangul "wlv" "$(CB$(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Wk" "$(CB%(B" + (its-define-hangul "Wkr" "$(CB&(B" kijuhynbmlopOP) + (its-define-hangul "Wks" "$(CB'(B" kijuhynbmlopP + (its-define-hangul "Wksg" "$(CB((B" kijuhynbmlopP)) + (its-define-hangul "Wkf" "$(CB)(B" kijuhynbmlopP + (its-define-hangul "Wkfq" "$(CB*(B" kijuhynbmlopP)) + (its-define-hangul "Wka" "$(CB+(B" kijuhynbmlopP) + (its-define-hangul "Wkq" "$(CB,(B" kijuhynbmlopP) + (its-define-hangul "Wkt" "$(CB-(B" kijuhynbmlopOP) + (its-define-hangul "WkT" "$(CB.(B" kjhynmlop) + (its-define-hangul "Wkd" "$(CB/(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wo" "$(CB0(B" + (its-define-hangul "Wor" "$(CB1(B" kijuhynbmlopOP) + (its-define-hangul "Wos" "$(CB2(B" kijuhynbmlopP) + (its-define-hangul "Wof" "$(CB3(B" kijuhynbmlopP) + (its-define-hangul "Woa" "$(CB4(B" kijuhynbmlopP) + (its-define-hangul "Woq" "$(CB5(B" kijuhynbmlopP) + (its-define-hangul "Wot" "$(CB6(B" kijuhynbmlopOP) + (its-define-hangul "WoT" "$(CB7(B" kjhynmlop) + (its-define-hangul "Wod" "$(CB8(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wi" "$(CB9(B" + (its-define-hangul "Wis" "$(CB:(B" kijuhynbmlopP) + (its-define-hangul "Wid" "$(CB;(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wj" "$(CB<(B" + (its-define-hangul "Wjr" "$(CB=(B" kijuhynbmlopOP) + (its-define-hangul "Wjs" "$(CB>(B" kijuhynbmlopP) + (its-define-hangul "Wjf" "$(CB?(B" kijuhynbmlopP) + (its-define-hangul "Wja" "$(CB@(B" kijuhynbmlopP) + (its-define-hangul "Wjq" "$(CBA(B" kijuhynbmlopP) + (its-define-hangul "Wjt" "$(CBB(B" kijuhynbmlopOP) + (its-define-hangul "WjT" "$(CBC(B" kjhynmlop) + (its-define-hangul "Wjd" "$(CBD(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wp" "$(CBE(B" + (its-define-hangul "Wpd" "$(CBF(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wu" "$(CBG(B" + (its-define-hangul "WuT" "$(CBH(B" kjhynmlop)) + + (its-defrule-hangul-2 "Wh" "$(CBI(B" + (its-define-hangul "Whr" "$(CBJ(B" kijuhynbmlopOP) + (its-define-hangul "Whs" "$(CBK(B" kijuhynbmlopP) + (its-define-hangul "Whf" "$(CBL(B" kijuhynbmlopP) + (its-define-hangul "Wha" "$(CBM(B" kijuhynbmlopP) + (its-define-hangul "Whq" "$(CBN(B" kijuhynbmlopP) + (its-define-hangul "Wht" "$(CBO(B" kijuhynbmlopOP) + (its-define-hangul "Whd" "$(CBP(B" kijuhynbmlopOP) + (its-define-hangul "Whc" "$(CBQ(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "Whk" "$(CBR(B" + (its-define-hangul "Whkr" "$(CBS(B" kijuhynbmlopOP) + (its-define-hangul "Whkf" "$(CBT(B" kijuhynbmlopP) + (its-define-hangul "WhkT" "$(CBU(B" kjhynmlop)) + + (its-defrule-hangul-2 "Who" "$(CBV(B" + (its-define-hangul "WhoT" "$(CBW(B" kjhynmlop)) + + (its-defrule-hangul-2 "Whl" "$(CBX(B" + (its-define-hangul "Whls" "$(CBY(B" kijuhynbmlopP) + (its-define-hangul "Whlf" "$(CBZ(B" kijuhynbmlopP) + (its-define-hangul "Whla" "$(CB[(B" kijuhynbmlopP) + (its-define-hangul "Whlq" "$(CB\(B" kijuhynbmlopP)) + + (its-defrule-hangul "Wy" "$(C$9(By") + (its-defrule-hangul "Wyd" "$(CB](B") + + (its-defrule-hangul-2 "Wn" "$(CB^(B" + (its-define-hangul "Wnr" "$(CB_(B" kijuhynbmlopOP) + (its-define-hangul "Wns" "$(CB`(B" kijuhynbmlopP) + (its-define-hangul "Wnf" "$(CBa(B" kijuhynbmlopP) + (its-define-hangul "Wna" "$(CBb(B" kijuhynbmlopP) + (its-define-hangul "Wnq" "$(CBc(B" kijuhynbmlopP) + (its-define-hangul "Wnd" "$(CBd(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wnj" "$(CBe(B" + (its-define-hangul "WnjT" "$(CBf(B" kjhynmlop) + (its-define-hangul "Wnjd" "$(CBg(B" kijuhynbmlopOP)) + + (its-defrule-hangul "Wnl" "$(CBh(B") + + (its-defrule-hangul "Wb" "$(CBi(B") + + (its-defrule-hangul-2 "Wm" "$(CBj(B" + (its-define-hangul "Wma" "$(CBk(B" kijuhynbmlopP) + (its-define-hangul "Wmt" "$(CBl(B" kijuhynbmlopOP) + (its-define-hangul "Wmd" "$(CBm(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "Wl" "$(CBn(B" + (its-define-hangul "Wlr" "$(CBo(B" kijuhynbmlopOP) + (its-define-hangul "Wls" "$(CBp(B" kijuhynbmlopP) + (its-define-hangul "Wlf" "$(CBq(B" kijuhynbmlopP) + (its-define-hangul "Wla" "$(CBr(B" kijuhynbmlopP) + (its-define-hangul "Wlq" "$(CBs(B" kijuhynbmlopP) + (its-define-hangul "Wld" "$(CBt(B" kijuhynbmlopOP) + (its-define-hangul "Wlw" "$(CBu(B" kijuhynbmlopOP) + (its-define-hangul "Wlg" "$(CBv(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ck" "$(CBw(B" + (its-define-hangul "ckr" "$(CBx(B" kijuhynbmlopOP) + (its-define-hangul "cks" "$(CBy(B" kijuhynbmlopP + (its-define-hangul "cksg" "$(CBz(B" kijuhynbmlopP)) + (its-define-hangul "ckf" "$(CB{(B" kijuhynbmlopP) + (its-define-hangul "cka" "$(CB|(B" kijuhynbmlopP) + (its-define-hangul "ckq" "$(CB}(B" kijuhynbmlopP) + (its-define-hangul "ckt" "$(CB~(B" kijuhynbmlopOP) + (its-define-hangul "ckT" "$(CC!(B" kjhynmlop) + (its-define-hangul "ckd" "$(CC"(B" kijuhynbmlopOP) + (its-define-hangul "ckw" "$(CC#(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "co" "$(CC$(B" + (its-define-hangul "cor" "$(CC%(B" kijuhynbmlopOP) + (its-define-hangul "cos" "$(CC&(B" kijuhynbmlopP) + (its-define-hangul "cof" "$(CC'(B" kijuhynbmlopP) + (its-define-hangul "coa" "$(CC((B" kijuhynbmlopP) + (its-define-hangul "coq" "$(CC)(B" kijuhynbmlopP) + (its-define-hangul "cot" "$(CC*(B" kijuhynbmlopOP) + (its-define-hangul "coT" "$(CC+(B" kjhynmlop) + (its-define-hangul "cod" "$(CC,(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ci" "$(CC-(B" + (its-define-hangul "cis" "$(CC.(B" kijuhynbmlopP + (its-define-hangul "cisg" "$(CC/(B" kijuhynbmlopP)) + (its-define-hangul "cif" "$(CC0(B" kijuhynbmlopP) + (its-define-hangul "cia" "$(CC1(B" kijuhynbmlopP) + (its-define-hangul "cid" "$(CC2(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cj" "$(CC3(B" + (its-define-hangul "cjr" "$(CC4(B" kijuhynbmlopOP) + (its-define-hangul "cjs" "$(CC5(B" kijuhynbmlopP) + (its-define-hangul "cjf" "$(CC6(B" kijuhynbmlopP) + (its-define-hangul "cja" "$(CC7(B" kijuhynbmlopP) + (its-define-hangul "cjq" "$(CC8(B" kijuhynbmlopP) + (its-define-hangul "cjt" "$(CC9(B" kijuhynbmlopOP) + (its-define-hangul "cjT" "$(CC:(B" kjhynmlop) + (its-define-hangul "cjd" "$(CC;(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cp" "$(CC<(B" + (its-define-hangul "cpr" "$(CC=(B" kijuhynbmlopOP) + (its-define-hangul "cps" "$(CC>(B" kijuhynbmlopP) + (its-define-hangul "cpf" "$(CC?(B" kijuhynbmlopP) + (its-define-hangul "cpa" "$(CC@(B" kijuhynbmlopP) + (its-define-hangul "cpq" "$(CCA(B" kijuhynbmlopP) + (its-define-hangul "cpt" "$(CCB(B" kijuhynbmlopOP) + (its-define-hangul "cpd" "$(CCC(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cu" "$(CCD(B" + (its-define-hangul "cus" "$(CCE(B" kijuhynbmlopP) + (its-define-hangul "cuT" "$(CCF(B" kjhynmlop)) + + (its-defrule-hangul-2 "cP" "$(CCG(B" + (its-define-hangul "cPs" "$(CCH(B" kijuhynbmlopP) + (its-define-hangul "cPd" "$(CCI(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ch" "$(CCJ(B" + (its-define-hangul "chr" "$(CCK(B" kijuhynbmlopOP) + (its-define-hangul "chs" "$(CCL(B" kijuhynbmlopP) + (its-define-hangul "chf" "$(CCM(B" kijuhynbmlopP) + (its-define-hangul "cha" "$(CCN(B" kijuhynbmlopP) + (its-define-hangul "chq" "$(CCO(B" kijuhynbmlopP) + (its-define-hangul "cht" "$(CCP(B" kijuhynbmlopOP) + (its-define-hangul "chd" "$(CCQ(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "chk" "$(CCR(B" + (its-define-hangul "chks" "$(CCS(B" kijuhynbmlopP) + (its-define-hangul "chkf" "$(CCT(B" kijuhynbmlopP) + (its-define-hangul "chkd" "$(CCU(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "chl" "$(CCV(B" + (its-define-hangul "chls" "$(CCW(B" kijuhynbmlopP) + (its-define-hangul "chlf" "$(CCX(B" kijuhynbmlopP) + (its-define-hangul "chla" "$(CCY(B" kijuhynbmlopP) + (its-define-hangul "chlq" "$(CCZ(B" kijuhynbmlopP) + (its-define-hangul "chlt" "$(CC[(B" kijuhynbmlopOP) + (its-define-hangul "chld" "$(CC\(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cy" "$(CC](B" + (its-define-hangul "cya" "$(CC^(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "cn" "$(CC_(B" + (its-define-hangul "cnr" "$(CC`(B" kijuhynbmlopOP) + (its-define-hangul "cns" "$(CCa(B" kijuhynbmlopP) + (its-define-hangul "cnf" "$(CCb(B" kijuhynbmlopP) + (its-define-hangul "cna" "$(CCc(B" kijuhynbmlopP) + (its-define-hangul "cnq" "$(CCd(B" kijuhynbmlopP) + (its-define-hangul "cnt" "$(CCe(B" kijuhynbmlopOP) + (its-define-hangul "cnd" "$(CCf(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cnj" "$(CCg(B" + (its-define-hangul "cnjT" "$(CCh(B" kjhynmlop)) + + (its-defrule-hangul-2 "cnp" "$(CCi(B" + (its-define-hangul "cnps" "$(CCj(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "cnl" "$(CCk(B" + (its-define-hangul "cnls" "$(CCl(B" kijuhynbmlopP) + (its-define-hangul "cnlf" "$(CCm(B" kijuhynbmlopP) + (its-define-hangul "cnla" "$(CCn(B" kijuhynbmlopP) + (its-define-hangul "cnlq" "$(CCo(B" kijuhynbmlopP) + (its-define-hangul "cnlt" "$(CCp(B" kijuhynbmlopOP) + (its-define-hangul "cnld" "$(CCq(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cb" "$(CCr(B" + (its-define-hangul "cbs" "$(CCs(B" kijuhynbmlopP) + (its-define-hangul "cbf" "$(CCt(B" kijuhynbmlopP) + (its-define-hangul "cba" "$(CCu(B" kijuhynbmlopP) + (its-define-hangul "cbd" "$(CCv(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cm" "$(CCw(B" + (its-define-hangul "cmr" "$(CCx(B" kijuhynbmlopOP) + (its-define-hangul "cms" "$(CCy(B" kijuhynbmlopP) + (its-define-hangul "cmf" "$(CCz(B" kijuhynbmlopP) + (its-define-hangul "cma" "$(CC{(B" kijuhynbmlopP) + (its-define-hangul "cmq" "$(CC|(B" kijuhynbmlopP) + (its-define-hangul "cmt" "$(CC}(B" kijuhynbmlopOP) + (its-define-hangul "cmd" "$(CC~(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "cl" "$(CD!(B" + (its-define-hangul "clr" "$(CD"(B" kijuhynbmlopOP) + (its-define-hangul "cls" "$(CD#(B" kijuhynbmlopP) + (its-define-hangul "cle" "$(CD$(B" kijuhynbmlopP) + (its-define-hangul "clf" "$(CD%(B" kijuhynbmlopP + (its-define-hangul "clfr" "$(CD&(B" kijuhynbmlopOP)) + (its-define-hangul "cla" "$(CD'(B" kijuhynbmlopP) + (its-define-hangul "clq" "$(CD((B" kijuhynbmlopP) + (its-define-hangul "clt" "$(CD)(B" kijuhynbmlopOP) + (its-define-hangul "cld" "$(CD*(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zk" "$(CD+(B" + (its-define-hangul "zkr" "$(CD,(B" kijuhynbmlopOP) + (its-define-hangul "zks" "$(CD-(B" kijuhynbmlopP) + (its-define-hangul "zkf" "$(CD.(B" kijuhynbmlopP) + (its-define-hangul "zka" "$(CD/(B" kijuhynbmlopP) + (its-define-hangul "zkq" "$(CD0(B" kijuhynbmlopP) + (its-define-hangul "zkt" "$(CD1(B" kijuhynbmlopOP) + (its-define-hangul "zkd" "$(CD2(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zo" "$(CD3(B" + (its-define-hangul "zor" "$(CD4(B" kijuhynbmlopOP) + (its-define-hangul "zos" "$(CD5(B" kijuhynbmlopP) + (its-define-hangul "zof" "$(CD6(B" kijuhynbmlopP) + (its-define-hangul "zoa" "$(CD7(B" kijuhynbmlopP) + (its-define-hangul "zoq" "$(CD8(B" kijuhynbmlopP) + (its-define-hangul "zot" "$(CD9(B" kijuhynbmlopOP) + (its-define-hangul "zoT" "$(CD:(B" kjhynmlop) + (its-define-hangul "zod" "$(CD;(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zi" "$(CD<(B" + (its-define-hangul "zir" "$(CD=(B" kijuhynbmlopOP) + (its-define-hangul "zid" "$(CD>(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zj" "$(CD?(B" + (its-define-hangul "zjr" "$(CD@(B" kijuhynbmlopOP) + (its-define-hangul "zjs" "$(CDA(B" kijuhynbmlopP) + (its-define-hangul "zje" "$(CDB(B" kijuhynbmlopP) + (its-define-hangul "zjf" "$(CDC(B" kijuhynbmlopP) + (its-define-hangul "zja" "$(CDD(B" kijuhynbmlopP) + (its-define-hangul "zjq" "$(CDE(B" kijuhynbmlopP) + (its-define-hangul "zjt" "$(CDF(B" kijuhynbmlopOP) + (its-define-hangul "zjT" "$(CDG(B" kjhynmlop) + (its-define-hangul "zjd" "$(CDH(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zp" "$(CDI(B" + (its-define-hangul "zpr" "$(CDJ(B" kijuhynbmlopOP) + (its-define-hangul "zps" "$(CDK(B" kijuhynbmlopP) + (its-define-hangul "zpf" "$(CDL(B" kijuhynbmlopP) + (its-define-hangul "zpa" "$(CDM(B" kijuhynbmlopP) + (its-define-hangul "zpq" "$(CDN(B" kijuhynbmlopP) + (its-define-hangul "zpt" "$(CDO(B" kijuhynbmlopOP) + (its-define-hangul "zpd" "$(CDP(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zu" "$(CDQ(B" + (its-define-hangul "zus" "$(CDR(B" kijuhynbmlopP) + (its-define-hangul "zuf" "$(CDS(B" kijuhynbmlopP) + (its-define-hangul "zua" "$(CDT(B" kijuhynbmlopP) + (its-define-hangul "zuq" "$(CDU(B" kijuhynbmlopP) + (its-define-hangul "zut" "$(CDV(B" kijuhynbmlopOP) + (its-define-hangul "zuT" "$(CDW(B" kjhynmlop) + (its-define-hangul "zud" "$(CDX(B" kijuhynbmlopOP)) + + (its-defrule-hangul "zP" "$(CDY(B") + + (its-defrule-hangul-2 "zh" "$(CDZ(B" + (its-define-hangul "zhr" "$(CD[(B" kijuhynbmlopOP) + (its-define-hangul "zhs" "$(CD\(B" kijuhynbmlopP) + (its-define-hangul "zhf" "$(CD](B" kijuhynbmlopP) + (its-define-hangul "zha" "$(CD^(B" kijuhynbmlopP) + (its-define-hangul "zhq" "$(CD_(B" kijuhynbmlopP) + (its-define-hangul "zht" "$(CD`(B" kijuhynbmlopOP) + (its-define-hangul "zhd" "$(CDa(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zhk" "$(CDb(B" + (its-define-hangul "zhkr" "$(CDc(B" kijuhynbmlopOP) + (its-define-hangul "zhks" "$(CDd(B" kijuhynbmlopP) + (its-define-hangul "zhkf" "$(CDe(B" kijuhynbmlopP) + (its-define-hangul "zhka" "$(CDf(B" kijuhynbmlopP) + (its-define-hangul "zhkd" "$(CDg(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zho" "$(CDh(B" + (its-define-hangul "zhod" "$(CDi(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zhl" "$(CDj(B" + (its-define-hangul "zhlf" "$(CDk(B" kijuhynbmlopP)) + + (its-defrule-hangul "zy" "$(CDl(B") + + (its-defrule-hangul-2 "zn" "$(CDm(B" + (its-define-hangul "znr" "$(CDn(B" kijuhynbmlopOP) + (its-define-hangul "znf" "$(CDp(B" kijuhynbmlopP) + (its-define-hangul "zna" "$(CDq(B" kijuhynbmlopP) + (its-define-hangul "znq" "$(CDr(B" kijuhynbmlopP) + (its-define-hangul "znt" "$(CDs(B" kijuhynbmlopOP) + (its-define-hangul "znd" "$(CDt(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "znj" "$(CDu(B" + (its-define-hangul "znjs" "$(CDv(B" kijuhynbmlopP) + (its-define-hangul "znjf" "$(CDw(B" kijuhynbmlopP) + (its-define-hangul "znjd" "$(CDx(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "znp" "$(CDy(B" + (its-define-hangul "znpd" "$(CDz(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "znl" "$(CD{(B" + (its-define-hangul "znlr" "$(CD|(B" kijuhynbmlopOP) + (its-define-hangul "znls" "$(CD}(B" kijuhynbmlopP) + (its-define-hangul "znlf" "$(CD~(B" kijuhynbmlopP) + (its-define-hangul "znla" "$(CE!(B" kijuhynbmlopP) + (its-define-hangul "znlq" "$(CE"(B" kijuhynbmlopP) + (its-define-hangul "znlt" "$(CE#(B" kijuhynbmlopOP) + (its-define-hangul "znld" "$(CE$(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zb" "$(CE%(B" + (its-define-hangul "zbs" "$(CE&(B" kijuhynbmlopP) + (its-define-hangul "zbf" "$(CE'(B" kijuhynbmlopP) + (its-define-hangul "zba" "$(CE((B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "zm" "$(CE)(B" + (its-define-hangul "zmr" "$(CE*(B" kijuhynbmlopOP) + (its-define-hangul "zms" "$(CE+(B" kijuhynbmlopP) + (its-define-hangul "zmf" "$(CE,(B" kijuhynbmlopP) + (its-define-hangul "zma" "$(CE-(B" kijuhynbmlopP) + (its-define-hangul "zmq" "$(CE.(B" kijuhynbmlopP) + (its-define-hangul "zmd" "$(CE/(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "zl" "$(CE0(B" + (its-define-hangul "zlr" "$(CE1(B" kijuhynbmlopOP) + (its-define-hangul "zls" "$(CE2(B" kijuhynbmlopP) + (its-define-hangul "zlf" "$(CE3(B" kijuhynbmlopP) + (its-define-hangul "zla" "$(CE4(B" kijuhynbmlopP) + (its-define-hangul "zlq" "$(CE5(B" kijuhynbmlopP) + (its-define-hangul "zlt" "$(CE6(B" kijuhynbmlopOP) + (its-define-hangul "zld" "$(CE7(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xk" "$(CE8(B" + (its-define-hangul "xkr" "$(CE9(B" kijuhynbmlopOP) + (its-define-hangul "xks" "$(CE:(B" kijuhynbmlopP) + (its-define-hangul "xkf" "$(CE;(B" kijuhynbmlopP + (its-define-hangul "xkfr" "$(CE<(B" kijuhynbmlopOP)) + (its-define-hangul "xka" "$(CE=(B" kijuhynbmlopP) + (its-define-hangul "xkq" "$(CE>(B" kijuhynbmlopP) + (its-define-hangul "xkt" "$(CE?(B" kijuhynbmlopOP) + (its-define-hangul "xkT" "$(CE@(B" kjhynmlop) + (its-define-hangul "xkd" "$(CEA(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xo" "$(CEB(B" + (its-define-hangul "xor" "$(CEC(B" kijuhynbmlopOP) + (its-define-hangul "xos" "$(CED(B" kijuhynbmlopP) + (its-define-hangul "xof" "$(CEE(B" kijuhynbmlopP) + (its-define-hangul "xoa" "$(CEF(B" kijuhynbmlopP) + (its-define-hangul "xoq" "$(CEG(B" kijuhynbmlopP) + (its-define-hangul "xot" "$(CEH(B" kijuhynbmlopOP) + (its-define-hangul "xoT" "$(CEI(B" kjhynmlop) + (its-define-hangul "xod" "$(CEJ(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xi" "$(CEK(B" + (its-define-hangul "xid" "$(CEL(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xj" "$(CEM(B" + (its-define-hangul "xjr" "$(CEN(B" kijuhynbmlopOP) + (its-define-hangul "xjs" "$(CEO(B" kijuhynbmlopP) + (its-define-hangul "xjf" "$(CEP(B" kijuhynbmlopP + (its-define-hangul "xjfa" "$(CEQ(B" kijuhynbmlopP)) + (its-define-hangul "xja" "$(CER(B" kijuhynbmlopP) + (its-define-hangul "xjq" "$(CES(B" kijuhynbmlopP) + (its-define-hangul "xjt" "$(CET(B" kijuhynbmlopOP) + (its-define-hangul "xjT" "$(CEU(B" kjhynmlop) + (its-define-hangul "xjd" "$(CEV(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xp" "$(CEW(B" + (its-define-hangul "xpr" "$(CEX(B" kijuhynbmlopOP) + (its-define-hangul "xps" "$(CEY(B" kijuhynbmlopP) + (its-define-hangul "xpf" "$(CEZ(B" kijuhynbmlopP) + (its-define-hangul "xpa" "$(CE[(B" kijuhynbmlopP) + (its-define-hangul "xpq" "$(CE\(B" kijuhynbmlopP) + (its-define-hangul "xpt" "$(CE](B" kijuhynbmlopOP) + (its-define-hangul "xpd" "$(CE^(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xu" "$(CE_(B" + (its-define-hangul "xus" "$(CE`(B" kijuhynbmlopP) + (its-define-hangul "xuT" "$(CEa(B" kjhynmlop)) + + (its-defrule-hangul-2 "xP" "$(CEb(B" + (its-define-hangul "xPs" "$(CEc(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "xh" "$(CEd(B" + (its-define-hangul "xhr" "$(CEe(B" kijuhynbmlopOP) + (its-define-hangul "xhs" "$(CEf(B" kijuhynbmlopP) + (its-define-hangul "xhf" "$(CEg(B" kijuhynbmlopP) + (its-define-hangul "xha" "$(CEh(B" kijuhynbmlopP) + (its-define-hangul "xhq" "$(CEi(B" kijuhynbmlopP) + (its-define-hangul "xht" "$(CEj(B" kijuhynbmlopOP) + (its-define-hangul "xhd" "$(CEk(B" kijuhynbmlopOP) + (its-define-hangul "xhv" "$(CEl(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "xhk" "$(CEm(B" + (its-define-hangul "xhks" "$(CEn(B" kijuhynbmlopP)) + + (its-defrule-hangul "xho" "$(CEo(B") + + (its-defrule-hangul-2 "xhl" "$(CEp(B" + (its-define-hangul "xhls" "$(CEq(B" kijuhynbmlopP) + (its-define-hangul "xhlt" "$(CEr(B" kijuhynbmlopOP) + (its-define-hangul "xhld" "$(CEs(B" kijuhynbmlopOP)) + + (its-defrule-hangul "xy" "$(CEt(B") + + (its-defrule-hangul-2 "xn" "$(CEu(B" + (its-define-hangul "xnr" "$(CEv(B" kijuhynbmlopOP) + (its-define-hangul "xns" "$(CEw(B" kijuhynbmlopP) + (its-define-hangul "xnf" "$(CEx(B" kijuhynbmlopP) + (its-define-hangul "xna" "$(CEy(B" kijuhynbmlopP) + (its-define-hangul "xnq" "$(CEz(B" kijuhynbmlopP) + (its-define-hangul "xnt" "$(CE{(B" kijuhynbmlopOP) + (its-define-hangul "xnd" "$(CE|(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xnj" "$(CE}(B" + (its-define-hangul "xnjT" "$(CE~(B" kjhynmlop)) + + (its-defrule-hangul "xnp" "$(CF!(B") + + (its-defrule-hangul-2 "xnl" "$(CF"(B" + (its-define-hangul "xnlr" "$(CF#(B" kijuhynbmlopOP) + (its-define-hangul "xnls" "$(CF$(B" kijuhynbmlopP) + (its-define-hangul "xnlf" "$(CF%(B" kijuhynbmlopP) + (its-define-hangul "xnla" "$(CF&(B" kijuhynbmlopP) + (its-define-hangul "xnlq" "$(CF'(B" kijuhynbmlopP) + (its-define-hangul "xnld" "$(CF((B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xb" "$(CF)(B" + (its-define-hangul "xbs" "$(CF*(B" kijuhynbmlopP) + (its-define-hangul "xbf" "$(CF+(B" kijuhynbmlopP) + (its-define-hangul "xba" "$(CF,(B" kijuhynbmlopP) + (its-define-hangul "xbd" "$(CF-(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xm" "$(CF.(B" + (its-define-hangul "xmr" "$(CF/(B" kijuhynbmlopOP) + (its-define-hangul "xms" "$(CF0(B" kijuhynbmlopP) + (its-define-hangul "xme" "$(CF1(B" kijuhynbmlopP) + (its-define-hangul "xmf" "$(CF2(B" kijuhynbmlopP + (its-define-hangul "xmfa" "$(CF3(B" kijuhynbmlopP)) + (its-define-hangul "xma" "$(CF4(B" kijuhynbmlopP) + (its-define-hangul "xmq" "$(CF5(B" kijuhynbmlopP) + (its-define-hangul "xmt" "$(CF6(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "xml" "$(CF7(B" + (its-define-hangul "xmls" "$(CF8(B" kijuhynbmlopP) + (its-define-hangul "xmlf" "$(CF9(B" kijuhynbmlopP) + (its-define-hangul "xmla" "$(CF:(B" kijuhynbmlopP) + (its-define-hangul "xmlq" "$(CF;(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "xl" "$(CF<(B" + (its-define-hangul "xlr" "$(CF=(B" kijuhynbmlopOP) + (its-define-hangul "xls" "$(CF>(B" kijuhynbmlopP) + (its-define-hangul "xlf" "$(CF?(B" kijuhynbmlopP) + (its-define-hangul "xla" "$(CF@(B" kijuhynbmlopP) + (its-define-hangul "xlq" "$(CFA(B" kijuhynbmlopP) + (its-define-hangul "xlt" "$(CFB(B" kijuhynbmlopOP) + (its-define-hangul "xld" "$(CFC(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vk" "$(CFD(B" + (its-define-hangul "vkr" "$(CFE(B" kijuhynbmlopOP) + (its-define-hangul "vkR" "$(CFF(B" kijuhynbmlopP) + (its-define-hangul "vks" "$(CFG(B" kijuhynbmlopP) + (its-define-hangul "vkf" "$(CFH(B" kijuhynbmlopP + (its-define-hangul "vkfa" "$(CFI(B" kijuhynbmlopP)) + (its-define-hangul "vka" "$(CFJ(B" kijuhynbmlopP) + (its-define-hangul "vkq" "$(CFK(B" kijuhynbmlopP) + (its-define-hangul "vkt" "$(CFL(B" kijuhynbmlopOP) + (its-define-hangul "vkT" "$(CFM(B" kjhynmlop) + (its-define-hangul "vkd" "$(CFN(B" kijuhynbmlopOP) + (its-define-hangul "vkx" "$(CFO(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "vo" "$(CFP(B" + (its-define-hangul "vor" "$(CFQ(B" kijuhynbmlopOP) + (its-define-hangul "vos" "$(CFR(B" kijuhynbmlopP) + (its-define-hangul "vof" "$(CFS(B" kijuhynbmlopP) + (its-define-hangul "voa" "$(CFT(B" kijuhynbmlopP) + (its-define-hangul "voq" "$(CFU(B" kijuhynbmlopP) + (its-define-hangul "vot" "$(CFV(B" kijuhynbmlopOP) + (its-define-hangul "voT" "$(CFW(B" kjhynmlop) + (its-define-hangul "vod" "$(CFX(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vi" "$(CFY(B" + (its-define-hangul "vir" "$(CFZ(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vj" "$(CF[(B" + (its-define-hangul "vjr" "$(CF\(B" kijuhynbmlopOP) + (its-define-hangul "vjs" "$(CF](B" kijuhynbmlopP) + (its-define-hangul "vja" "$(CF_(B" kijuhynbmlopP) + (its-define-hangul "vjq" "$(CF`(B" kijuhynbmlopP) + (its-define-hangul "vjt" "$(CFa(B" kijuhynbmlopOP) + (its-define-hangul "vjT" "$(CFb(B" kjhynmlop) + (its-define-hangul "vjd" "$(CFc(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vp" "$(CFd(B" + (its-define-hangul "vpr" "$(CFe(B" kijuhynbmlopOP) + (its-define-hangul "vps" "$(CFf(B" kijuhynbmlopP) + (its-define-hangul "vpf" "$(CFg(B" kijuhynbmlopP) + (its-define-hangul "vpa" "$(CFh(B" kijuhynbmlopP) + (its-define-hangul "vpq" "$(CFi(B" kijuhynbmlopP) + (its-define-hangul "vpt" "$(CFj(B" kijuhynbmlopOP) + (its-define-hangul "vpd" "$(CFk(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vu" "$(CFl(B" + (its-define-hangul "vus" "$(CFm(B" kijuhynbmlopP) + (its-define-hangul "vuf" "$(CFn(B" kijuhynbmlopP) + (its-define-hangul "vua" "$(CFo(B" kijuhynbmlopP) + (its-define-hangul "vuq" "$(CFp(B" kijuhynbmlopP) + (its-define-hangul "vuT" "$(CFq(B" kjhynmlop) + (its-define-hangul "vud" "$(CFr(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vP" "$(CFs(B" + (its-define-hangul "vPf" "$(CFt(B" kijuhynbmlopP) + (its-define-hangul "vPq" "$(CFu(B" kijuhynbmlopP) + (its-define-hangul "vPt" "$(CFv(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vh" "$(CFw(B" + (its-define-hangul "vhr" "$(CFx(B" kijuhynbmlopOP) + (its-define-hangul "vhs" "$(CFy(B" kijuhynbmlopP) + (its-define-hangul "vhf" "$(CFz(B" kijuhynbmlopP) + (its-define-hangul "vha" "$(CF{(B" kijuhynbmlopP) + (its-define-hangul "vhq" "$(CF|(B" kijuhynbmlopP) + (its-define-hangul "vht" "$(CF}(B" kijuhynbmlopOP) + (its-define-hangul "vhd" "$(CF~(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vhk" "$(CG!(B" + (its-define-hangul "vhkd" "$(CG"(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vhl" "$(CG#(B" + (its-define-hangul "vhls" "$(CG$(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "vy" "$(CG%(B" + (its-define-hangul "vys" "$(CG&(B" kijuhynbmlopP) + (its-define-hangul "vyf" "$(CG'(B" kijuhynbmlopP) + (its-define-hangul "vyq" "$(CG((B" kijuhynbmlopP) + (its-define-hangul "vyt" "$(CG)(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vn" "$(CG*(B" + (its-define-hangul "vnr" "$(CG+(B" kijuhynbmlopOP) + (its-define-hangul "vns" "$(CG,(B" kijuhynbmlopP) + (its-define-hangul "vne" "$(CG-(B" kijuhynbmlopP) + (its-define-hangul "vnf" "$(CG.(B" kijuhynbmlopP + (its-define-hangul "vnfa" "$(CG/(B" kijuhynbmlopP)) + (its-define-hangul "vna" "$(CG0(B" kijuhynbmlopP) + (its-define-hangul "vnq" "$(CG1(B" kijuhynbmlopP) + (its-define-hangul "vnt" "$(CG2(B" kijuhynbmlopOP) + (its-define-hangul "vnd" "$(CG3(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vnj" "$(CG4(B" + (its-define-hangul "vnjd" "$(CG5(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vnl" "$(CG6(B" + (its-define-hangul "vnls" "$(CG7(B" kijuhynbmlopP) + (its-define-hangul "vnlf" "$(CG8(B" kijuhynbmlopP) + (its-define-hangul "vnla" "$(CG9(B" kijuhynbmlopP) + (its-define-hangul "vnlt" "$(CG:(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vb" "$(CG;(B" + (its-define-hangul "vbs" "$(CG<(B" kijuhynbmlopP) + (its-define-hangul "vbf" "$(CG=(B" kijuhynbmlopP) + (its-define-hangul "vba" "$(CG>(B" kijuhynbmlopP) + (its-define-hangul "vbt" "$(CG?(B" kijuhynbmlopOP) + (its-define-hangul "vbd" "$(CG@(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vm" "$(CGA(B" + (its-define-hangul "vms" "$(CGB(B" kijuhynbmlopP) + (its-define-hangul "vmf" "$(CGC(B" kijuhynbmlopP) + (its-define-hangul "vma" "$(CGD(B" kijuhynbmlopP) + (its-define-hangul "vmq" "$(CGE(B" kijuhynbmlopP) + (its-define-hangul "vmt" "$(CGF(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "vl" "$(CGG(B" + (its-define-hangul "vlr" "$(CGH(B" kijuhynbmlopOP) + (its-define-hangul "vls" "$(CGI(B" kijuhynbmlopP) + (its-define-hangul "vlf" "$(CGJ(B" kijuhynbmlopP) + (its-define-hangul "vla" "$(CGK(B" kijuhynbmlopP) + (its-define-hangul "vlq" "$(CGL(B" kijuhynbmlopP) + (its-define-hangul "vlt" "$(CGM(B" kijuhynbmlopOP) + (its-define-hangul "vld" "$(CGN(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gk" "$(CGO(B" + (its-define-hangul "gkr" "$(CGP(B" kijuhynbmlopOP) + (its-define-hangul "gks" "$(CGQ(B" kijuhynbmlopP) + (its-define-hangul "gkf" "$(CGR(B" kijuhynbmlopP + (its-define-hangul "gkfx" "$(CGS(B" kijuhynbmlopP)) + (its-define-hangul "gka" "$(CGT(B" kijuhynbmlopP) + (its-define-hangul "gkq" "$(CGU(B" kijuhynbmlopP) + (its-define-hangul "gkt" "$(CGV(B" kijuhynbmlopOP) + (its-define-hangul "gkd" "$(CGW(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "go" "$(CGX(B" + (its-define-hangul "gor" "$(CGY(B" kijuhynbmlopOP) + (its-define-hangul "gos" "$(CGZ(B" kijuhynbmlopP) + (its-define-hangul "gof" "$(CG[(B" kijuhynbmlopP) + (its-define-hangul "goa" "$(CG\(B" kijuhynbmlopP) + (its-define-hangul "goq" "$(CG](B" kijuhynbmlopP) + (its-define-hangul "got" "$(CG^(B" kijuhynbmlopOP) + (its-define-hangul "goT" "$(CG_(B" kjhynmlop) + (its-define-hangul "god" "$(CG`(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gi" "$(CGa(B" + (its-define-hangul "gid" "$(CGb(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gj" "$(CGc(B" + (its-define-hangul "gjr" "$(CGd(B" kijuhynbmlopOP) + (its-define-hangul "gjs" "$(CGe(B" kijuhynbmlopP) + (its-define-hangul "gjf" "$(CGf(B" kijuhynbmlopP + (its-define-hangul "gjfa" "$(CGg(B" kijuhynbmlopP)) + (its-define-hangul "gja" "$(CGh(B" kijuhynbmlopP) + (its-define-hangul "gjq" "$(CGi(B" kijuhynbmlopP) + (its-define-hangul "gjt" "$(CGj(B" kijuhynbmlopOP) + (its-define-hangul "gjd" "$(CGk(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gp" "$(CGl(B" + (its-define-hangul "gpr" "$(CGm(B" kijuhynbmlopOP) + (its-define-hangul "gps" "$(CGn(B" kijuhynbmlopP) + (its-define-hangul "gpf" "$(CGo(B" kijuhynbmlopP) + (its-define-hangul "gpa" "$(CGp(B" kijuhynbmlopP) + (its-define-hangul "gpq" "$(CGq(B" kijuhynbmlopP) + (its-define-hangul "gpt" "$(CGr(B" kijuhynbmlopOP) + (its-define-hangul "gpd" "$(CGs(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gu" "$(CGt(B" + (its-define-hangul "gur" "$(CGu(B" kijuhynbmlopOP) + (its-define-hangul "gus" "$(CGv(B" kijuhynbmlopP) + (its-define-hangul "guf" "$(CGw(B" kijuhynbmlopP) + (its-define-hangul "gua" "$(CGx(B" kijuhynbmlopP) + (its-define-hangul "guq" "$(CGy(B" kijuhynbmlopP) + (its-define-hangul "gut" "$(CGz(B" kijuhynbmlopOP) + (its-define-hangul "guT" "$(CG{(B" kjhynmlop) + (its-define-hangul "gud" "$(CG|(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gP" "$(CG}(B" + (its-define-hangul "gPs" "$(CG~(B" kijuhynbmlopP) + (its-define-hangul "gPf" "$(CH!(B" kijuhynbmlopP) + (its-define-hangul "gPq" "$(CH"(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "gh" "$(CH#(B" + (its-define-hangul "ghr" "$(CH$(B" kijuhynbmlopOP) + (its-define-hangul "ghs" "$(CH%(B" kijuhynbmlopP) + (its-define-hangul "ghf" "$(CH&(B" kijuhynbmlopP + (its-define-hangul "ghfx" "$(CH'(B" kijuhynbmlopP)) + (its-define-hangul "gha" "$(CH((B" kijuhynbmlopP) + (its-define-hangul "ghq" "$(CH)(B" kijuhynbmlopP) + (its-define-hangul "ght" "$(CH*(B" kijuhynbmlopOP) + (its-define-hangul "ghd" "$(CH+(B" kijuhynbmlopOP) + (its-define-hangul "ghx" "$(CH,(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "ghk" "$(CH-(B" + (its-define-hangul "ghkr" "$(CH.(B" kijuhynbmlopOP) + (its-define-hangul "ghks" "$(CH/(B" kijuhynbmlopP) + (its-define-hangul "ghkf" "$(CH0(B" kijuhynbmlopP) + (its-define-hangul "ghkt" "$(CH1(B" kijuhynbmlopOP) + (its-define-hangul "ghkd" "$(CH2(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gho" "$(CH3(B" + (its-define-hangul "ghor" "$(CH4(B" kijuhynbmlopOP) + (its-define-hangul "ghos" "$(CH5(B" kijuhynbmlopP) + (its-define-hangul "ghot" "$(CH6(B" kijuhynbmlopOP) + (its-define-hangul "ghod" "$(CH7(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "ghl" "$(CH8(B" + (its-define-hangul "ghlr" "$(CH9(B" kijuhynbmlopOP) + (its-define-hangul "ghls" "$(CH:(B" kijuhynbmlopP) + (its-define-hangul "ghlf" "$(CH;(B" kijuhynbmlopP) + (its-define-hangul "ghlq" "$(CH<(B" kijuhynbmlopP) + (its-define-hangul "ghlt" "$(CH=(B" kijuhynbmlopOP) + (its-define-hangul "ghld" "$(CH>(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gy" "$(CH?(B" + (its-define-hangul "gys" "$(CH@(B" kijuhynbmlopP) + (its-define-hangul "gyf" "$(CHA(B" kijuhynbmlopP) + (its-define-hangul "gyq" "$(CHB(B" kijuhynbmlopP) + (its-define-hangul "gyt" "$(CHC(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gn" "$(CHD(B" + (its-define-hangul "gnr" "$(CHE(B" kijuhynbmlopOP) + (its-define-hangul "gns" "$(CHF(B" kijuhynbmlopP) + (its-define-hangul "gnf" "$(CHG(B" kijuhynbmlopP + (its-define-hangul "gnfx" "$(CHH(B" kijuhynbmlopP)) + (its-define-hangul "gna" "$(CHI(B" kijuhynbmlopP) + (its-define-hangul "gnt" "$(CHJ(B" kijuhynbmlopOP) + (its-define-hangul "gnd" "$(CHK(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gnj" "$(CHL(B" + (its-define-hangul "gnjs" "$(CHM(B" kijuhynbmlopP) + (its-define-hangul "gnjf" "$(CHN(B" kijuhynbmlopP) + (its-define-hangul "gnja" "$(CHO(B" kijuhynbmlopP) + (its-define-hangul "gnjd" "$(CHP(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gnp" "$(CHQ(B" + (its-define-hangul "gnpr" "$(CHR(B" kijuhynbmlopOP) + (its-define-hangul "gnps" "$(CHS(B" kijuhynbmlopP) + (its-define-hangul "gnpf" "$(CHT(B" kijuhynbmlopP) + (its-define-hangul "gnpd" "$(CHU(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gnl" "$(CHV(B" + (its-define-hangul "gnlr" "$(CHW(B" kijuhynbmlopOP) + (its-define-hangul "gnls" "$(CHX(B" kijuhynbmlopP) + (its-define-hangul "gnlf" "$(CHY(B" kijuhynbmlopP) + (its-define-hangul "gnla" "$(CHZ(B" kijuhynbmlopP) + (its-define-hangul "gnlq" "$(CH[(B" kijuhynbmlopP) + (its-define-hangul "gnlt" "$(CH\(B" kijuhynbmlopOP) + (its-define-hangul "gnld" "$(CH](B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gb" "$(CH^(B" + (its-define-hangul "gbr" "$(CH_(B" kijuhynbmlopOP) + (its-define-hangul "gbs" "$(CH`(B" kijuhynbmlopP) + (its-define-hangul "gbf" "$(CHa(B" kijuhynbmlopP) + (its-define-hangul "gba" "$(CHb(B" kijuhynbmlopP) + (its-define-hangul "gbt" "$(CHc(B" kijuhynbmlopOP) + (its-define-hangul "gbd" "$(CHd(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gm" "$(CHe(B" + (its-define-hangul "gmr" "$(CHf(B" kijuhynbmlopOP) + (its-define-hangul "gms" "$(CHg(B" kijuhynbmlopP + (its-define-hangul "gmsg" "$(CHh(B" kijuhynbmlopP)) + (its-define-hangul "gme" "$(CHi(B" kijuhynbmlopP) + (its-define-hangul "gmf" "$(CHj(B" kijuhynbmlopP + (its-define-hangul "gmfr" "$(CHk(B" kijuhynbmlopOP)) + (its-define-hangul "gma" "$(CHl(B" kijuhynbmlopP) + (its-define-hangul "gmq" "$(CHm(B" kijuhynbmlopP) + (its-define-hangul "gmt" "$(CHn(B" kijuhynbmlopOP) + (its-define-hangul "gmd" "$(CHo(B" kijuhynbmlopOP) + (its-define-hangul "gmx" "$(CHp(B" kijuhynbmlopP)) + + (its-defrule-hangul-2 "gml" "$(CHq(B" + (its-define-hangul "gmls" "$(CHr(B" kijuhynbmlopP) + (its-define-hangul "gmlf" "$(CHs(B" kijuhynbmlopP) + (its-define-hangul "gmla" "$(CHt(B" kijuhynbmlopP) + (its-define-hangul "gmlq" "$(CHu(B" kijuhynbmlopP) + (its-define-hangul "gmld" "$(CHv(B" kijuhynbmlopOP)) + + (its-defrule-hangul-2 "gl" "$(CHw(B" + (its-define-hangul "glr" "$(CHx(B" kijuhynbmlopOP) + (its-define-hangul "gls" "$(CHy(B" kijuhynbmlopP) + (its-define-hangul "glf" "$(CHz(B" kijuhynbmlopP) + (its-define-hangul "gla" "$(CH{(B" kijuhynbmlopP) + (its-define-hangul "glq" "$(CH|(B" kijuhynbmlopP) + (its-define-hangul "glt" "$(CH}(B" kijuhynbmlopOP) + (its-define-hangul "gld" "$(CH~(B" kijuhynbmlopOP)) + + ;;; Jeonkak Symbols + + (its-defrule "1" "$(C#1(B") + (its-defrule "2" "$(C#2(B") + (its-defrule "3" "$(C#3(B") + (its-defrule "4" "$(C#4(B") + (its-defrule "5" "$(C#5(B") + (its-defrule "6" "$(C#6(B") + (its-defrule "7" "$(C#7(B") + (its-defrule "8" "$(C#8(B") + (its-defrule "9" "$(C#9(B") + (its-defrule "0" "$(C#0(B") + + ;;(its-defrule " " "$(C!!(B") + (its-defrule "!" "$(C#!(B") + (its-defrule "@" "$(C#@(B") + (its-defrule "#" "$(C##(B") + (its-defrule "$" "$(C#$(B") + (its-defrule "%" "$(C#%(B") + (its-defrule "^" "$(C#^(B") + (its-defrule "&" "$(C#&(B") + (its-defrule "*" "$(C#*(B") + (its-defrule "(" "$(C#((B") + (its-defrule ")" "$(C#)(B") + (its-defrule "-" "$(C#-(B") + (its-defrule "=" "$(C#=(B") + (its-defrule "`" "$(C#`(B") + (its-defrule "\\" "$(C#\(B") + (its-defrule "|" "$(C#|(B") + (its-defrule "_" "$(C#_(B") + (its-defrule "+" "$(C#+(B") + (its-defrule "~" "$(C#~(B") + (its-defrule "[" "$(C!8(B");;(its-defrule "[" "$(C#[(B") + (its-defrule "]" "$(C!9(B");;(its-defrule "]" "$(C#](B") + (its-defrule "{" "$(C#{(B") + (its-defrule "}" "$(C#}(B") + (its-defrule ":" "$(C#:(B") + (its-defrule ";" "$(C#;(B") + (its-defrule "\"" "$(C#"(B") + (its-defrule "'" "$(C#'(B") + (its-defrule "<" "$(C#<(B") + (its-defrule ">" "$(C#>(B") + (its-defrule "?" "$(C#?(B") + (its-defrule "/" "$(C#/(B") + (its-defrule "," "$(C#,(B") + (its-defrule "." "$(C#.(B") + + (its-defrule (concat its-jeonkak-escape " ") "$(C!!(B") + (let ((i ?!)) + (while (<= i ?~) + (its-defrule (concat its-jeonkak-escape (char-to-string i)) + (char-to-string (+ (- ?$(C#!(B ?!) i))) + (setq i (1+ i)))) + + ;;; pankak + (let ((i ?!)) + (while (<= i ?~) + (its-defrule (concat its-pankak-escape (char-to-string i)) + (char-to-string i)) + (setq i (1+ i))))) + +(define-its-state-machine-append its-hangul-map + (its-defrule "[" its-hangul-open-bracket nil t) + (its-defrule "]" its-hangul-close-bracket nil t) + ) + +(provide 'its/hangul) diff --git a/its/hira.el b/its/hira.el index 617ee50..a08cec9 100644 --- a/its/hira.el +++ b/its/hira.el @@ -1,6 +1,6 @@ ;;; its/hira.el --- Hiragana Input in Egg Input Method Architecture -;; Copyright (C) 1997 Mule Project, +;; Copyright (C) 1997, 1998 Mule Project, ;; Powered by Electrotechnical Laboratory, JAPAN. ;; Project Leader: Satoru Tomura @@ -45,8 +45,11 @@ (defvar its-hira-horizontal "$B!<(B" "*-") ; "$B!](B" (define-its-state-machine its-hira-map - "roma-kana" "$B$"(B" + "roma-kana" "$B$"(B" "Japanese" nil "Map for Romaji-Hiragana translation. (Japanese)" + (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs + (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs + ;;; k k ;;; kk $B$C(Bk ;;; kka $B$C$+(B @@ -482,4 +485,5 @@ (its-defrule "/" "/"))) ) +(provide 'its/hira) ;;; its/hira.el ends here. diff --git a/its/pinyin.el b/its/pinyin.el new file mode 100644 index 0000000..9d3505d --- /dev/null +++ b/its/pinyin.el @@ -0,0 +1,347 @@ +(eval-when-compile + (require 'its) + (require 'cl)) + +(defvar its-pinyin-cn-open-braket "$A!8(B" "*[") ; "$A#[(B" +(defvar its-pinyin-cn-close-braket "$A!9(B" "*]") ; "$A#](B" + +(defvar its-pinyin-tw-open-braket "$(G!V(B" "*[") ; "$(G!b(B " +(defvar its-pinyin-tw-close-braket "$(G!W(B" "*]") ; "$(G!c(B" + +(eval-when-compile + (defvar its-quanjiao-escape "Z") + (defvar its-banjiao-escape "X") + + (defconst its-pinyin-term + (char-to-string (make-char 'chinese-sisheng ?@))) + + (defsubst its-defoutput* (input display) + (its-set-output (its-goto-state input nil t) display)) + + (defun its-prev-terminal-state (input) + (let ((len (length input)) + (state (its-get-start-state its-current-map)) + (i 0) (ret nil) kst ks) + (while (and (< i len) + (setq state (its-get-next-state state (aref input i)))) + (if (or (null (its-kst-p (setq kst (its-get-kst/t state)))) + (mapcan (lambda (eob) (if (eq (its-eob-back eob) -1) (list t))) + (cdr kst)) + (and (setq ks (assq -1 (car kst))) + (null (its-get-kst/t (cdr ks))))) + (setq ret state)) + (setq i (1+ i))) + ret)) + + (defun its-define-qingsheng (shengmu yunmu &optional s y) + (let ((input (concat shengmu yunmu)) + (output (concat (if s s (capitalize shengmu)) + (if y y yunmu) + its-pinyin-term)) + state term kst i len c+b) + (setq state (its-goto-state input nil t)) + (its-make-next-state state -1 input output) + (its-make-next-state state ? (concat input " ") output) + (its-make-next-state state ?0 (concat input "0") output) + (its-define-otherwise + state (its-make-otherwise output its-otherwise-back-one)) + (setq term (its-prev-terminal-state (substring input 0 -1))) + (if term + (progn + (setq len (length (its-get-keyseq term)) + i len + output (car (rassoc '(nil . -1) (cdr (its-get-kst/t term))))) + (while (null + (eq (setq term (its-get-next-state term (aref input i))) + state)) + (setq i (1+ i) kst (its-get-kst/t term)) + (if (null (assq -1 (car kst))) + (its-make-next-state term -1 + (its-get-keyseq term) output (- len i))) + (setq c+b (its-make-class+back nil (1- (- len i)))) + (if (null (rassoc c+b (cdr kst))) + (its-define-otherwise term + (its-make-otherwise output c+b)))))) + state)) + + (defmacro its-do-sisheng-table (list) + `(progn ,@(mapcar (lambda (syl) + `(its-define-sisheng ,(car syl) ,(cdr syl))) + list))) + + (defmacro its-define-sisheng (shengmu yunmu) + `(let ((qing (nth 5 ,yunmu)) (y (car ,yunmu)) + (ss (list ,@shengmu)) s cs state i) + (while ss + (setq s (car ss) + cs (capitalize s) + state (its-define-qingsheng s y cs qing)) + (setq i 1) + (while (<= i 4) + (its-make-next-state state (+ ?0 i) + (concat s y i) + (concat cs (nth i ,yunmu) its-pinyin-term)) + (setq i (1+ i))) + (setq ss (cdr ss))))) + + (defmacro its-define-pinyin-table () + '(let ((- "") (B "b") (C "c") (D "d") (F "f") (G "g") (H "h") + (J "j") (K "k") (L "l") (M "m") (N "n") (P "p") (Q "q") + (R "r") (S "s") (T "t") (W "w") (X "x") (Y "y") (Z "z") + (CH "ch") (SH "sh") (ZH "zh") + + (A '("a" "(0!(B" "(0"(B" "(0#(B" "(0$(B" "a" )) + (AI '("ai" "(0!(Bi" "(0"(Bi" "(0#(Bi" "(0$(Bi" "ai" )) + (AN '("an" "(0!(Bn" "(0"(Bn" "(0#(Bn" "(0$(Bn" "an" )) + (ANG '("ang" "(0!(Bng" "(0"(Bng" "(0#(Bng" "(0$(Bng" "ang" )) + (AO '("ao" "(0!(Bo" "(0"(Bo" "(0#(Bo" "(0$(Bo" "ao" )) + (E '("e" "(0%(B" "(0&(B" "(0'(B" "(0((B" "e" )) + (EI '("ei" "(0%(Bi" "(0&(Bi" "(0'(Bi" "(0((Bi" "ei" )) + (EN '("en" "(0%(Bn" "(0&(Bn" "(0'(Bn" "(0((Bn" "en" )) + (ENG '("eng" "(0%(Bng" "(0&(Bng" "(0'(Bng" "(0((Bng" "eng" )) + (ER '("er" "(0%(Br" "(0&(Br" "(0'(Br" "(0((Br" "er" )) + (I '("i" "(0)(B" "(0*(B" "(0+(B" "(0,(B" "i" )) + (IA '("ia" "i(0!(B" "i(0"(B" "i(0#(B" "i(0$(B" "ia" )) + (IAN '("ian" "i(0!(Bn" "i(0"(Bn" "i(0#(Bn" "i(0$(Bn" "ian" )) + (IANG '("iang" "i(0!(Bng" "i(0"(Bng" "i(0#(Bng" "i(0$(Bng" "iang")) + (IAO '("iao" "i(0!(Bo" "i(0"(Bo" "i(0#(Bo" "i(0$(Bo" "iao" )) + (IE '("ie" "i(0%(B" "i(0&(B" "i(0'(B" "i(0((B" "ie" )) + (IN '("in" "(0)(Bn" "(0*(Bn" "(0+(Bn" "(0,(Bn" "in" )) + (ING '("ing" "(0)(Bng" "(0*(Bng" "(0+(Bng" "(0,(Bng" "ing" )) + (IONG '("iong" "i(0-(Bng" "i(0.(Bng" "i(0/(Bng" "i(00(Bng" "iong")) + (IU '("iu" "i(01(B" "i(02(B" "i(03(B" "i(04(B" "iu" )) + (O '("o" "(0-(B" "(0.(B" "(0/(B" "(00(B" "o" )) + (ONG '("ong" "(0-(Bng" "(0.(Bng" "(0/(Bng" "(00(Bng" "ong" )) + (OU '("ou" "(0-(Bu" "(0.(Bu" "(0/(Bu" "(00(Bu" "ou" )) + (U '("u" "(01(B" "(02(B" "(03(B" "(04(B" "u" )) + (V '("v" "(05(B" "(06(B" "(07(B" "(08(B" "(09(B" )) + (UA '("ua" "u(0!(B" "u(0"(B" "u(0#(B" "u(0$(B" "ua" )) + (UAI '("uai" "u(0!(Bi" "u(0"(Bi" "u(0#(Bi" "u(0$(Bi" "uai" )) + (UAN '("uan" "u(0!(Bn" "u(0"(Bn" "u(0#(Bn" "u(0$(Bn" "uan" )) + (UANG '("uang" "u(0!(Bng" "u(0"(Bng" "u(0#(Bng" "u(0$(Bng" "uang")) + (UE '("ue" "u(0%(B" "u(0&(B" "u(0'(B" "u(0((B" "ue" )) + (VE '("ve" "(09%(B" "(09&(B" "(09'(B" "(09((B" "(09(Be" )) + (UI '("ui" "u(0)(B" "u(0*(B" "u(0+(B" "u(0,(B" "ui" )) + (UN '("un" "(01(Bn" "(02(Bn" "(03(Bn" "(04(Bn" "un" )) + (UO '("uo" "u(0-(B" "u(0.(B" "u(0/(B" "u(00(B" "uo" ))) + + (its-do-sisheng-table + (((- B C D F G H K L M N P S T W Y Z CH SH ZH ) . A) + ((- B C D G H K L M N P S T W Z CH SH ZH ) . AI) + ((- B C D F G H K L M N P R S T W Y Z CH SH ZH ) . AN) + ((- B C D F G H K L M N P R S T W Y Z CH SH ZH ) . ANG) + ((- B C D G H K L M N P R S T Y Z CH SH ZH ) . AO) + ((- C D G H K L M N R S T Y Z CH SH ZH ) . E) + ((- B C D F G H K L M N P T W Z SH ZH ) . EI) + ((- B C D F G H K M N P R S W Z CH SH ZH ) . EN) + ((- B C D F G H K L M N P R S T W Z CH SH ZH ) . ENG) + ((- ) . ER) + (( B C D J L M N P Q R S T X Y Z CH SH ZH ) . I) + (( D J L Q X ) . IA) + (( B D J L M N P Q T X ) . IAN) + (( J L N Q X ) . IANG) + (( B D J L M N P Q T X ) . IAO) + (( B D J L M N P Q T X ) . IE) + (( B J L M N P Q X Y ) . IN) + (( B D J L M N P Q T X Y ) . ING) + (( J Q X ) . IONG) + (( D J L M N Q X ) . IU) + ((- B F L M P W Y ) . O) + (( C D G H K L N R S T Y Z CH ZH ) . ONG) + ((- C D F G H K L M N P R S T Y Z CH SH ZH ) . OU) + (( B C D F G H J K L M N P Q R S T W X Y Z CH SH ZH ) . U) + (( L N ) . V) + (( G H K R CH SH ZH ) . UA) + (( G H K CH SH ZH ) . UAI) + (( C D G H J K L N Q R S T X Y Z CH SH ZH ) . UAN) + (( G H K CH SH ZH ) . UANG) + (( J Q X Y ) . UE) + (( L N ) . VE) + (( C D G H K R S T Z CH SH ZH ) . UI) + (( C D G H J K L Q R S T X Y Z CH SH ZH ) . UN) + (( C D G H K L N R S T Z CH SH ZH ) . UO) + + ((J Q X) . (cons "a" (cdr IA ))) + ((J Q X) . (cons "ai" (cdr IA ))) + ((J Q X) . (cons "an" (cdr IAN ))) + ((J Q X) . (cons "ang" (cdr IANG))) + ((J Q X) . (cons "ao" (cdr IAO ))) + ((J Q X) . (cons "e" (cdr IE ))) + ((J Q X) . (cons "ei" (cdr IE ))) + ((J Q X) . (cons "en" (cdr IN ))) + ((J Q X) . (cons "eng" (cdr ING ))) + ((J Q X) . (cons "ou" (cdr IU ))))) + + (its-define-qingsheng "hm" "") + (its-define-qingsheng "hng" "") + (its-define-qingsheng "" "ng") + + (its-define-qingsheng "" "m") + (its-define-qingsheng "" "n") + (its-defrule "n2" "(0=@(B") + (its-defrule "n3" "(0>@(B") + (its-defrule "n4" "(0?@(B")))) + +(define-its-state-machine its-pinyin-cn-map + "pinyin-cn" "$AF4(BG" "Chinese-GB" + "Map for Pinyin input. (Chinese-GB)" + (its-define-pinyin-table) + (its-defoutput* "b " "$A2;(B") + (its-defoutput* "c " "$A2E(B") + (its-defoutput* "ch " "$A3v(B") + (its-defoutput* "d " "$A5D(B") + (its-defoutput* "f " "$A74(B") + (its-defoutput* "g " "$A8v(B") + (its-defoutput* "h " "$A:M(B") + (its-defoutput* "i " "$AR;(B") + (its-defoutput* "j " "$A>M(B") + (its-defoutput* "k " "$A?I(B") + (its-defoutput* "l " "$AAK(B") + (its-defoutput* "m " "$AC?(B") + (its-defoutput* "n " "$ADj(B") + (its-defoutput* "p " "$AEz(B") + (its-defoutput* "q " "$AH%(B") + (its-defoutput* "r " "$AHU(B") + (its-defoutput* "s " "$AJG(B") + (its-defoutput* "sh " "$AIO(B") + (its-defoutput* "t " "$AK{(B") + (its-defoutput* "w " "$ANR(B") + (its-defoutput* "x " "$AOr(B") + (its-defoutput* "y " "$ASV(B") + (its-defoutput* "z " "$ATZ(B") + (its-defoutput* "zh " "$AWE(B") + + (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") + ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") + ("8" . "$A#8(B") ("9" . "$A#9(B") + (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") + ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") + ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") + ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") + ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") + ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") + (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") + ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") + ("," . "$A#,(B") ("." . "$A#.(B") + ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") + ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") + ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") + ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") + ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") + ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") + ("y" . "$A#y(B") ("z" . "$A#z(B") + ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") + ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") + ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") + ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") + ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") + ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") + ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) + (let ((in (car ascii)) (out (cdr ascii))) + (if (and (or (string< in "a") (string< "z" in)) + (null (equal in " ")) + (null (equal in its-banjiao-escape)) + (null (equal in its-quanjiao-escape))) + (progn + (its-defrule in in) + (its-defrule (concat (downcase its-banjiao-escape) in) in) + (its-defrule (concat (downcase its-quanjiao-escape) in) out))) + (its-defrule (concat its-banjiao-escape in) in) + (its-defrule (concat its-quanjiao-escape in) out))) + + (its-defrule "," "$A#,(B" nil t) + (its-defrule "." "$A!#(B" nil t) + (its-defrule "/" "$A!"(B" nil t) + (its-defrule ":" "$A#:(B" nil t) + (its-defrule ";" "$A#;(B" nil t) + (its-defrule "?" "$A#?(B" nil t) + (its-defrule "!" "$A#!(B" nil t) + (its-defrule "-" "$A!*(B" nil t)) + +(define-its-state-machine its-pinyin-tw-map + "pinyin-tw" "$(GQ;(BC" "Chinese-CNS" + "Map for Pinyin input." + (its-define-pinyin-table) + (its-defoutput* "b " "$(GDb(B") + (its-defoutput* "c " "$(GD_(B") + (its-defoutput* "ch " "$(GEx(B") + (its-defoutput* "d " "$(GN{(B") + (its-defoutput* "f " "$(GE0(B") + (its-defoutput* "g " "$(GT6(B") + (its-defoutput* "h " "$(GLO(B") + (its-defoutput* "i " "$(GD!(B") + (its-defoutput* "j " "$(G^s(B") + (its-defoutput* "k " "$(GF+(B") + (its-defoutput* "l " "$(GD'(B") + (its-defoutput* "m " "$(GJd(B") + (its-defoutput* "n " "$(GH!(B") + (its-defoutput* "p " "$(GJG(B") + (its-defoutput* "q " "$(GF*(B") + (its-defoutput* "r " "$(GEJ(B") + (its-defoutput* "s " "$(GQR(B") + (its-defoutput* "sh " "$(GD8(B") + (its-defoutput* "t " "$(GEl(B") + (its-defoutput* "w " "$(GJ<(B") + (its-defoutput* "x " "$(GGW(B") + (its-defoutput* "y " "$(GD4(B") + (its-defoutput* "z " "$(GGc(B") + (its-defoutput* "zh " "$(Gaa(B") + + (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") + ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") + ("8" . "$(G$)(B") ("9" . "$(G$*(B") + (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") + ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") + ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") + ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"b(B") + ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") + ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$A#{(B") ("}" . "$(G!a(B") + (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") + ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"a(B") + ("," . "$(G!"(B") ("." . "$(G!%(B") + ("a" . "$(G$[(B") ("b" . "$(G$\(B") ("c" . "$(G$](B") ("d" . "$(G$^(B") + ("e" . "$(G$_(B") ("f" . "$(G$`(B") ("g" . "$(G$a(B") ("h" . "$(G$b(B") + ("i" . "$(G$c(B") ("j" . "$(G$d(B") ("k" . "$(G$e(B") ("l" . "$(G$f(B") + ("m" . "$(G$g(B") ("n" . "$(G$h(B") ("o" . "$(G$i(B") ("p" . "$(G$j(B") + ("q" . "$(G$k(B") ("r" . "$(G$l(B") ("s" . "$(G$m(B") ("t" . "$(G$n(B") + ("u" . "$(G$o(B") ("v" . "$(G$p(B") ("w" . "$(G$q(B") ("x" . "$(G$r(B") + ("y" . "$(G$s(B") ("z" . "$(G$t(B") + ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") + ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") + ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") + ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") + ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") + ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") + ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) + (let ((in (car ascii)) (out (cdr ascii))) + (if (and (or (string< in "a") (string< "z" in)) + (null (equal in " ")) + (null (equal in its-banjiao-escape)) + (null (equal in its-quanjiao-escape))) + (progn + (its-defrule in in) + (its-defrule (concat (downcase its-banjiao-escape) in) in) + (its-defrule (concat (downcase its-quanjiao-escape) in) out))) + (its-defrule (concat its-banjiao-escape in) in) + (its-defrule (concat its-quanjiao-escape in) out))) + + (its-defrule "," "$(G!"(B" nil t) + (its-defrule "." "$(G!$(B" nil t) + (its-defrule "/" "$(G!#(B" nil t) + (its-defrule ":" "$(G!((B" nil t) + (its-defrule ";" "$(G!'(B" nil t) + (its-defrule "?" "$(G!)(B" nil t) + (its-defrule "!" "$(G!*(B" nil t) + (its-defrule "-" "$(G"1(B" nil t) + (its-defrule "[" "$(G!V(B" nil t) + (its-defrule "]" "$(G!W(B" nil t)) + +(define-its-state-machine-append its-pinyin-cn-map + (its-defrule "[" its-pinyin-cn-open-braket nil t) + (its-defrule "]" its-pinyin-cn-close-braket nil t)) + +(define-its-state-machine-append its-pinyin-tw-map + (its-defrule "[" its-pinyin-tw-open-braket nil t) + (its-defrule "]" its-pinyin-tw-close-braket nil t)) + +(provide 'its/pinyin) diff --git a/leim-list-egg.el b/leim-list-egg.el index d360439..ed5a5d7 100644 --- a/leim-list-egg.el +++ b/leim-list-egg.el @@ -1,4 +1,39 @@ ;;; Tamago + +(autoload 'egg-activate-wnn "egg/wnn" "Activate Wnn backend of Tamagotchy." t) +(autoload 'egg-activate-sj3 "egg/sj3" "Activate SJ3 backend of Tamagotchy." t) + (register-input-method - "egg-ja" "Japanese" 'egg-mode - "A$(B$"(B" "Romaji -> Hiragana -> Kanji&Kana") + "japanese-egg-wnn" "Japanese" 'egg-activate-wnn + "A$B$"(B" "Romaji -> Hiragana -> Kanji&Kana") + +(register-input-method + "japanese-egg-sj3" "Japanese" 'egg-activate-sj3 + "A$B$"(B" "Romaji -> Hiragana -> Kanji&Kana") + +(register-input-method + "chinese-gb-egg-wnn-py" "Chinese-GB" 'egg-activate-wnn + 'egg-mode-line-title "Pinyin -> Simplified Hanzi" + 'its-select-pinyin-cn "Chinese-GB") + +(register-input-method + "chinese-gb-egg-wnn-zy" "Chinese-GB" 'egg-activate-wnn + 'egg-mode-line-title "Zhunyin -> Simplified Hanzi" + 'its-select-zhuyin-cn "Chinese-GB") + +(register-input-method + "chinese-cns-egg-wnn-py" "Chinese-CNS" 'egg-activate-wnn + 'egg-mode-line-title "Pinyin -> Traditional Hanzi" + 'its-select-pinyin-tw "Chinese-CNS") + +(register-input-method + "chinese-cns-egg-wnn-zy" "Chinese-CNS" 'egg-activate-wnn + 'egg-mode-line-title "Zhunyin -> Traditional Hanzi" + 'its-select-zhuyin-tw "Chinese-CNS") + +(register-input-method + "korean-egg-wnn" "Korean" 'egg-activate-wnn + 'egg-mode-line-title "Hangul -> Hanja" + 'its-select-hangul "Korean") + +(autoload 'egg-mode "egg" "Toggle EGG mode." t) diff --git a/menudiag.el b/menudiag.el index f9caf06..a8a57de 100644 --- a/menudiag.el +++ b/menudiag.el @@ -51,7 +51,11 @@ (defvar menudiag-mode-map (let ((map (make-keymap)) (ch 0)) - (while (< ch 127) + (while (< ch 27) + (define-key map (char-to-string ch) 'undefined) + (setq ch (1+ ch))) + (setq ch 28) + (while (< ch 255) (define-key map (char-to-string ch) 'undefined) (setq ch (1+ ch))) (setq ch ?0) @@ -68,6 +72,8 @@ (setq ch (1+ ch))) (define-key map "\C-a" 'menudiag-beginning-of-line) (define-key map "\C-e" 'menudiag-end-of-line) + (define-key map "\M-<" 'menudiag-beginning-of-items) + (define-key map "\M->" 'menudiag-end-of-items) (define-key map "\C-f" 'menudiag-forward-item) (define-key map "\C-b" 'menudiag-backward-item) (define-key map "\C-n" 'menudiag-next-line) @@ -77,8 +83,8 @@ (define-key map "\C-l" 'menudiag-redraw) (define-key map "\C-m" 'menudiag-select-this-item) (define-key map [return] 'menudiag-select-this-item) - (define-key map [left] 'menudiag-forward-item) - (define-key map [right] 'menudiag-backward-item) + (define-key map [left] 'menudiag-backward-item) + (define-key map [right] 'menudiag-forward-item) (define-key map [up] 'menudiag-previous-line) (define-key map [down] 'menudiag-next-line) (define-key map [menudiag-continuation] 'menudiag-follow-continuation) @@ -177,19 +183,39 @@ (mapconcat (function (lambda (item) (setq i (1+ i)) - (format " %x.%s" i (menudiag-item-string item)))) + (format " %c.%s" (menudiag-item-num-to-char i) + (menudiag-item-string item)))) item-list ""))) + +;; ITEM No --> Character +(defun menudiag-item-num-to-char (num) + (let ((char)) + (cond ((<= num 9) + (setq char (+ ?0 num))) + (t + (setq char (+ ?a (- num 10)))) + ) + char)) + +;; Character --> ITEM No +(defun menudiag-char-to-item-num (char) + (let ((num)) + (cond ((and (<= ?0 ch) (<= ch ?9)) + (setq num (- ch ?0))) + ((and (<= ?a ch) (<= ch ?z)) + (setq num (+ 10 (- ch ?a)))) + ((and (<= ?A ch) (<= ch ?Z)) + (setq num (+ 10 (- ch ?A)))) + (t (setq num 1000))) + num)) + + (defun menudiag-goto-item () (interactive) (let ((ch last-command-char) (n 0)) - (cond ((and (<= ?0 ch) (<= ch ?9)) - (setq n (- ch ?0))) - ((and (<= ?a ch) (<= ch ?z)) - (setq n (+ 10 (- ch ?a)))) - ((and (<= ?A ch) (<= ch ?Z)) - (setq n (+ 10 (- ch ?A))))) + (setq n (menudiag-char-to-item-num ch)) (if (>= n (length line)) (error "No such item") (menudiag-goto-item-internal n)))) @@ -204,6 +230,16 @@ (setq i (1+ i))) (goto-char p))) +(defun menudiag-beginning-of-items () + (interactive) + (menudiag-goto-line 0) + (menudiag-beginning-of-line)) + +(defun menudiag-end-of-items () + (interactive) + (menudiag-goto-line (1- (length selection-list))) + (menudiag-end-of-line)) + (defun menudiag-beginning-of-line () (interactive) (menudiag-goto-item-internal 0)) -- 1.7.10.4