diff options
| -rw-r--r-- | ext/bg/lang/deinflect.json | 4163 | ||||
| -rw-r--r-- | test/test-deinflector.js | 826 | 
2 files changed, 1322 insertions, 3667 deletions
| diff --git a/ext/bg/lang/deinflect.json b/ext/bg/lang/deinflect.json index a0b6baa1..914c9947 100644 --- a/ext/bg/lang/deinflect.json +++ b/ext/bg/lang/deinflect.json @@ -1,3731 +1,560 @@  {      "-ba": [ -        { -            "kanaIn": "えば", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "けば", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "げば", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "せば", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "てば", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ねば", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "べば", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "めば", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "れば", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "v5", -                "vk", -                "vs" -            ] -        }, -        { -            "kanaIn": "ければ", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "ければ", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "えば", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "けば", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "げば", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "せば", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "てば", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ねば", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "べば", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "めば", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "れば", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1", "v5", "vk", "vs"]}      ],      "-chau": [ -        { -            "kanaIn": "ちゃう", -            "kanaOut": "る", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いじゃう", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いちゃう", -            "kanaOut": "く", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きちゃう", -            "kanaOut": "くる", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "しちゃう", -            "kanaOut": "す", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しちゃう", -            "kanaOut": "する", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "っちゃう", -            "kanaOut": "う", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "っちゃう", -            "kanaOut": "く", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "っちゃう", -            "kanaOut": "つ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "っちゃう", -            "kanaOut": "る", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んじゃう", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んじゃう", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んじゃう", -            "kanaOut": "む", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ちゃう", "kanaOut": "る", "rulesIn": ["v5"], "rulesOut": ["v1"]}, +        {"kanaIn": "いじゃう", "kanaOut": "ぐ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "いちゃう", "kanaOut": "く", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "しちゃう", "kanaOut": "す", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っちゃう", "kanaOut": "う", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っちゃう", "kanaOut": "く", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っちゃう", "kanaOut": "つ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っちゃう", "kanaOut": "る", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んじゃう", "kanaOut": "ぬ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んじゃう", "kanaOut": "ぶ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んじゃう", "kanaOut": "む", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "しちゃう", "kanaOut": "する", "rulesIn": ["v5"], "rulesOut": ["vs"]}, +        {"kanaIn": "為ちゃう", "kanaOut": "為る", "rulesIn": ["v5"], "rulesOut": ["vs"]}, +        {"kanaIn": "きちゃう", "kanaOut": "くる", "rulesIn": ["v5"], "rulesOut": ["vk"]}, +        {"kanaIn": "来ちゃう", "kanaOut": "来る", "rulesIn": ["v5"], "rulesOut": ["vk"]}, +        {"kanaIn": "來ちゃう", "kanaOut": "來る", "rulesIn": ["v5"], "rulesOut": ["vk"]}      ],      "-nasai": [ -        { -            "kanaIn": "なさい", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いなさい", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きなさい", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きなさい", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎなさい", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しなさい", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しなさい", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちなさい", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "になさい", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びなさい", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みなさい", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りなさい", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "なさい", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いなさい", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きなさい", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎなさい", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しなさい", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちなさい", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "になさい", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びなさい", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みなさい", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りなさい", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しなさい", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為なさい", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きなさい", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来なさい", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來なさい", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "-sou": [ -        { -            "kanaIn": "そう", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "そう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いそう", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きそう", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きそう", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎそう", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しそう", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しそう", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちそう", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にそう", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びそう", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みそう", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りそう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "そう", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "そう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いそう", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きそう", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎそう", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しそう", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちそう", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にそう", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びそう", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みそう", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りそう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しそう", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為そう", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きそう", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来そう", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來そう", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "-sugiru": [ -        { -            "kanaIn": "すぎる", -            "kanaOut": "い", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "すぎる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いすぎる", -            "kanaOut": "う", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きすぎる", -            "kanaOut": "く", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きすぎる", -            "kanaOut": "くる", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎすぎる", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しすぎる", -            "kanaOut": "す", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しすぎる", -            "kanaOut": "する", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちすぎる", -            "kanaOut": "つ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にすぎる", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びすぎる", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みすぎる", -            "kanaOut": "む", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りすぎる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "すぎる", "kanaOut": "い", "rulesIn": ["v1"], "rulesOut": ["adj-i"]}, +        {"kanaIn": "すぎる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v1"]}, +        {"kanaIn": "いすぎる", "kanaOut": "う", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "きすぎる", "kanaOut": "く", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎすぎる", "kanaOut": "ぐ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "しすぎる", "kanaOut": "す", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ちすぎる", "kanaOut": "つ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "にすぎる", "kanaOut": "ぬ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "びすぎる", "kanaOut": "ぶ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "みすぎる", "kanaOut": "む", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "りすぎる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "しすぎる", "kanaOut": "する", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "為すぎる", "kanaOut": "為る", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "きすぎる", "kanaOut": "くる", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "来すぎる", "kanaOut": "来る", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "來すぎる", "kanaOut": "來る", "rulesIn": ["v1"], "rulesOut": ["vk"]}      ],      "-tai": [ -        { -            "kanaIn": "たい", -            "kanaOut": "る", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いたい", -            "kanaOut": "う", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きたい", -            "kanaOut": "く", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きたい", -            "kanaOut": "くる", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎたい", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "したい", -            "kanaOut": "す", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "したい", -            "kanaOut": "する", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちたい", -            "kanaOut": "つ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にたい", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びたい", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みたい", -            "kanaOut": "む", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りたい", -            "kanaOut": "る", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "たい", "kanaOut": "る", "rulesIn": ["adj-i"], "rulesOut": ["v1"]}, +        {"kanaIn": "いたい", "kanaOut": "う", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "きたい", "kanaOut": "く", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎたい", "kanaOut": "ぐ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "したい", "kanaOut": "す", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "ちたい", "kanaOut": "つ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "にたい", "kanaOut": "ぬ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "びたい", "kanaOut": "ぶ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "みたい", "kanaOut": "む", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "りたい", "kanaOut": "る", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "したい", "kanaOut": "する", "rulesIn": ["adj-i"], "rulesOut": ["vs"]}, +        {"kanaIn": "為たい", "kanaOut": "為る", "rulesIn": ["adj-i"], "rulesOut": ["vs"]}, +        {"kanaIn": "きたい", "kanaOut": "くる", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}, +        {"kanaIn": "来たい", "kanaOut": "来る", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}, +        {"kanaIn": "來たい", "kanaOut": "來る", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}      ],      "-tara": [ -        { -            "kanaIn": "たら", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いたら", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いだら", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きたら", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "したら", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "したら", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ったら", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ったら", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ったら", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだら", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだら", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだら", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "かったら", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "のたもうたら", -            "kanaOut": "のたまう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いったら", -            "kanaOut": "いく", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "おうたら", -            "kanaOut": "おう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こうたら", -            "kanaOut": "こう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "そうたら", -            "kanaOut": "そう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とうたら", -            "kanaOut": "とう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "行ったら", -            "kanaOut": "行く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "逝ったら", -            "kanaOut": "逝く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "往ったら", -            "kanaOut": "往く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "請うたら", -            "kanaOut": "請う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "乞うたら", -            "kanaOut": "乞う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "恋うたら", -            "kanaOut": "恋う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "問うたら", -            "kanaOut": "問う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "負うたら", -            "kanaOut": "負う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "沿うたら", -            "kanaOut": "沿う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "添うたら", -            "kanaOut": "添う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "副うたら", -            "kanaOut": "副う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "厭うたら", -            "kanaOut": "厭う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "かったら", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "たら", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いたら", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "いだら", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "したら", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったら", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったら", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったら", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだら", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだら", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだら", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "したら", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為たら", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きたら", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来たら", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來たら", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "いったら", "kanaOut": "いく", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "おうたら", "kanaOut": "おう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "こうたら", "kanaOut": "こう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "そうたら", "kanaOut": "そう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "とうたら", "kanaOut": "とう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "行ったら", "kanaOut": "行く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "逝ったら", "kanaOut": "逝く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "往ったら", "kanaOut": "往く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "請うたら", "kanaOut": "請う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "乞うたら", "kanaOut": "乞う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "恋うたら", "kanaOut": "恋う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "問うたら", "kanaOut": "問う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "負うたら", "kanaOut": "負う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "沿うたら", "kanaOut": "沿う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "添うたら", "kanaOut": "添う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "副うたら", "kanaOut": "副う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "厭うたら", "kanaOut": "厭う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "のたもうたら", "kanaOut": "のたまう", "rulesIn": [], "rulesOut": ["v5"]}      ],      "-tari": [ -        { -            "kanaIn": "たり", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いたり", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いだり", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きたり", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "したり", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "したり", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ったり", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ったり", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ったり", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだり", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだり", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだり", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "かったり", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "のたもうたり", -            "kanaOut": "のたまう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いったり", -            "kanaOut": "いく", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "おうたり", -            "kanaOut": "おう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こうたり", -            "kanaOut": "こう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "そうたり", -            "kanaOut": "そう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とうたり", -            "kanaOut": "とう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "行ったり", -            "kanaOut": "行く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "逝ったり", -            "kanaOut": "逝く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "往ったり", -            "kanaOut": "往く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "請うたり", -            "kanaOut": "請う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "乞うたり", -            "kanaOut": "乞う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "恋うたり", -            "kanaOut": "恋う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "問うたり", -            "kanaOut": "問う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "負うたり", -            "kanaOut": "負う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "沿うたり", -            "kanaOut": "沿う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "添うたり", -            "kanaOut": "添う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "副うたり", -            "kanaOut": "副う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "厭うたり", -            "kanaOut": "厭う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "かったり", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "たり", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いたり", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "いだり", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "したり", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったり", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったり", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ったり", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだり", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだり", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだり", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "したり", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為たり", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きたり", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来たり", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來たり", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "いったり", "kanaOut": "いく", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "おうたり", "kanaOut": "おう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "こうたり", "kanaOut": "こう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "そうたり", "kanaOut": "そう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "とうたり", "kanaOut": "とう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "行ったり", "kanaOut": "行く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "逝ったり", "kanaOut": "逝く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "往ったり", "kanaOut": "往く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "請うたり", "kanaOut": "請う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "乞うたり", "kanaOut": "乞う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "恋うたり", "kanaOut": "恋う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "問うたり", "kanaOut": "問う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "負うたり", "kanaOut": "負う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "沿うたり", "kanaOut": "沿う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "添うたり", "kanaOut": "添う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "副うたり", "kanaOut": "副う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "厭うたり", "kanaOut": "厭う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "のたもうたり", "kanaOut": "のたまう", "rulesIn": [], "rulesOut": ["v5"]}      ],      "-te": [ -        { -            "kanaIn": "て", -            "kanaOut": "る", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いて", -            "kanaOut": "く", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いで", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きて", -            "kanaOut": "くる", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "くて", -            "kanaOut": "い", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "して", -            "kanaOut": "す", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "して", -            "kanaOut": "する", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "って", -            "kanaOut": "う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "って", -            "kanaOut": "つ", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "って", -            "kanaOut": "る", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んで", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んで", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んで", -            "kanaOut": "む", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "のたもうて", -            "kanaOut": "のたまう", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いって", -            "kanaOut": "いく", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "おうて", -            "kanaOut": "おう", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こうて", -            "kanaOut": "こう", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "そうて", -            "kanaOut": "そう", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とうて", -            "kanaOut": "とう", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "行って", -            "kanaOut": "行く", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "逝って", -            "kanaOut": "逝く", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "往って", -            "kanaOut": "往く", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "請うて", -            "kanaOut": "請う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "乞うて", -            "kanaOut": "乞う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "恋うて", -            "kanaOut": "恋う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "問うて", -            "kanaOut": "問う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "負うて", -            "kanaOut": "負う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "沿うて", -            "kanaOut": "沿う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "添うて", -            "kanaOut": "添う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "副うて", -            "kanaOut": "副う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "厭うて", -            "kanaOut": "厭う", -            "rulesIn": [ -                "iru" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "くて", "kanaOut": "い", "rulesIn": ["iru"], "rulesOut": ["adj-i"]}, +        {"kanaIn": "て", "kanaOut": "る", "rulesIn": ["iru"], "rulesOut": ["v1"]}, +        {"kanaIn": "いて", "kanaOut": "く", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "いで", "kanaOut": "ぐ", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "して", "kanaOut": "す", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "って", "kanaOut": "う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "って", "kanaOut": "つ", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "って", "kanaOut": "る", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "んで", "kanaOut": "ぬ", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "んで", "kanaOut": "ぶ", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "んで", "kanaOut": "む", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "して", "kanaOut": "する", "rulesIn": ["iru"], "rulesOut": ["vs"]}, +        {"kanaIn": "為て", "kanaOut": "為る", "rulesIn": ["iru"], "rulesOut": ["vs"]}, +        {"kanaIn": "きて", "kanaOut": "くる", "rulesIn": ["iru"], "rulesOut": ["vk"]}, +        {"kanaIn": "来て", "kanaOut": "来る", "rulesIn": ["iru"], "rulesOut": ["vk"]}, +        {"kanaIn": "來て", "kanaOut": "來る", "rulesIn": ["iru"], "rulesOut": ["vk"]}, +        {"kanaIn": "いって", "kanaOut": "いく", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "おうて", "kanaOut": "おう", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "こうて", "kanaOut": "こう", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "そうて", "kanaOut": "そう", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "とうて", "kanaOut": "とう", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "行って", "kanaOut": "行く", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "逝って", "kanaOut": "逝く", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "往って", "kanaOut": "往く", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "請うて", "kanaOut": "請う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "乞うて", "kanaOut": "乞う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "恋うて", "kanaOut": "恋う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "問うて", "kanaOut": "問う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "負うて", "kanaOut": "負う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "沿うて", "kanaOut": "沿う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "添うて", "kanaOut": "添う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "副うて", "kanaOut": "副う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "厭うて", "kanaOut": "厭う", "rulesIn": ["iru"], "rulesOut": ["v5"]}, +        {"kanaIn": "のたもうて", "kanaOut": "のたまう", "rulesIn": ["iru"], "rulesOut": ["v5"]}      ],      "-zu": [ -        { -            "kanaIn": "ず", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "かず", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がず", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こず", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "さず", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "せず", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "たず", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なず", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばず", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "まず", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "らず", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "わず", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ず", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "かず", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "がず", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "さず", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "たず", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "なず", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ばず", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "まず", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "らず", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "わず", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "せず", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ず", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "こず", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ず", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ず", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "-nu": [ -        { -            "kanaIn": "ぬ", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "かぬ", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がぬ", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こぬ", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "さぬ", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "せぬ", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "たぬ", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なぬ", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばぬ", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "まぬ", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "らぬ", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "わぬ", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ぬ", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "かぬ", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "がぬ", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "さぬ", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "たぬ", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "なぬ", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ばぬ", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "まぬ", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "らぬ", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "わぬ", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "せぬ", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ぬ", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "こぬ", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ぬ", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ぬ", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "adv": [ -        { -            "kanaIn": "く", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "く", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}      ],      "causative": [ -        { -            "kanaIn": "かせる", -            "kanaOut": "く", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がせる", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "させる", -            "kanaOut": "する", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "させる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "させる", -            "kanaOut": "す", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "たせる", -            "kanaOut": "つ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なせる", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばせる", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ませる", -            "kanaOut": "む", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "らせる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "わせる", -            "kanaOut": "う", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こさせる", -            "kanaOut": "くる", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vk" -            ] -        } +        {"kanaIn": "させる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v1"]}, +        {"kanaIn": "かせる", "kanaOut": "く", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "がせる", "kanaOut": "ぐ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "させる", "kanaOut": "す", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "たせる", "kanaOut": "つ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "なせる", "kanaOut": "ぬ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ばせる", "kanaOut": "ぶ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ませる", "kanaOut": "む", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "らせる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "わせる", "kanaOut": "う", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "させる", "kanaOut": "する", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "為せる", "kanaOut": "為る", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "こさせる", "kanaOut": "くる", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "来させる", "kanaOut": "来る", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "來させる", "kanaOut": "來る", "rulesIn": ["v1"], "rulesOut": ["vk"]}      ],      "imperative": [ -        { -            "kanaIn": "い", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "え", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "け", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "げ", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "せ", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "て", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ね", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "べ", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "め", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "よ", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "れ", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ろ", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "こい", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "しろ", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "せよ", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        } +        {"kanaIn": "ろ", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "よ", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "え", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "け", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "げ", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "せ", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "て", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ね", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "べ", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "め", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "れ", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しろ", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "せよ", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ろ", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為よ", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "こい", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来い", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來い", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "imperative negative": [ -        { -            "kanaIn": "な", -            "kanaOut": "", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "v5", -                "vk", -                "vs" -            ] -        } +        {"kanaIn": "な", "kanaOut": "", "rulesIn": [], "rulesOut": ["v1", "v5", "vk", "vs"]}      ],      "masu stem": [ -        { -            "kanaIn": "い", -            "kanaOut": "いる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "い", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "え", -            "kanaOut": "える", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "き", -            "kanaOut": "きる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "き", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "き", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎ", -            "kanaOut": "ぎる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "ぎ", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "け", -            "kanaOut": "ける", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "げ", -            "kanaOut": "げる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "し", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "じ", -            "kanaOut": "じる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "せ", -            "kanaOut": "せる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "ぜ", -            "kanaOut": "ぜる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "ち", -            "kanaOut": "ちる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "ち", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "て", -            "kanaOut": "てる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "で", -            "kanaOut": "でる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "に", -            "kanaOut": "にる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "に", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ね", -            "kanaOut": "ねる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "ひ", -            "kanaOut": "ひる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "び", -            "kanaOut": "びる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "び", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "へ", -            "kanaOut": "へる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "べ", -            "kanaOut": "べる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "み", -            "kanaOut": "みる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "み", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "め", -            "kanaOut": "める", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "り", -            "kanaOut": "りる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        }, -        { -            "kanaIn": "り", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "れ", -            "kanaOut": "れる", -            "rulesIn": [], -            "rulesOut": [ -                "v1" -            ] -        } +        {"kanaIn": "い", "kanaOut": "いる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "え", "kanaOut": "える", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "き", "kanaOut": "きる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "ぎ", "kanaOut": "ぎる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "け", "kanaOut": "ける", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "げ", "kanaOut": "げる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "じ", "kanaOut": "じる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "せ", "kanaOut": "せる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "ぜ", "kanaOut": "ぜる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "ち", "kanaOut": "ちる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "て", "kanaOut": "てる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "で", "kanaOut": "でる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "に", "kanaOut": "にる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "ね", "kanaOut": "ねる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "ひ", "kanaOut": "ひる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "び", "kanaOut": "びる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "へ", "kanaOut": "へる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "べ", "kanaOut": "べる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "み", "kanaOut": "みる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "め", "kanaOut": "める", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "り", "kanaOut": "りる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "れ", "kanaOut": "れる", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "い", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "き", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎ", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "し", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ち", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "に", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "び", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "み", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "り", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "き", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "negative": [ -        { -            "kanaIn": "ない", -            "kanaOut": "る", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "かない", -            "kanaOut": "く", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がない", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "くない", -            "kanaOut": "い", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "こない", -            "kanaOut": "くる", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "さない", -            "kanaOut": "す", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しない", -            "kanaOut": "する", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "たない", -            "kanaOut": "つ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なない", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばない", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "まない", -            "kanaOut": "む", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "らない", -            "kanaOut": "る", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "わない", -            "kanaOut": "う", -            "rulesIn": [ -                "adj-i" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "くない", "kanaOut": "い", "rulesIn": ["adj-i"], "rulesOut": ["adj-i"]}, +        {"kanaIn": "ない", "kanaOut": "る", "rulesIn": ["adj-i"], "rulesOut": ["v1"]}, +        {"kanaIn": "かない", "kanaOut": "く", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "がない", "kanaOut": "ぐ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "さない", "kanaOut": "す", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "たない", "kanaOut": "つ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "なない", "kanaOut": "ぬ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "ばない", "kanaOut": "ぶ", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "まない", "kanaOut": "む", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "らない", "kanaOut": "る", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "わない", "kanaOut": "う", "rulesIn": ["adj-i"], "rulesOut": ["v5"]}, +        {"kanaIn": "しない", "kanaOut": "する", "rulesIn": ["adj-i"], "rulesOut": ["vs"]}, +        {"kanaIn": "為ない", "kanaOut": "為る", "rulesIn": ["adj-i"], "rulesOut": ["vs"]}, +        {"kanaIn": "こない", "kanaOut": "くる", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}, +        {"kanaIn": "来ない", "kanaOut": "来る", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}, +        {"kanaIn": "來ない", "kanaOut": "來る", "rulesIn": ["adj-i"], "rulesOut": ["vk"]}      ],      "noun": [ -        { -            "kanaIn": "さ", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "さ", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}      ],      "passive": [ -        { -            "kanaIn": "かれる", -            "kanaOut": "く", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がれる", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "される", -            "kanaOut": "する", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "される", -            "kanaOut": "す", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "たれる", -            "kanaOut": "つ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なれる", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばれる", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "まれる", -            "kanaOut": "む", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "われる", -            "kanaOut": "う", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "られる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "かれる", "kanaOut": "く", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "がれる", "kanaOut": "ぐ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "される", "kanaOut": "す", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "たれる", "kanaOut": "つ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "なれる", "kanaOut": "ぬ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ばれる", "kanaOut": "ぶ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "まれる", "kanaOut": "む", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "われる", "kanaOut": "う", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "られる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "される", "kanaOut": "する", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "為れる", "kanaOut": "為る", "rulesIn": ["v1"], "rulesOut": ["vs"]}, +        {"kanaIn": "こられる", "kanaOut": "くる", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "来られる", "kanaOut": "来る", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "來られる", "kanaOut": "來る", "rulesIn": ["v1"], "rulesOut": ["vk"]}      ],      "past": [ -        { -            "kanaIn": "た", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いた", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いだ", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きた", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "した", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "した", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "った", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "った", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "った", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだ", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだ", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んだ", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "かった", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        }, -        { -            "kanaIn": "のたもうた", -            "kanaOut": "のたまう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いった", -            "kanaOut": "いく", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "おうた", -            "kanaOut": "おう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こうた", -            "kanaOut": "こう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "そうた", -            "kanaOut": "そう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とうた", -            "kanaOut": "とう", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "行った", -            "kanaOut": "行く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "逝った", -            "kanaOut": "逝く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "往った", -            "kanaOut": "往く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "請うた", -            "kanaOut": "請う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "乞うた", -            "kanaOut": "乞う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "恋うた", -            "kanaOut": "恋う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "問うた", -            "kanaOut": "問う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "負うた", -            "kanaOut": "負う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "沿うた", -            "kanaOut": "沿う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "添うた", -            "kanaOut": "添う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "副うた", -            "kanaOut": "副う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "厭うた", -            "kanaOut": "厭う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "かった", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "た", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いた", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "いだ", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "した", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "った", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "った", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "った", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだ", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだ", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "んだ", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "した", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為た", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きた", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来た", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來た", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "いった", "kanaOut": "いく", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "おうた", "kanaOut": "おう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "こうた", "kanaOut": "こう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "そうた", "kanaOut": "そう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "とうた", "kanaOut": "とう", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "行った", "kanaOut": "行く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "逝った", "kanaOut": "逝く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "往った", "kanaOut": "往く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "請うた", "kanaOut": "請う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "乞うた", "kanaOut": "乞う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "恋うた", "kanaOut": "恋う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "問うた", "kanaOut": "問う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "負うた", "kanaOut": "負う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "沿うた", "kanaOut": "沿う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "添うた", "kanaOut": "添う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "副うた", "kanaOut": "副う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "厭うた", "kanaOut": "厭う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "のたもうた", "kanaOut": "のたまう", "rulesIn": [], "rulesOut": ["v5"]}      ],      "polite": [ -        { -            "kanaIn": "ます", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "います", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きます", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きます", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎます", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "します", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "します", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちます", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にます", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びます", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みます", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ります", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ます", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "います", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きます", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎます", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "します", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちます", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にます", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びます", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みます", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ります", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "します", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ます", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きます", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ます", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ます", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "polite negative": [ -        { -            "kanaIn": "ません", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いません", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きません", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きません", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎません", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しません", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しません", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちません", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にません", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びません", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みません", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りません", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "くありません", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "くありません", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "ません", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いません", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きません", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎません", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しません", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちません", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にません", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びません", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みません", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りません", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しません", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ません", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きません", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ません", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ません", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "polite past": [ -        { -            "kanaIn": "ました", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いました", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きました", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きました", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎました", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しました", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しました", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちました", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にました", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びました", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みました", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りました", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ました", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いました", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きました", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎました", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しました", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちました", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にました", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びました", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みました", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りました", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しました", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ました", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きました", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ました", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ました", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "polite past negative": [ -        { -            "kanaIn": "ませんでした", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いませんでした", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きませんでした", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きませんでした", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎませんでした", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しませんでした", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しませんでした", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちませんでした", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にませんでした", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びませんでした", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みませんでした", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りませんでした", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "くありませんでした", -            "kanaOut": "い", -            "rulesIn": [], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "くありませんでした", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}, +        {"kanaIn": "ませんでした", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いませんでした", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きませんでした", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎませんでした", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しませんでした", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちませんでした", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にませんでした", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びませんでした", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みませんでした", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りませんでした", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しませんでした", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ませんでした", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きませんでした", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ませんでした", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ませんでした", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "polite volitional": [ -        { -            "kanaIn": "ましょう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "いましょう", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きましょう", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きましょう", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "ぎましょう", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しましょう", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しましょう", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "ちましょう", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "にましょう", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "びましょう", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "みましょう", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "りましょう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "ましょう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "いましょう", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "きましょう", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぎましょう", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しましょう", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ちましょう", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "にましょう", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "びましょう", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "みましょう", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "りましょう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しましょう", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為ましょう", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "きましょう", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来ましょう", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來ましょう", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "potential": [ -        { -            "kanaIn": "える", -            "kanaOut": "う", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ける", -            "kanaOut": "く", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "げる", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "せる", -            "kanaOut": "す", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "てる", -            "kanaOut": "つ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ねる", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "べる", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "める", -            "kanaOut": "む", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "れる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v1", -                "v5", -                "vk" -            ] -        }, -        { -            "kanaIn": "これる", -            "kanaOut": "くる", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vk" -            ] -        } +        {"kanaIn": "れる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v1", "v5"]}, +        {"kanaIn": "える", "kanaOut": "う", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ける", "kanaOut": "く", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "げる", "kanaOut": "ぐ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "せる", "kanaOut": "す", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "てる", "kanaOut": "つ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ねる", "kanaOut": "ぬ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "べる", "kanaOut": "ぶ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "める", "kanaOut": "む", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "これる", "kanaOut": "くる", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "来れる", "kanaOut": "来る", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "來れる", "kanaOut": "來る", "rulesIn": ["v1"], "rulesOut": ["vk"]}      ],      "potential or passive": [ -        { -            "kanaIn": "られる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "こられる", -            "kanaOut": "くる", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "vk" -            ] -        } +        {"kanaIn": "られる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v1"]}, +        {"kanaIn": "こられる", "kanaOut": "くる", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "来られる", "kanaOut": "来る", "rulesIn": ["v1"], "rulesOut": ["vk"]}, +        {"kanaIn": "來られる", "kanaOut": "來る", "rulesIn": ["v1"], "rulesOut": ["vk"]}      ],      "volitional": [ -        { -            "kanaIn": "おう", -            "kanaOut": "う", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こう", -            "kanaOut": "く", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ごう", -            "kanaOut": "ぐ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "そう", -            "kanaOut": "す", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とう", -            "kanaOut": "つ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "のう", -            "kanaOut": "ぬ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ぼう", -            "kanaOut": "ぶ", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "もう", -            "kanaOut": "む", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "よう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        }, -        { -            "kanaIn": "ろう", -            "kanaOut": "る", -            "rulesIn": [], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "こよう", -            "kanaOut": "くる", -            "rulesIn": [], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "しよう", -            "kanaOut": "する", -            "rulesIn": [], -            "rulesOut": [ -                "vs" -            ] -        } +        {"kanaIn": "よう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v1"]}, +        {"kanaIn": "おう", "kanaOut": "う", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "こう", "kanaOut": "く", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ごう", "kanaOut": "ぐ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "そう", "kanaOut": "す", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "とう", "kanaOut": "つ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "のう", "kanaOut": "ぬ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ぼう", "kanaOut": "ぶ", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "もう", "kanaOut": "む", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "ろう", "kanaOut": "る", "rulesIn": [], "rulesOut": ["v5"]}, +        {"kanaIn": "しよう", "kanaOut": "する", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "為よう", "kanaOut": "為る", "rulesIn": [], "rulesOut": ["vs"]}, +        {"kanaIn": "こよう", "kanaOut": "くる", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "来よう", "kanaOut": "来る", "rulesIn": [], "rulesOut": ["vk"]}, +        {"kanaIn": "來よう", "kanaOut": "來る", "rulesIn": [], "rulesOut": ["vk"]}      ],      "causative passive": [ -        { -            "kanaIn": "かされる", -            "kanaOut": "く", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "がされる", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "たされる", -            "kanaOut": "つ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "なされる", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "ばされる", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "まされる", -            "kanaOut": "む", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "らされる", -            "kanaOut": "る", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "わされる", -            "kanaOut": "う", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "v5" -            ] -        } +        {"kanaIn": "かされる", "kanaOut": "く", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "がされる", "kanaOut": "ぐ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "たされる", "kanaOut": "つ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "なされる", "kanaOut": "ぬ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "ばされる", "kanaOut": "ぶ", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "まされる", "kanaOut": "む", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "らされる", "kanaOut": "る", "rulesIn": ["v1"], "rulesOut": ["v5"]}, +        {"kanaIn": "わされる", "kanaOut": "う", "rulesIn": ["v1"], "rulesOut": ["v5"]}      ],      "-toku": [ -        { -            "kanaIn": "いとく", -            "kanaOut": "く", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "いどく", -            "kanaOut": "ぐ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "きとく", -            "kanaOut": "くる", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "vk" -            ] -        }, -        { -            "kanaIn": "しとく", -            "kanaOut": "す", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "しとく", -            "kanaOut": "する", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "vs" -            ] -        }, -        { -            "kanaIn": "っとく", -            "kanaOut": "う", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "っとく", -            "kanaOut": "つ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "っとく", -            "kanaOut": "る", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んどく", -            "kanaOut": "ぬ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んどく", -            "kanaOut": "ぶ", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "んどく", -            "kanaOut": "む", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v5" -            ] -        }, -        { -            "kanaIn": "とく", -            "kanaOut": "る", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "v1", -                "vk" -            ] -        } +        {"kanaIn": "とく", "kanaOut": "る", "rulesIn": ["v5"], "rulesOut": ["v1"]}, +        {"kanaIn": "いとく", "kanaOut": "く", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "いどく", "kanaOut": "ぐ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "しとく", "kanaOut": "す", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っとく", "kanaOut": "う", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っとく", "kanaOut": "つ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "っとく", "kanaOut": "る", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んどく", "kanaOut": "ぬ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んどく", "kanaOut": "ぶ", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "んどく", "kanaOut": "む", "rulesIn": ["v5"], "rulesOut": ["v5"]}, +        {"kanaIn": "しとく", "kanaOut": "する", "rulesIn": ["v5"], "rulesOut": ["vs"]}, +        {"kanaIn": "為とく", "kanaOut": "為る", "rulesIn": ["v5"], "rulesOut": ["vs"]}, +        {"kanaIn": "きとく", "kanaOut": "くる", "rulesIn": ["v5"], "rulesOut": ["vk"]}, +        {"kanaIn": "来とく", "kanaOut": "来る", "rulesIn": ["v5"], "rulesOut": ["vk"]}, +        {"kanaIn": "來とく", "kanaOut": "來る", "rulesIn": ["v5"], "rulesOut": ["vk"]}      ],      "progressive or perfect": [ -        { -            "kanaIn": "ている", -            "kanaOut": "て", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "ておる", -            "kanaOut": "て", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "てる", -            "kanaOut": "て", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "でいる", -            "kanaOut": "で", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "でおる", -            "kanaOut": "で", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "とる", -            "kanaOut": "て", -            "rulesIn": [ -                "v5" -            ], -            "rulesOut": [ -                "iru" -            ] -        }, -        { -            "kanaIn": "ないでいる", -            "kanaOut": "ない", -            "rulesIn": [ -                "v1" -            ], -            "rulesOut": [ -                "adj-i" -            ] -        } +        {"kanaIn": "ている", "kanaOut": "て", "rulesIn": ["v1"], "rulesOut": ["iru"]}, +        {"kanaIn": "ておる", "kanaOut": "て", "rulesIn": ["v5"], "rulesOut": ["iru"]}, +        {"kanaIn": "てる", "kanaOut": "て", "rulesIn": ["v1"], "rulesOut": ["iru"]}, +        {"kanaIn": "でいる", "kanaOut": "で", "rulesIn": ["v1"], "rulesOut": ["iru"]}, +        {"kanaIn": "でおる", "kanaOut": "で", "rulesIn": ["v5"], "rulesOut": ["iru"]}, +        {"kanaIn": "でる", "kanaOut": "で", "rulesIn": ["v1"], "rulesOut": ["iru"]}, +        {"kanaIn": "とる", "kanaOut": "て", "rulesIn": ["v5"], "rulesOut": ["iru"]}, +        {"kanaIn": "ないでいる", "kanaOut": "ない", "rulesIn": ["v1"], "rulesOut": ["adj-i"]} +    ], +    "-ki": [ +        {"kanaIn": "き", "kanaOut": "い", "rulesIn": [], "rulesOut": ["adj-i"]}      ]  } diff --git a/test/test-deinflector.js b/test/test-deinflector.js new file mode 100644 index 00000000..2fee9fc3 --- /dev/null +++ b/test/test-deinflector.js @@ -0,0 +1,826 @@ +/* + * Copyright (C) 2020  Yomichan Authors + * + * This program 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 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <https://www.gnu.org/licenses/>. + */ + +const fs = require('fs'); +const path = require('path'); +const assert = require('assert'); +const {testMain} = require('../dev/util'); +const {VM} = require('../dev/vm'); + + +function hasTermReasons(Deinflector, deinflector, source, expectedTerm, expectedRule, expectedReasons) { +    for (const {term, reasons, rules} of deinflector.deinflect(source, source)) { +        if (term !== expectedTerm) { continue; } +        if (typeof expectedRule !== 'undefined') { +            const expectedFlags = Deinflector.rulesToRuleFlags([expectedRule]); +            if (rules !== 0 && (rules & expectedFlags) !== expectedFlags) { continue; } +        } +        let okay = true; +        if (typeof expectedReasons !== 'undefined') { +            if (reasons.length !== expectedReasons.length) { continue; } +            for (let i = 0, ii = expectedReasons.length; i < ii; ++i) { +                if (expectedReasons[i] !== reasons[i]) { +                    okay = false; +                    break; +                } +            } +        } +        if (okay) { +            return {has: true, reasons, rules}; +        } +    } +    return {has: false, reasons: null, rules: null}; +} + + +function testDeinflections() { +    const data = [ +        { +            valid: true, +            tests: [ +                // Adjective +                {term: '愛しい', source: '愛しい',                 rule: 'adj-i', reasons: []}, +                {term: '愛しい', source: '愛しそう',               rule: 'adj-i', reasons: ['-sou']}, +                {term: '愛しい', source: '愛しすぎる',             rule: 'adj-i', reasons: ['-sugiru']}, +                {term: '愛しい', source: '愛しかったら',           rule: 'adj-i', reasons: ['-tara']}, +                {term: '愛しい', source: '愛しかったり',           rule: 'adj-i', reasons: ['-tari']}, +                {term: '愛しい', source: '愛しくて',               rule: 'adj-i', reasons: ['-te']}, +                {term: '愛しい', source: '愛しく',                 rule: 'adj-i', reasons: ['adv']}, +                {term: '愛しい', source: '愛しくない',             rule: 'adj-i', reasons: ['negative']}, +                {term: '愛しい', source: '愛しさ',                 rule: 'adj-i', reasons: ['noun']}, +                {term: '愛しい', source: '愛しかった',             rule: 'adj-i', reasons: ['past']}, +                {term: '愛しい', source: '愛しくありません',       rule: 'adj-i', reasons: ['polite negative']}, +                {term: '愛しい', source: '愛しくありませんでした', rule: 'adj-i', reasons: ['polite past negative']}, +                {term: '愛しい', source: '愛しき',                 rule: 'adj-i', reasons: ['-ki']}, + +                // Common verbs +                {term: '食べる', source: '食べる',           rule: 'v1', reasons: []}, +                {term: '食べる', source: '食べます',         rule: 'v1', reasons: ['polite']}, +                {term: '食べる', source: '食べた',           rule: 'v1', reasons: ['past']}, +                {term: '食べる', source: '食べました',       rule: 'v1', reasons: ['polite past']}, +                {term: '食べる', source: '食べて',           rule: 'v1', reasons: ['-te']}, +                {term: '食べる', source: '食べられる',       rule: 'v1', reasons: ['potential or passive']}, +                {term: '食べる', source: '食べられる',       rule: 'v1', reasons: ['potential or passive']}, +                {term: '食べる', source: '食べさせる',       rule: 'v1', reasons: ['causative']}, +                {term: '食べる', source: '食べさせられる',   rule: 'v1', reasons: ['causative', 'potential or passive']}, +                {term: '食べる', source: '食べろ',           rule: 'v1', reasons: ['imperative']}, +                {term: '食べる', source: '食べない',         rule: 'v1', reasons: ['negative']}, +                {term: '食べる', source: '食べません',       rule: 'v1', reasons: ['polite negative']}, +                {term: '食べる', source: '食べなかった',     rule: 'v1', reasons: ['negative', 'past']}, +                {term: '食べる', source: '食べませんでした', rule: 'v1', reasons: ['polite past negative']}, +                {term: '食べる', source: '食べなくて',       rule: 'v1', reasons: ['negative', '-te']}, +                {term: '食べる', source: '食べられない',     rule: 'v1', reasons: ['potential or passive', 'negative']}, +                {term: '食べる', source: '食べられない',     rule: 'v1', reasons: ['potential or passive', 'negative']}, +                {term: '食べる', source: '食べさせない',     rule: 'v1', reasons: ['causative', 'negative']}, +                {term: '食べる', source: '食べさせられない', rule: 'v1', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '食べる', source: '食べるな',         rule: 'v1', reasons: ['imperative negative']}, + +                {term: '食べる', source: '食べれば',         rule: 'v1', reasons: ['-ba']}, +                {term: '食べる', source: '食べちゃう',       rule: 'v1', reasons: ['-chau']}, +                {term: '食べる', source: '食べなさい',       rule: 'v1', reasons: ['-nasai']}, +                {term: '食べる', source: '食べそう',         rule: 'v1', reasons: ['-sou']}, +                {term: '食べる', source: '食べすぎる',       rule: 'v1', reasons: ['-sugiru']}, +                {term: '食べる', source: '食べたい',         rule: 'v1', reasons: ['-tai']}, +                {term: '食べる', source: '食べたら',         rule: 'v1', reasons: ['-tara']}, +                {term: '食べる', source: '食べたり',         rule: 'v1', reasons: ['-tari']}, +                {term: '食べる', source: '食べず',           rule: 'v1', reasons: ['-zu']}, +                {term: '食べる', source: '食べぬ',           rule: 'v1', reasons: ['-nu']}, +                {term: '食べる', source: '食べ',             rule: 'v1', reasons: ['masu stem']}, +                {term: '食べる', source: '食べましょう',     rule: 'v1', reasons: ['polite volitional']}, +                {term: '食べる', source: '食べよう',         rule: 'v1', reasons: ['volitional']}, +                // ['causative passive'] +                {term: '食べる', source: '食べとく',         rule: 'v1', reasons: ['-toku']}, +                {term: '食べる', source: '食べている',       rule: 'v1', reasons: ['-te', 'progressive or perfect']}, +                {term: '食べる', source: '食べておる',       rule: 'v1', reasons: ['-te', 'progressive or perfect']}, +                {term: '食べる', source: '食べてる',         rule: 'v1', reasons: ['-te', 'progressive or perfect']}, +                {term: '食べる', source: '食べとる',         rule: 'v1', reasons: ['-te', 'progressive or perfect']}, + +                {term: '買う', source: '買う',             rule: 'v5', reasons: []}, +                {term: '買う', source: '買います',         rule: 'v5', reasons: ['polite']}, +                {term: '買う', source: '買った',           rule: 'v5', reasons: ['past']}, +                {term: '買う', source: '買いました',       rule: 'v5', reasons: ['polite past']}, +                {term: '買う', source: '買って',           rule: 'v5', reasons: ['-te']}, +                {term: '買う', source: '買える',           rule: 'v5', reasons: ['potential']}, +                {term: '買う', source: '買われる',         rule: 'v5', reasons: ['passive']}, +                {term: '買う', source: '買わせる',         rule: 'v5', reasons: ['causative']}, +                {term: '買う', source: '買わせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '買う', source: '買え',             rule: 'v5', reasons: ['imperative']}, +                {term: '買う', source: '買わない',         rule: 'v5', reasons: ['negative']}, +                {term: '買う', source: '買いません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '買う', source: '買わなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '買う', source: '買いませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '買う', source: '買わなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '買う', source: '買えない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '買う', source: '買われない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '買う', source: '買わせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '買う', source: '買わせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '買う', source: '買うな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '買う', source: '買えば',           rule: 'v5', reasons: ['-ba']}, +                {term: '買う', source: '買っちゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '買う', source: '買いなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '買う', source: '買いそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '買う', source: '買いすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '買う', source: '買いたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '買う', source: '買ったら',         rule: 'v5', reasons: ['-tara']}, +                {term: '買う', source: '買ったり',         rule: 'v5', reasons: ['-tari']}, +                {term: '買う', source: '買わず',           rule: 'v5', reasons: ['-zu']}, +                {term: '買う', source: '買わぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '買う', source: '買い',             rule: 'v5', reasons: ['masu stem']}, +                {term: '買う', source: '買いましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '買う', source: '買おう',           rule: 'v5', reasons: ['volitional']}, +                {term: '買う', source: '買わされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '買う', source: '買っとく',         rule: 'v5', reasons: ['-toku']}, +                {term: '買う', source: '買っている',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '買う', source: '買っておる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '買う', source: '買ってる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '買う', source: '買っとる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '行く', source: '行く',             rule: 'v5', reasons: []}, +                {term: '行く', source: '行きます',         rule: 'v5', reasons: ['polite']}, +                {term: '行く', source: '行った',           rule: 'v5', reasons: ['past']}, +                {term: '行く', source: '行きました',       rule: 'v5', reasons: ['polite past']}, +                {term: '行く', source: '行って',           rule: 'v5', reasons: ['-te']}, +                {term: '行く', source: '行ける',           rule: 'v5', reasons: ['potential']}, +                {term: '行く', source: '行かれる',         rule: 'v5', reasons: ['passive']}, +                {term: '行く', source: '行かせる',         rule: 'v5', reasons: ['causative']}, +                {term: '行く', source: '行かせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '行く', source: '行け',             rule: 'v5', reasons: ['imperative']}, +                {term: '行く', source: '行かない',         rule: 'v5', reasons: ['negative']}, +                {term: '行く', source: '行きません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '行く', source: '行かなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '行く', source: '行きませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '行く', source: '行かなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '行く', source: '行けない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '行く', source: '行かれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '行く', source: '行かせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '行く', source: '行かせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '行く', source: '行くな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '行く', source: '行けば',           rule: 'v5', reasons: ['-ba']}, +                {term: '行く', source: '行っちゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '行く', source: '行きなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '行く', source: '行きそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '行く', source: '行きすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '行く', source: '行きたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '行く', source: '行いたら',         rule: 'v5', reasons: ['-tara']}, +                {term: '行く', source: '行いたり',         rule: 'v5', reasons: ['-tari']}, +                {term: '行く', source: '行かず',           rule: 'v5', reasons: ['-zu']}, +                {term: '行く', source: '行かぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '行く', source: '行き',             rule: 'v5', reasons: ['masu stem']}, +                {term: '行く', source: '行きましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '行く', source: '行こう',           rule: 'v5', reasons: ['volitional']}, +                {term: '行く', source: '行かされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '行く', source: '行いとく',         rule: 'v5', reasons: ['-toku']}, +                {term: '行く', source: '行っている',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '行く', source: '行っておる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '行く', source: '行ってる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '行く', source: '行っとる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '泳ぐ', source: '泳ぐ',             rule: 'v5', reasons: []}, +                {term: '泳ぐ', source: '泳ぎます',         rule: 'v5', reasons: ['polite']}, +                {term: '泳ぐ', source: '泳いだ',           rule: 'v5', reasons: ['past']}, +                {term: '泳ぐ', source: '泳ぎました',       rule: 'v5', reasons: ['polite past']}, +                {term: '泳ぐ', source: '泳いで',           rule: 'v5', reasons: ['-te']}, +                {term: '泳ぐ', source: '泳げる',           rule: 'v5', reasons: ['potential']}, +                {term: '泳ぐ', source: '泳がれる',         rule: 'v5', reasons: ['passive']}, +                {term: '泳ぐ', source: '泳がせる',         rule: 'v5', reasons: ['causative']}, +                {term: '泳ぐ', source: '泳がせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '泳ぐ', source: '泳げ',             rule: 'v5', reasons: ['imperative']}, +                {term: '泳ぐ', source: '泳がない',         rule: 'v5', reasons: ['negative']}, +                {term: '泳ぐ', source: '泳ぎません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '泳ぐ', source: '泳がなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '泳ぐ', source: '泳ぎませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '泳ぐ', source: '泳がなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '泳ぐ', source: '泳げない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '泳ぐ', source: '泳がれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '泳ぐ', source: '泳がせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '泳ぐ', source: '泳がせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '泳ぐ', source: '泳ぐな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '泳ぐ', source: '泳げば',           rule: 'v5', reasons: ['-ba']}, +                {term: '泳ぐ', source: '泳いじゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '泳ぐ', source: '泳ぎなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '泳ぐ', source: '泳ぎそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '泳ぐ', source: '泳ぎすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '泳ぐ', source: '泳ぎたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '泳ぐ', source: '泳いだら',         rule: 'v5', reasons: ['-tara']}, +                {term: '泳ぐ', source: '泳いだり',         rule: 'v5', reasons: ['-tari']}, +                {term: '泳ぐ', source: '泳がず',           rule: 'v5', reasons: ['-zu']}, +                {term: '泳ぐ', source: '泳がぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '泳ぐ', source: '泳ぎ',             rule: 'v5', reasons: ['masu stem']}, +                {term: '泳ぐ', source: '泳ぎましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '泳ぐ', source: '泳ごう',           rule: 'v5', reasons: ['volitional']}, +                {term: '泳ぐ', source: '泳がされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '泳ぐ', source: '泳いどく',         rule: 'v5', reasons: ['-toku']}, +                {term: '泳ぐ', source: '泳いでいる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '泳ぐ', source: '泳いでおる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '泳ぐ', source: '泳いでる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '話す', source: '話す',             rule: 'v5', reasons: []}, +                {term: '話す', source: '話します',         rule: 'v5', reasons: ['polite']}, +                {term: '話す', source: '話した',           rule: 'v5', reasons: ['past']}, +                {term: '話す', source: '話しました',       rule: 'v5', reasons: ['polite past']}, +                {term: '話す', source: '話して',           rule: 'v5', reasons: ['-te']}, +                {term: '話す', source: '話せる',           rule: 'v5', reasons: ['potential']}, +                {term: '話す', source: '話される',         rule: 'v5', reasons: ['passive']}, +                {term: '話す', source: '話させる',         rule: 'v5', reasons: ['causative']}, +                {term: '話す', source: '話させられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '話す', source: '話せ',             rule: 'v5', reasons: ['imperative']}, +                {term: '話す', source: '話さない',         rule: 'v5', reasons: ['negative']}, +                {term: '話す', source: '話しません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '話す', source: '話さなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '話す', source: '話しませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '話す', source: '話さなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '話す', source: '話せない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '話す', source: '話されない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '話す', source: '話させない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '話す', source: '話させられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '話す', source: '話すな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '話す', source: '話せば',           rule: 'v5', reasons: ['-ba']}, +                {term: '話す', source: '話しちゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '話す', source: '話しなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '話す', source: '話しそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '話す', source: '話しすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '話す', source: '話したい',         rule: 'v5', reasons: ['-tai']}, +                {term: '話す', source: '話したら',         rule: 'v5', reasons: ['-tara']}, +                {term: '話す', source: '話したり',         rule: 'v5', reasons: ['-tari']}, +                {term: '話す', source: '話さず',           rule: 'v5', reasons: ['-zu']}, +                {term: '話す', source: '話さぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '話す', source: '話し',             rule: 'v5', reasons: ['masu stem']}, +                {term: '話す', source: '話しましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '話す', source: '話そう',           rule: 'v5', reasons: ['volitional']}, +                // ['causative passive'] +                {term: '話す', source: '話しとく',         rule: 'v5', reasons: ['-toku']}, +                {term: '話す', source: '話している',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '話す', source: '話しておる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '話す', source: '話してる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '話す', source: '話しとる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '待つ', source: '待つ',             rule: 'v5', reasons: []}, +                {term: '待つ', source: '待ちます',         rule: 'v5', reasons: ['polite']}, +                {term: '待つ', source: '待った',           rule: 'v5', reasons: ['past']}, +                {term: '待つ', source: '待ちました',       rule: 'v5', reasons: ['polite past']}, +                {term: '待つ', source: '待って',           rule: 'v5', reasons: ['-te']}, +                {term: '待つ', source: '待てる',           rule: 'v5', reasons: ['potential']}, +                {term: '待つ', source: '待たれる',         rule: 'v5', reasons: ['passive']}, +                {term: '待つ', source: '待たせる',         rule: 'v5', reasons: ['causative']}, +                {term: '待つ', source: '待たせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '待つ', source: '待て',             rule: 'v5', reasons: ['imperative']}, +                {term: '待つ', source: '待たない',         rule: 'v5', reasons: ['negative']}, +                {term: '待つ', source: '待ちません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '待つ', source: '待たなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '待つ', source: '待ちませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '待つ', source: '待たなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '待つ', source: '待てない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '待つ', source: '待たれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '待つ', source: '待たせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '待つ', source: '待たせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '待つ', source: '待つな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '待つ', source: '待てば',           rule: 'v5', reasons: ['-ba']}, +                {term: '待つ', source: '待っちゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '待つ', source: '待ちなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '待つ', source: '待ちそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '待つ', source: '待ちすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '待つ', source: '待ちたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '待つ', source: '待ったら',         rule: 'v5', reasons: ['-tara']}, +                {term: '待つ', source: '待ったり',         rule: 'v5', reasons: ['-tari']}, +                {term: '待つ', source: '待たず',           rule: 'v5', reasons: ['-zu']}, +                {term: '待つ', source: '待たぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '待つ', source: '待ち',             rule: 'v5', reasons: ['masu stem']}, +                {term: '待つ', source: '待ちましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '待つ', source: '待とう',           rule: 'v5', reasons: ['volitional']}, +                {term: '待つ', source: '待たされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '待つ', source: '待っとく',         rule: 'v5', reasons: ['-toku']}, +                {term: '待つ', source: '待っている',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '待つ', source: '待っておる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '待つ', source: '待ってる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '待つ', source: '待っとる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '死ぬ', source: '死ぬ',             rule: 'v5', reasons: []}, +                {term: '死ぬ', source: '死にます',         rule: 'v5', reasons: ['polite']}, +                {term: '死ぬ', source: '死んだ',           rule: 'v5', reasons: ['past']}, +                {term: '死ぬ', source: '死にました',       rule: 'v5', reasons: ['polite past']}, +                {term: '死ぬ', source: '死んで',           rule: 'v5', reasons: ['-te']}, +                {term: '死ぬ', source: '死ねる',           rule: 'v5', reasons: ['potential']}, +                {term: '死ぬ', source: '死なれる',         rule: 'v5', reasons: ['passive']}, +                {term: '死ぬ', source: '死なせる',         rule: 'v5', reasons: ['causative']}, +                {term: '死ぬ', source: '死なせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '死ぬ', source: '死ね',             rule: 'v5', reasons: ['imperative']}, +                {term: '死ぬ', source: '死なない',         rule: 'v5', reasons: ['negative']}, +                {term: '死ぬ', source: '死にません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '死ぬ', source: '死ななかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '死ぬ', source: '死にませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '死ぬ', source: '死ななくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '死ぬ', source: '死ねない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '死ぬ', source: '死なれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '死ぬ', source: '死なせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '死ぬ', source: '死なせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '死ぬ', source: '死ぬな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '死ぬ', source: '死ねば',           rule: 'v5', reasons: ['-ba']}, +                {term: '死ぬ', source: '死んじゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '死ぬ', source: '死になさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '死ぬ', source: '死にそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '死ぬ', source: '死にすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '死ぬ', source: '死にたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '死ぬ', source: '死んだら',         rule: 'v5', reasons: ['-tara']}, +                {term: '死ぬ', source: '死んだり',         rule: 'v5', reasons: ['-tari']}, +                {term: '死ぬ', source: '死なず',           rule: 'v5', reasons: ['-zu']}, +                {term: '死ぬ', source: '死なぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '死ぬ', source: '死に',             rule: 'v5', reasons: ['masu stem']}, +                {term: '死ぬ', source: '死にましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '死ぬ', source: '死のう',           rule: 'v5', reasons: ['volitional']}, +                {term: '死ぬ', source: '死なされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '死ぬ', source: '死んどく',         rule: 'v5', reasons: ['-toku']}, +                {term: '死ぬ', source: '死んでいる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '死ぬ', source: '死んでおる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '死ぬ', source: '死んでる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '遊ぶ', source: '遊ぶ',             rule: 'v5', reasons: []}, +                {term: '遊ぶ', source: '遊びます',         rule: 'v5', reasons: ['polite']}, +                {term: '遊ぶ', source: '遊んだ',           rule: 'v5', reasons: ['past']}, +                {term: '遊ぶ', source: '遊びました',       rule: 'v5', reasons: ['polite past']}, +                {term: '遊ぶ', source: '遊んで',           rule: 'v5', reasons: ['-te']}, +                {term: '遊ぶ', source: '遊べる',           rule: 'v5', reasons: ['potential']}, +                {term: '遊ぶ', source: '遊ばれる',         rule: 'v5', reasons: ['passive']}, +                {term: '遊ぶ', source: '遊ばせる',         rule: 'v5', reasons: ['causative']}, +                {term: '遊ぶ', source: '遊ばせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '遊ぶ', source: '遊べ',             rule: 'v5', reasons: ['imperative']}, +                {term: '遊ぶ', source: '遊ばない',         rule: 'v5', reasons: ['negative']}, +                {term: '遊ぶ', source: '遊びません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '遊ぶ', source: '遊ばなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '遊ぶ', source: '遊びませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '遊ぶ', source: '遊ばなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '遊ぶ', source: '遊べない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '遊ぶ', source: '遊ばれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '遊ぶ', source: '遊ばせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '遊ぶ', source: '遊ばせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '遊ぶ', source: '遊ぶな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '遊ぶ', source: '遊べば',           rule: 'v5', reasons: ['-ba']}, +                {term: '遊ぶ', source: '遊んじゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '遊ぶ', source: '遊びなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '遊ぶ', source: '遊びそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '遊ぶ', source: '遊びすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '遊ぶ', source: '遊びたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '遊ぶ', source: '遊んだら',         rule: 'v5', reasons: ['-tara']}, +                {term: '遊ぶ', source: '遊んだり',         rule: 'v5', reasons: ['-tari']}, +                {term: '遊ぶ', source: '遊ばず',           rule: 'v5', reasons: ['-zu']}, +                {term: '遊ぶ', source: '遊ばぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '遊ぶ', source: '遊び',             rule: 'v5', reasons: ['masu stem']}, +                {term: '遊ぶ', source: '遊びましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '遊ぶ', source: '遊ぼう',           rule: 'v5', reasons: ['volitional']}, +                {term: '遊ぶ', source: '遊ばされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '遊ぶ', source: '遊んどく',         rule: 'v5', reasons: ['-toku']}, +                {term: '遊ぶ', source: '遊んでいる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '遊ぶ', source: '遊んでおる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '遊ぶ', source: '遊んでる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '飲む', source: '飲む',             rule: 'v5', reasons: []}, +                {term: '飲む', source: '飲みます',         rule: 'v5', reasons: ['polite']}, +                {term: '飲む', source: '飲んだ',           rule: 'v5', reasons: ['past']}, +                {term: '飲む', source: '飲みました',       rule: 'v5', reasons: ['polite past']}, +                {term: '飲む', source: '飲んで',           rule: 'v5', reasons: ['-te']}, +                {term: '飲む', source: '飲める',           rule: 'v5', reasons: ['potential']}, +                {term: '飲む', source: '飲まれる',         rule: 'v5', reasons: ['passive']}, +                {term: '飲む', source: '飲ませる',         rule: 'v5', reasons: ['causative']}, +                {term: '飲む', source: '飲ませられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '飲む', source: '飲め',             rule: 'v5', reasons: ['imperative']}, +                {term: '飲む', source: '飲まない',         rule: 'v5', reasons: ['negative']}, +                {term: '飲む', source: '飲みません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '飲む', source: '飲まなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '飲む', source: '飲みませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '飲む', source: '飲まなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '飲む', source: '飲めない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '飲む', source: '飲まれない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '飲む', source: '飲ませない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '飲む', source: '飲ませられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '飲む', source: '飲むな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '飲む', source: '飲めば',           rule: 'v5', reasons: ['-ba']}, +                {term: '飲む', source: '飲んじゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '飲む', source: '飲みなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '飲む', source: '飲みそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '飲む', source: '飲みすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '飲む', source: '飲みたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '飲む', source: '飲んだら',         rule: 'v5', reasons: ['-tara']}, +                {term: '飲む', source: '飲んだり',         rule: 'v5', reasons: ['-tari']}, +                {term: '飲む', source: '飲まず',           rule: 'v5', reasons: ['-zu']}, +                {term: '飲む', source: '飲まぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '飲む', source: '飲み',             rule: 'v5', reasons: ['masu stem']}, +                {term: '飲む', source: '飲みましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '飲む', source: '飲もう',           rule: 'v5', reasons: ['volitional']}, +                {term: '飲む', source: '飲まされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '飲む', source: '飲んどく',         rule: 'v5', reasons: ['-toku']}, +                {term: '飲む', source: '飲んでいる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '飲む', source: '飲んでおる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '飲む', source: '飲んでる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                {term: '作る', source: '作る',             rule: 'v5', reasons: []}, +                {term: '作る', source: '作ります',         rule: 'v5', reasons: ['polite']}, +                {term: '作る', source: '作った',           rule: 'v5', reasons: ['past']}, +                {term: '作る', source: '作りました',       rule: 'v5', reasons: ['polite past']}, +                {term: '作る', source: '作って',           rule: 'v5', reasons: ['-te']}, +                {term: '作る', source: '作れる',           rule: 'v5', reasons: ['potential']}, +                {term: '作る', source: '作られる',         rule: 'v5', reasons: ['passive']}, +                {term: '作る', source: '作らせる',         rule: 'v5', reasons: ['causative']}, +                {term: '作る', source: '作らせられる',     rule: 'v5', reasons: ['causative', 'potential or passive']}, +                {term: '作る', source: '作れ',             rule: 'v5', reasons: ['imperative']}, +                {term: '作る', source: '作らない',         rule: 'v5', reasons: ['negative']}, +                {term: '作る', source: '作りません',       rule: 'v5', reasons: ['polite negative']}, +                {term: '作る', source: '作らなかった',     rule: 'v5', reasons: ['negative', 'past']}, +                {term: '作る', source: '作りませんでした', rule: 'v5', reasons: ['polite past negative']}, +                {term: '作る', source: '作らなくて',       rule: 'v5', reasons: ['negative', '-te']}, +                {term: '作る', source: '作れない',         rule: 'v5', reasons: ['potential', 'negative']}, +                {term: '作る', source: '作られない',       rule: 'v5', reasons: ['passive', 'negative']}, +                {term: '作る', source: '作らせない',       rule: 'v5', reasons: ['causative', 'negative']}, +                {term: '作る', source: '作らせられない',   rule: 'v5', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '作る', source: '作るな',           rule: 'v5', reasons: ['imperative negative']}, + +                {term: '作る', source: '作れば',           rule: 'v5', reasons: ['-ba']}, +                {term: '作る', source: '作っちゃう',       rule: 'v5', reasons: ['-chau']}, +                {term: '作る', source: '作りなさい',       rule: 'v5', reasons: ['-nasai']}, +                {term: '作る', source: '作りそう',         rule: 'v5', reasons: ['-sou']}, +                {term: '作る', source: '作りすぎる',       rule: 'v5', reasons: ['-sugiru']}, +                {term: '作る', source: '作りたい',         rule: 'v5', reasons: ['-tai']}, +                {term: '作る', source: '作ったら',         rule: 'v5', reasons: ['-tara']}, +                {term: '作る', source: '作ったり',         rule: 'v5', reasons: ['-tari']}, +                {term: '作る', source: '作らず',           rule: 'v5', reasons: ['-zu']}, +                {term: '作る', source: '作らぬ',           rule: 'v5', reasons: ['-nu']}, +                {term: '作る', source: '作り',             rule: 'v5', reasons: ['masu stem']}, +                {term: '作る', source: '作りましょう',     rule: 'v5', reasons: ['polite volitional']}, +                {term: '作る', source: '作ろう',           rule: 'v5', reasons: ['volitional']}, +                {term: '作る', source: '作らされる',       rule: 'v5', reasons: ['causative passive']}, +                {term: '作る', source: '作っとく',         rule: 'v5', reasons: ['-toku']}, +                {term: '作る', source: '作っている',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '作る', source: '作っておる',       rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '作る', source: '作ってる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, +                {term: '作る', source: '作っとる',         rule: 'v5', reasons: ['-te', 'progressive or perfect']}, + +                // Irregular verbs +                {term: '為る', source: '為る',           rule: 'vs', reasons: []}, +                {term: '為る', source: '為ます',         rule: 'vs', reasons: ['polite']}, +                {term: '為る', source: '為た',           rule: 'vs', reasons: ['past']}, +                {term: '為る', source: '為ました',       rule: 'vs', reasons: ['polite past']}, +                {term: '為る', source: '為て',           rule: 'vs', reasons: ['-te']}, +                // ['potential'] +                {term: '為る', source: '為れる',         rule: 'vs', reasons: ['passive']}, +                {term: '為る', source: '為せる',         rule: 'vs', reasons: ['causative']}, +                {term: '為る', source: '為せられる',     rule: 'vs', reasons: ['causative', 'potential or passive']}, +                {term: '為る', source: '為ろ',           rule: 'vs', reasons: ['imperative']}, +                {term: '為る', source: '為ない',         rule: 'vs', reasons: ['negative']}, +                {term: '為る', source: '為ません',       rule: 'vs', reasons: ['polite negative']}, +                {term: '為る', source: '為なかった',     rule: 'vs', reasons: ['negative', 'past']}, +                {term: '為る', source: '為ませんでした', rule: 'vs', reasons: ['polite past negative']}, +                {term: '為る', source: '為なくて',       rule: 'vs', reasons: ['negative', '-te']}, +                // ['potential', 'negative'] +                {term: '為る', source: '為れない',       rule: 'vs', reasons: ['passive', 'negative']}, +                {term: '為る', source: '為せない',       rule: 'vs', reasons: ['causative', 'negative']}, +                {term: '為る', source: '為せられない',   rule: 'vs', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '為る', source: '為るな',         rule: 'vs', reasons: ['imperative negative']}, + +                {term: '為る', source: '為れば',         rule: 'vs', reasons: ['-ba']}, +                {term: '為る', source: '為ちゃう',       rule: 'vs', reasons: ['-chau']}, +                {term: '為る', source: '為なさい',       rule: 'vs', reasons: ['-nasai']}, +                {term: '為る', source: '為そう',         rule: 'vs', reasons: ['-sou']}, +                {term: '為る', source: '為すぎる',       rule: 'vs', reasons: ['-sugiru']}, +                {term: '為る', source: '為たい',         rule: 'vs', reasons: ['-tai']}, +                {term: '為る', source: '為たら',         rule: 'vs', reasons: ['-tara']}, +                {term: '為る', source: '為たり',         rule: 'vs', reasons: ['-tari']}, +                {term: '為る', source: '為ず',           rule: 'vs', reasons: ['-zu']}, +                {term: '為る', source: '為ぬ',           rule: 'vs', reasons: ['-nu']}, +                // ['masu stem'] +                {term: '為る', source: '為ましょう',     rule: 'vs', reasons: ['polite volitional']}, +                {term: '為る', source: '為よう',         rule: 'vs', reasons: ['volitional']}, +                // ['causative passive'] +                {term: '為る', source: '為とく',         rule: 'vs', reasons: ['-toku']}, +                {term: '為る', source: '為ている',       rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: '為る', source: '為ておる',       rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: '為る', source: '為てる',         rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: '為る', source: '為とる',         rule: 'vs', reasons: ['-te', 'progressive or perfect']}, + +                {term: 'する', source: 'する',           rule: 'vs', reasons: []}, +                {term: 'する', source: 'します',         rule: 'vs', reasons: ['polite']}, +                {term: 'する', source: 'した',           rule: 'vs', reasons: ['past']}, +                {term: 'する', source: 'しました',       rule: 'vs', reasons: ['polite past']}, +                {term: 'する', source: 'して',           rule: 'vs', reasons: ['-te']}, +                // ['potential'] +                {term: 'する', source: 'される',         rule: 'vs', reasons: ['passive']}, +                {term: 'する', source: 'させる',         rule: 'vs', reasons: ['causative']}, +                {term: 'する', source: 'させられる',     rule: 'vs', reasons: ['causative', 'potential or passive']}, +                {term: 'する', source: 'しろ',           rule: 'vs', reasons: ['imperative']}, +                {term: 'する', source: 'しない',         rule: 'vs', reasons: ['negative']}, +                {term: 'する', source: 'しません',       rule: 'vs', reasons: ['polite negative']}, +                {term: 'する', source: 'しなかった',     rule: 'vs', reasons: ['negative', 'past']}, +                {term: 'する', source: 'しませんでした', rule: 'vs', reasons: ['polite past negative']}, +                {term: 'する', source: 'しなくて',       rule: 'vs', reasons: ['negative', '-te']}, +                // ['potential', 'negative'] +                {term: 'する', source: 'されない',       rule: 'vs', reasons: ['passive', 'negative']}, +                {term: 'する', source: 'させない',       rule: 'vs', reasons: ['causative', 'negative']}, +                {term: 'する', source: 'させられない',   rule: 'vs', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: 'する', source: 'するな',         rule: 'vs', reasons: ['imperative negative']}, + +                {term: 'する', source: 'すれば',         rule: 'vs', reasons: ['-ba']}, +                {term: 'する', source: 'しちゃう',       rule: 'vs', reasons: ['-chau']}, +                {term: 'する', source: 'しなさい',       rule: 'vs', reasons: ['-nasai']}, +                {term: 'する', source: 'しそう',         rule: 'vs', reasons: ['-sou']}, +                {term: 'する', source: 'しすぎる',       rule: 'vs', reasons: ['-sugiru']}, +                {term: 'する', source: 'したい',         rule: 'vs', reasons: ['-tai']}, +                {term: 'する', source: 'したら',         rule: 'vs', reasons: ['-tara']}, +                {term: 'する', source: 'したり',         rule: 'vs', reasons: ['-tari']}, +                {term: 'する', source: 'せず',           rule: 'vs', reasons: ['-zu']}, +                {term: 'する', source: 'せぬ',           rule: 'vs', reasons: ['-nu']}, +                // ['masu stem'] +                {term: 'する', source: 'しましょう',     rule: 'vs', reasons: ['polite volitional']}, +                {term: 'する', source: 'しよう',         rule: 'vs', reasons: ['volitional']}, +                // ['causative passive'] +                {term: 'する', source: 'しとく',         rule: 'vs', reasons: ['-toku']}, +                {term: 'する', source: 'している',       rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: 'する', source: 'しておる',       rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: 'する', source: 'してる',         rule: 'vs', reasons: ['-te', 'progressive or perfect']}, +                {term: 'する', source: 'しとる',         rule: 'vs', reasons: ['-te', 'progressive or perfect']}, + +                {term: '来る', source: '来る',           rule: 'vk', reasons: []}, +                {term: '来る', source: '来ます',         rule: 'vk', reasons: ['polite']}, +                {term: '来る', source: '来た',           rule: 'vk', reasons: ['past']}, +                {term: '来る', source: '来ました',       rule: 'vk', reasons: ['polite past']}, +                {term: '来る', source: '来て',           rule: 'vk', reasons: ['-te']}, +                {term: '来る', source: '来られる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: '来る', source: '来られる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: '来る', source: '来させる',       rule: 'vk', reasons: ['causative']}, +                {term: '来る', source: '来させられる',   rule: 'vk', reasons: ['causative', 'potential or passive']}, +                {term: '来る', source: '来い',           rule: 'vk', reasons: ['imperative']}, +                {term: '来る', source: '来ない',         rule: 'vk', reasons: ['negative']}, +                {term: '来る', source: '来ません',       rule: 'vk', reasons: ['polite negative']}, +                {term: '来る', source: '来なかった',     rule: 'vk', reasons: ['negative', 'past']}, +                {term: '来る', source: '来ませんでした', rule: 'vk', reasons: ['polite past negative']}, +                {term: '来る', source: '来なくて',       rule: 'vk', reasons: ['negative', '-te']}, +                {term: '来る', source: '来られない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: '来る', source: '来られない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: '来る', source: '来させない',     rule: 'vk', reasons: ['causative', 'negative']}, +                {term: '来る', source: '来させられない', rule: 'vk', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '来る', source: '来るな',         rule: 'vk', reasons: ['imperative negative']}, + +                {term: '来る', source: '来れば',         rule: 'vk', reasons: ['-ba']}, +                {term: '来る', source: '来ちゃう',       rule: 'vk', reasons: ['-chau']}, +                {term: '来る', source: '来なさい',       rule: 'vk', reasons: ['-nasai']}, +                {term: '来る', source: '来そう',         rule: 'vk', reasons: ['-sou']}, +                {term: '来る', source: '来すぎる',       rule: 'vk', reasons: ['-sugiru']}, +                {term: '来る', source: '来たい',         rule: 'vk', reasons: ['-tai']}, +                {term: '来る', source: '来たら',         rule: 'vk', reasons: ['-tara']}, +                {term: '来る', source: '来たり',         rule: 'vk', reasons: ['-tari']}, +                {term: '来る', source: '来ず',           rule: 'vk', reasons: ['-zu']}, +                {term: '来る', source: '来ぬ',           rule: 'vk', reasons: ['-nu']}, +                {term: '来る', source: '来',             rule: 'vk', reasons: ['masu stem']}, +                {term: '来る', source: '来ましょう',     rule: 'vk', reasons: ['polite volitional']}, +                {term: '来る', source: '来よう',         rule: 'vk', reasons: ['volitional']}, +                // ['causative passive'] +                {term: '来る', source: '来とく',         rule: 'vk', reasons: ['-toku']}, +                {term: '来る', source: '来ている',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '来る', source: '来ておる',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '来る', source: '来てる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '来る', source: '来とる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, + +                {term: '來る', source: '來る',           rule: 'vk', reasons: []}, +                {term: '來る', source: '來ます',         rule: 'vk', reasons: ['polite']}, +                {term: '來る', source: '來た',           rule: 'vk', reasons: ['past']}, +                {term: '來る', source: '來ました',       rule: 'vk', reasons: ['polite past']}, +                {term: '來る', source: '來て',           rule: 'vk', reasons: ['-te']}, +                {term: '來る', source: '來られる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: '來る', source: '來られる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: '來る', source: '來させる',       rule: 'vk', reasons: ['causative']}, +                {term: '來る', source: '來させられる',   rule: 'vk', reasons: ['causative', 'potential or passive']}, +                {term: '來る', source: '來い',           rule: 'vk', reasons: ['imperative']}, +                {term: '來る', source: '來ない',         rule: 'vk', reasons: ['negative']}, +                {term: '來る', source: '來ません',       rule: 'vk', reasons: ['polite negative']}, +                {term: '來る', source: '來なかった',     rule: 'vk', reasons: ['negative', 'past']}, +                {term: '來る', source: '來ませんでした', rule: 'vk', reasons: ['polite past negative']}, +                {term: '來る', source: '來なくて',       rule: 'vk', reasons: ['negative', '-te']}, +                {term: '來る', source: '來られない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: '來る', source: '來られない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: '來る', source: '來させない',     rule: 'vk', reasons: ['causative', 'negative']}, +                {term: '來る', source: '來させられない', rule: 'vk', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: '來る', source: '來るな',         rule: 'vk', reasons: ['imperative negative']}, + +                {term: '來る', source: '來れば',         rule: 'vk', reasons: ['-ba']}, +                {term: '來る', source: '來ちゃう',       rule: 'vk', reasons: ['-chau']}, +                {term: '來る', source: '來なさい',       rule: 'vk', reasons: ['-nasai']}, +                {term: '來る', source: '來そう',         rule: 'vk', reasons: ['-sou']}, +                {term: '來る', source: '來すぎる',       rule: 'vk', reasons: ['-sugiru']}, +                {term: '來る', source: '來たい',         rule: 'vk', reasons: ['-tai']}, +                {term: '來る', source: '來たら',         rule: 'vk', reasons: ['-tara']}, +                {term: '來る', source: '來たり',         rule: 'vk', reasons: ['-tari']}, +                {term: '來る', source: '來ず',           rule: 'vk', reasons: ['-zu']}, +                {term: '來る', source: '來ぬ',           rule: 'vk', reasons: ['-nu']}, +                {term: '來る', source: '來',             rule: 'vk', reasons: ['masu stem']}, +                {term: '來る', source: '來ましょう',     rule: 'vk', reasons: ['polite volitional']}, +                {term: '來る', source: '來よう',         rule: 'vk', reasons: ['volitional']}, +                // ['causative passive'] +                {term: '來る', source: '來とく',         rule: 'vk', reasons: ['-toku']}, +                {term: '來る', source: '來ている',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '來る', source: '來ておる',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '來る', source: '來てる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: '來る', source: '來とる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, + +                {term: 'くる', source: 'くる',           rule: 'vk', reasons: []}, +                {term: 'くる', source: 'きます',         rule: 'vk', reasons: ['polite']}, +                {term: 'くる', source: 'きた',           rule: 'vk', reasons: ['past']}, +                {term: 'くる', source: 'きました',       rule: 'vk', reasons: ['polite past']}, +                {term: 'くる', source: 'きて',           rule: 'vk', reasons: ['-te']}, +                {term: 'くる', source: 'こられる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: 'くる', source: 'こられる',       rule: 'vk', reasons: ['potential or passive']}, +                {term: 'くる', source: 'こさせる',       rule: 'vk', reasons: ['causative']}, +                {term: 'くる', source: 'こさせられる',   rule: 'vk', reasons: ['causative', 'potential or passive']}, +                {term: 'くる', source: 'こい',           rule: 'vk', reasons: ['imperative']}, +                {term: 'くる', source: 'こない',         rule: 'vk', reasons: ['negative']}, +                {term: 'くる', source: 'きません',       rule: 'vk', reasons: ['polite negative']}, +                {term: 'くる', source: 'こなかった',     rule: 'vk', reasons: ['negative', 'past']}, +                {term: 'くる', source: 'きませんでした', rule: 'vk', reasons: ['polite past negative']}, +                {term: 'くる', source: 'こなくて',       rule: 'vk', reasons: ['negative', '-te']}, +                {term: 'くる', source: 'こられない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: 'くる', source: 'こられない',     rule: 'vk', reasons: ['potential or passive', 'negative']}, +                {term: 'くる', source: 'こさせない',     rule: 'vk', reasons: ['causative', 'negative']}, +                {term: 'くる', source: 'こさせられない', rule: 'vk', reasons: ['causative', 'potential or passive', 'negative']}, +                {term: 'くる', source: 'くるな',         rule: 'vk', reasons: ['imperative negative']}, + +                {term: 'くる', source: 'くれば',         rule: 'vk', reasons: ['-ba']}, +                {term: 'くる', source: 'きちゃう',       rule: 'vk', reasons: ['-chau']}, +                {term: 'くる', source: 'きなさい',       rule: 'vk', reasons: ['-nasai']}, +                {term: 'くる', source: 'きそう',         rule: 'vk', reasons: ['-sou']}, +                {term: 'くる', source: 'きすぎる',       rule: 'vk', reasons: ['-sugiru']}, +                {term: 'くる', source: 'きたい',         rule: 'vk', reasons: ['-tai']}, +                {term: 'くる', source: 'きたら',         rule: 'vk', reasons: ['-tara']}, +                {term: 'くる', source: 'きたり',         rule: 'vk', reasons: ['-tari']}, +                {term: 'くる', source: 'こず',           rule: 'vk', reasons: ['-zu']}, +                {term: 'くる', source: 'こぬ',           rule: 'vk', reasons: ['-nu']}, +                {term: 'くる', source: 'き',             rule: 'vk', reasons: ['masu stem']}, +                {term: 'くる', source: 'きましょう',     rule: 'vk', reasons: ['polite volitional']}, +                {term: 'くる', source: 'こよう',         rule: 'vk', reasons: ['volitional']}, +                // ['causative passive'] +                {term: 'くる', source: 'きとく',         rule: 'vk', reasons: ['-toku']}, +                {term: 'くる', source: 'きている',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: 'くる', source: 'きておる',       rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: 'くる', source: 'きてる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, +                {term: 'くる', source: 'きとる',         rule: 'vk', reasons: ['-te', 'progressive or perfect']}, + +                // Uncommon irregular verbs +                {term: 'のたまう', source: 'のたもうて',   rule: 'v5', reasons: ['-te']}, +                {term: 'のたまう', source: 'のたもうた',   rule: 'v5', reasons: ['past']}, +                {term: 'のたまう', source: 'のたもうたら', rule: 'v5', reasons: ['-tara']}, +                {term: 'のたまう', source: 'のたもうたり', rule: 'v5', reasons: ['-tari']}, + +                {term: 'おう', source: 'おうて', rule: 'v5', reasons: ['-te']}, +                {term: 'こう', source: 'こうて', rule: 'v5', reasons: ['-te']}, +                {term: 'そう', source: 'そうて', rule: 'v5', reasons: ['-te']}, +                {term: 'とう', source: 'とうて', rule: 'v5', reasons: ['-te']}, +                {term: '請う', source: '請うて', rule: 'v5', reasons: ['-te']}, +                {term: '乞う', source: '乞うて', rule: 'v5', reasons: ['-te']}, +                {term: '恋う', source: '恋うて', rule: 'v5', reasons: ['-te']}, +                {term: '問う', source: '問うて', rule: 'v5', reasons: ['-te']}, +                {term: '負う', source: '負うて', rule: 'v5', reasons: ['-te']}, +                {term: '沿う', source: '沿うて', rule: 'v5', reasons: ['-te']}, +                {term: '添う', source: '添うて', rule: 'v5', reasons: ['-te']}, +                {term: '副う', source: '副うて', rule: 'v5', reasons: ['-te']}, +                {term: '厭う', source: '厭うて', rule: 'v5', reasons: ['-te']}, + +                {term: 'おう', source: 'おうた', rule: 'v5', reasons: ['past']}, +                {term: 'こう', source: 'こうた', rule: 'v5', reasons: ['past']}, +                {term: 'そう', source: 'そうた', rule: 'v5', reasons: ['past']}, +                {term: 'とう', source: 'とうた', rule: 'v5', reasons: ['past']}, +                {term: '請う', source: '請うた', rule: 'v5', reasons: ['past']}, +                {term: '乞う', source: '乞うた', rule: 'v5', reasons: ['past']}, +                {term: '恋う', source: '恋うた', rule: 'v5', reasons: ['past']}, +                {term: '問う', source: '問うた', rule: 'v5', reasons: ['past']}, +                {term: '負う', source: '負うた', rule: 'v5', reasons: ['past']}, +                {term: '沿う', source: '沿うた', rule: 'v5', reasons: ['past']}, +                {term: '添う', source: '添うた', rule: 'v5', reasons: ['past']}, +                {term: '副う', source: '副うた', rule: 'v5', reasons: ['past']}, +                {term: '厭う', source: '厭うた', rule: 'v5', reasons: ['past']}, + +                {term: 'おう', source: 'おうたら', rule: 'v5', reasons: ['-tara']}, +                {term: 'こう', source: 'こうたら', rule: 'v5', reasons: ['-tara']}, +                {term: 'そう', source: 'そうたら', rule: 'v5', reasons: ['-tara']}, +                {term: 'とう', source: 'とうたら', rule: 'v5', reasons: ['-tara']}, +                {term: '請う', source: '請うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '乞う', source: '乞うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '恋う', source: '恋うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '問う', source: '問うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '負う', source: '負うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '沿う', source: '沿うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '添う', source: '添うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '副う', source: '副うたら', rule: 'v5', reasons: ['-tara']}, +                {term: '厭う', source: '厭うたら', rule: 'v5', reasons: ['-tara']}, + +                {term: 'おう', source: 'おうたり', rule: 'v5', reasons: ['-tari']}, +                {term: 'こう', source: 'こうたり', rule: 'v5', reasons: ['-tari']}, +                {term: 'そう', source: 'そうたり', rule: 'v5', reasons: ['-tari']}, +                {term: 'とう', source: 'とうたり', rule: 'v5', reasons: ['-tari']}, +                {term: '請う', source: '請うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '乞う', source: '乞うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '恋う', source: '恋うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '問う', source: '問うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '負う', source: '負うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '沿う', source: '沿うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '添う', source: '添うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '副う', source: '副うたり', rule: 'v5', reasons: ['-tari']}, +                {term: '厭う', source: '厭うたり', rule: 'v5', reasons: ['-tari']}, + +                // Combinations +                {term: '抱き抱える', source: '抱き抱えていなければ', rule: 'v1', reasons: ['-te', 'progressive or perfect', 'negative', '-ba']}, +                {term: '抱きかかえる', source: '抱きかかえていなければ', rule: 'v1', reasons: ['-te', 'progressive or perfect', 'negative', '-ba']}, +                {term: '打ち込む', source: '打ち込んでいませんでした', rule: 'v5', reasons: ['-te', 'progressive or perfect', 'polite past negative']}, +                {term: '食べる', source: '食べさせられたくなかった', rule: 'v1', reasons: ['causative', 'potential or passive', '-tai', 'negative', 'past']} +            ] +        }, +        { +            valid: false, +            tests: [ +                {term: 'する', source: 'すます',         rule: 'vs'}, +                {term: 'する', source: 'すた',           rule: 'vs'}, +                {term: 'する', source: 'すました',       rule: 'vs'}, +                {term: 'する', source: 'すて',           rule: 'vs'}, +                {term: 'する', source: 'すれる',         rule: 'vs'}, +                {term: 'する', source: 'すせる',         rule: 'vs'}, +                {term: 'する', source: 'すせられる',     rule: 'vs'}, +                {term: 'する', source: 'すろ',           rule: 'vs'}, +                {term: 'する', source: 'すない',         rule: 'vs'}, +                {term: 'する', source: 'すません',       rule: 'vs'}, +                {term: 'する', source: 'すなかった',     rule: 'vs'}, +                {term: 'する', source: 'すませんでした', rule: 'vs'}, +                {term: 'する', source: 'すなくて',       rule: 'vs'}, +                {term: 'する', source: 'すれない',       rule: 'vs'}, +                {term: 'する', source: 'すせない',       rule: 'vs'}, +                {term: 'する', source: 'すせられない',   rule: 'vs'}, + +                {term: 'くる', source: 'くます',         rule: 'vk'}, +                {term: 'くる', source: 'くた',           rule: 'vk'}, +                {term: 'くる', source: 'くました',       rule: 'vk'}, +                {term: 'くる', source: 'くて',           rule: 'vk'}, +                {term: 'くる', source: 'くられる',       rule: 'vk'}, +                {term: 'くる', source: 'くられる',       rule: 'vk'}, +                {term: 'くる', source: 'くさせる',       rule: 'vk'}, +                {term: 'くる', source: 'くさせられる',   rule: 'vk'}, +                {term: 'くる', source: 'くい',           rule: 'vk'}, +                {term: 'くる', source: 'くない',         rule: 'vk'}, +                {term: 'くる', source: 'くません',       rule: 'vk'}, +                {term: 'くる', source: 'くなかった',     rule: 'vk'}, +                {term: 'くる', source: 'くませんでした', rule: 'vk'}, +                {term: 'くる', source: 'くなくて',       rule: 'vk'}, +                {term: 'くる', source: 'くられない',     rule: 'vk'}, +                {term: 'くる', source: 'くられない',     rule: 'vk'}, +                {term: 'くる', source: 'くさせない',     rule: 'vk'}, +                {term: 'くる', source: 'くさせられない', rule: 'vk'} +            ] +        } +    ]; + +    const vm = new VM(); +    vm.execute(['bg/js/deinflector.js']); +    const [Deinflector] = vm.get(['Deinflector']); + +    const deinflectionReasions = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'ext', 'bg/lang/deinflect.json'))); +    const deinflector = new Deinflector(deinflectionReasions); + +    for (const {valid, tests} of data) { +        for (const {source, term, rule, reasons} of tests) { +            const {has, reasons: actualReasons} = hasTermReasons(Deinflector, deinflector, source, term, rule, reasons); +            let message = `${source} ${valid ? 'does not have' : 'has'} term candidate ${JSON.stringify(term)}`; +            if (typeof rule !== 'undefined') { +                message += ` with rule ${JSON.stringify(rule)}`; +            } +            if (typeof reasons !== 'undefined') { +                message += (typeof rule !== 'undefined' ? ' and' : ' with'); +                message += ` reasons ${JSON.stringify(reasons)}`; +            } +            if (actualReasons !== null) { +                message += ` (actual reasons: ${JSON.stringify(actualReasons)})`; +            } +            assert.strictEqual(has, valid, message); +        } +    } +} + + +function main() { +    testDeinflections(); +} + + +if (require.main === module) { testMain(main); } |