Compare commits

...

23 Commits

Author SHA1 Message Date
Dendy e81cca72e1 feat: Paint kanji grid row background green on completion 2025-09-08 10:19:22 +02:00
Dendy 1db54a9235 feat: Add some more ignored kanji 2025-09-08 10:18:57 +02:00
Dendy 3f1ac9c2a0 feat: Add styling to ignored notes & honor newlines 2025-09-08 10:18:40 +02:00
Dendy f5a65fbe05 feat: Fix parsing of ignored explanation, add to kanji view 2025-09-08 08:36:13 +02:00
Dendy 76f5f30a47 feat: Add terms automagically when creating unicode cards 2025-09-08 08:25:31 +02:00
Dendy 1ab67249bf feat: Change over to dark mode 2025-09-08 08:25:22 +02:00
Dendy 89db3846d0 feat: Kanji view styling, bigger furigana 2025-09-08 08:24:53 +02:00
Dendy 87ca6a5564 feat: Grey out ignored kanji in grid with special list 2025-09-08 08:23:52 +02:00
Dendy a2c07e5d2f feat: Only show those terms that indeed have the query in them 2025-09-06 11:59:07 +02:00
Dendy 99fedadd81 feat: Add terms to kanji view 2025-09-06 11:49:51 +02:00
Dendy e92549b504 feat: Add search functionality & styling 2025-09-06 10:23:09 +02:00
Dendy 8ae1107529 style: Add .editorconfig to ease editing & indentation in html 2025-09-06 10:04:05 +02:00
Dendy 93a54f323c feat: Add some more databases 2025-09-05 07:05:39 +02:00
Dendy e0b5ca0ed8 fix: Don't E500 because of not having kanken kanji jiten kanji index 2025-09-05 07:05:05 +02:00
Dendy 649cecfa36 feat: Implement individual kanji view with niceties 2025-09-04 17:08:37 +02:00
Dendy b67434abda feat: Properly import HTMX & bootstrap's js 2025-09-04 17:08:14 +02:00
Dendy 043f936497 feat: Implement export of ebook references with path to the files 2025-09-04 17:07:50 +02:00
Dendy 7fb8bbe79d feat: Import list from ebooks 2025-09-04 07:54:10 +02:00
Dendy b150fc0c10 feat: Add jimaku list with tool to retrieve it + 1 kyoyou 2025-09-03 17:51:06 +02:00
Dendy 46ae2a17b2 feat: Allow character list force-rebuild with "no-cache" 2025-09-03 08:30:53 +02:00
Dendy 39fbc1b01d feat: Build cache for character listings 2025-09-03 08:20:34 +02:00
Dendy 0c73ba8263 feat: programmatic import of lists with sublists, "proper" styling 2025-09-03 08:03:23 +02:00
Dendy 11cae6aad1 feat: Get char list info in a more programmatic way preparing for cache 2025-09-03 07:31:14 +02:00
22 changed files with 1180 additions and 123 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
end_of_line = lf
charset = utf-8
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{html.twig,html}]
indent_size = 2

View File

@ -1,2 +1,5 @@
import './styles/app.css';
import './vendor/bootstrap/dist/css/bootstrap.min.css'
import 'bootstrap';
import 'htmx.org';

View File

@ -2,3 +2,7 @@ a {
text-decoration: none !important;
color: inherit !important;
}
rt {
font-size: 0.75em;
}

View File

@ -5,12 +5,15 @@
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
app.charlist.basepath: '%kernel.project_dir%/data/lists'
app.var.basepath: '%kernel.project_dir%/var'
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
bind:
string $varBasepath: '%app.var.basepath%'
# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name

103
data/ignored.list Normal file
View File

@ -0,0 +1,103 @@
ladle for holding wine made from dried gourd (匏), used in ancient marriage
rituals.
Not very interesting but also it's the simplified version of 巹... Idk, a little
stretched.
It's mostly only used as a component, the origins are unclear but it's known
it represents a man kneeling in front of another. As a component it's
interesting but it's never gonna appear and it's mostly used in old chinese
texts to mean "I" or rise/stirred/roused/high which you know from 昂揚感.
https://en.wiktionary.org/wiki/%E5%8D%AC#Chinese
Maybe interesting in the future as I see this kanji used more and more.
REVISIT
異体字 of 卬 but sometimes also 邛, which is called an erroneus/mistaken form
of the other. This mistaken form is the only one that the kanken jiten has.
As an 異体字 of something that is set to be ignored, there's not much value in
it.
Seems to be an 異体字 for quite a bunch of stuff? But mainly of 鹵 which is
the origin for 西 AKA 卥 AKA 㢴. Seems to represent a bag. For details read:
https://en.wiktionary.org/wiki/%E8%A5%BF#Etymology_1
Just one type of vase to store alcohol, not too relevant otherwise.
https://zh.wikipedia.org/wiki/%E5%8D%A3
Simplified version of 盧, doesn't seem to be too relevant or used. Maybe it
should be revisited once 盧 is studied or it appears in mining. For now it's
not worth it.
REVIEW
Used only to reproduce the sound "かー" de otros idiomas. Es un poco
inconsistente. Por ejemplo para "car" o "card" del inglés y nombres de figuras
budistas, pero que en japonés ni se escriben así realmente. Por ejemplo
タンカ - 唐卡
Sale como 異体字 de 猛 pero en verdad parece ser que se usa en nombre de
cuidades tailandesas? Parece que denota un tipo de templo especifico.
https://en.wikipedia.org/wiki/Mueang
異体字 de 勅 y su 旧字体「敕」. No tiene mucho interés.
Significa "harmonioso" pero no hay mucho en referencia de ello.
Básicamente se usa para el nombre de un pavo que hizo un libro sobre agricultura.
En ebooks sale esta persona también referenciada.
Versión simplificada de 勩. No tiene ni uso ni referencias ni nada.
異体字 of 勉強の勉. No se usa. No tiene interés.
Old variant of 掬, also has the 古字 of "𦥑" . An ebook says it represent
having your hands full with rice.
Old variant/origin? of 陶, which is 常用漢字 / 名前に使える漢字 and 3級. Seems
to kinda mean "pottery" , "clay" . It's used in 陶器[とうき].
Not interesting on its own
Old vase for holding water/wine. Not used aside from that.
https://en.wikipedia.org/wiki/Yi_(vessel)
REVISIT
Simplified form of 匭. Not of interest at all. Small box or something.
Old variant of something that isn't even used. No reason to pay attention
Not used at all, wtf. Seems to be used in some dialects to kinda mean 蓋[ふた].
Of no interest.
Traditional chinese of 匾 (same code lol). Horizontal tablet to have the name
of stuff in entrances and stuff.
Traditional is 匾 and in japanese it's just 扁, wich is
一級. Of no interest for now, idk, too many characters for one concept.
https://zh.wikipedia.org/wiki/%E5%8C%BE%E9%A1%8D
REVISIT
Means forty. Not used aside historially and not as funny as 卄, 卅 or 卆
Seems to be used in names of places and that's kinda it. A variant of 鞭 or
something. Not learning it for now. Of no interst.
used in the transliteration of the names of organic compounds porphyrin 卟啉
and porphin 卟吩. Of no use.

View File

@ -1,3 +1,3 @@
部首
力勹匕匚匸十卜卩厂厶又口刀
冂冖冫几凵力勹匕匚匸十卜卩厂厶又口刀

194
data/lists/ebook.list Normal file
View File

@ -0,0 +1,194 @@
/strg/jp/ebook/
表紙人間試験零崎双識西尾維新第一回最高評論家低演出面白舞台限名探偵殺鬼手際終死何
悪必然私思車両中二別段特殊状況片田舎平日昼電事情学生服着少年髪毛薄脱色本格好銀耳
首指派飾随分離背男痩身体見者大柄印象与足異常長伴校美術室針金細工広縁眼鏡当前過驚
似合他誰内会話交方的対語窺例彼存在理由場官憲捕取調裁判結果刑宣告勿行冤罪執法律捜
査頭全関係空降阻石潰疑運風気返迷惑単純丈自倍無視決込度胸適相槌打言突詰概念善意良
隙油断物登正義説聖倫謎解連資愛真現不可能精杯勇振絞感声反世救呼歳食苦笑駁答既頃葉
遊聞持趣味君教柘植慈恩恐乗流開祖同父様実素晴奴知続界滴地雷埋部屋閉活命引信号確率
至更増要訊志願想為逃避口改向今遅次駅換通考得駒使変哲欠越呆噴漏齢丁弟俺兄賢明故歯
切望傍点輪腕勧区洒落読質問宇野浩普性将来多働姿頷雄弁肯定態構遣時若代選嫌非顕著抱
怖上息傷繰幸福周囲効心尊敬神傑歴史傾直奇寡以偉業書清音奏成遂否文侍愉快負羨誉栄位
財産重欲局仲哺乳動宿難顔才役立邪魔根拠革隠靴遍包形馬鹿伸染散々穴携帯用下刺青我慢
阿加減親貰小僧族殴興余種達誇先像複雑違顎挙袋貴妹珍割葛藤十権昔経寄集困員狂庭規忘
字転急犯目標放浪癖極外岡山渡吉備団子沖縄飛京都八橋報甘党警察任駄微頼題厄介軽緒失
礼研鎖積未熟酷夏危険煩悩応絶五抵後縛刈仕辺鋭皆嘘把所勘狼属繋追許程予測恥裏計始送
鳴到近停止待午授職喰腰浮網棚鞄科玉条嬉誤化袈裟作入速接触画側模凶器拵鋏型尋半月鋼
鉄鍛刃式和螺固装怪談刀冶則誂番数称安易控技潮披露脚線詞隣移般径拳銃虚互枠脅道具賊
認草初狙屈穏主鳩伝巨蟷螂受抜威嚇歩退蛤古蓋骨砕独塵霊敵逆百消付頁憎保怨恨偶黒戻女
発練幼稚偏満仮伊織球筋展起劇妙機客観申迫七育奪済勝利跡強唐池粗了覚供漠看護婦原稿
枚夢姉写創四逸材褒朝記共走路沢岸徳彦容裂憶辿符途底沼潜力残責刻課帰宅架響佇置喉机
並勉替制袖血徒帳住混河靖瞭笛叙述汚配留春肥守皮膚肉臓掛進瞬絵火曜陰覗衝優防衛憚万
王騒忌敗北壊襲偽階系簡弱己闘含友喧嘩飽再順踏席漫眠末娘逮三壁差尚撃堂証算隅釈迦挨
拶摘抑病乱横倒伏完案個幻嬢苗宮武蔵養崇提栓赤益洋議習慣営呟比喩緊張焦示国天篠震推
薦園有星徹躾楽肩踵滑馴距綻氏喚犬品納眉喪造期棄境花弓矢影努汲買貧暗街映傲稽導諦節
元喋助光闇叶濁眺致赦量右左端瓜奮頚戯滅茶掻勢密遥綺麗奥魅早迎遠僕帽曖昧参獄攻隊剣
崩照淡魚費慮噂深薙慎環軍核森林築莫爆弾屁破賛唱狭斬誘鈍省甲痕浴久丸爪怯功貼咳務暇
芯千射覧図眩腹択六除統壮士揃晒老冗句寒裕如渉哀膝即耶仏巣夜母総阪戦級葬芸類臭玄廊
延肢押怒泣苛暢悟鍵晩餐景雰値斜袴厚鉢巻棒乖慌御飯箸碗土鞋錯紹蕨件斟酌給座椅握謝寧
蔽略匂歪暮戸舌唸俯蹴郎豹料暴叩豚腎煮挑迅締寸痛抗拍緩頬睨竦訂雨折畳傘畜咄嗟夕罰誅
佻戒秘里範還劣耐角僅悲窓抉太愕群浜倉梶埜雅紘章陸雪払注戮準静巴居及筆較寺槍届鎧便
叫等旦吹掃尻沈黙催操継設洗脳這毎施価宗巧専門禁海基審圧卑卜誠去布敷編井頂企跳躍亮
額添波床封錠紐縮韜晦束篭姦処没卒夫蹲拘据健康恋諸秒九孤寂惨競捨市民希颯爽遭遇害愚
拮圏侵泥扉臨妖峙町溝溺貸侮辱躊躇墓虐師凪鳥肌因踪兆拐銭索雇尽班寛憤懣竄醒蘇仰担柔
軟疲労嘆腱竜熱板猫踊陥捉鎬羽揮痺蛭胴炸往杖荒寿呈房轍粋曲仇軋厳渋慄復讐典支冒短投
擲俗策咆哮軌徴捌旋躱唖牽組鬱陶昨禍揺懐円溢鮮筐麦畑孝妄獣寝争挫序列屍排抹朱閑削拷
検祷輝宝桁吊宙鯉蝶滞髑髏紫襟彩塗頑餌釣肖収疇攣拒借焉怜悧冷公招吐犠牲温拝監郭衣是
請桐博燕描牛衆沸祝薬詳箇矛盾製忍水漢扱憩陽昇雲伐候蛇妨呪損窮茂木遮樹罠儀枝従休囚
均衡貌超斐釘虫蠢謀綿紅亡撤臆絡吸煙箱銜炎亘悠渇呂南約暑梁脇慰屠匕芳源曰誕侠獲蒙懊
荷潔凋盤霧毒妥協悶粛瞠撞堵澹喝采契箕誹諺究託欺隔沌懇倦怠庸陵却娯惰堕叱墜癩嗜朴潤
湧層貫譲唇激昂玖渚拭咎諍駆逐縦縫東覆障蓑嵐鷹熊覇烈徐伍庇隕肋軒憂脈刹那捻唯乾坤沛
鼻歌喜朽牒瀬鞭詮華奢剥堪庫涙銘垂咽豆腐贈麻顰弑悔斗幽魁塾噛婆眸司豊富騙彫幹云邂逅
稼嵌脛礫肝痒瞑慕瞳躰捧撫髄治陳祈飲凍梛雌嶺鞘卵児承促患札訝討姑乞顧逝惜醜胡坐巡弄
遺嘲湿液溜撲凌駕僥倖拾廃儚犇猛絃糸辞而抽秀睡盛燭膜弊脂汗濡厭淫忠臥採録淵喫硬拉朦
朧干魑魍魎吼撮拗各坊陣瀕賃占翳糊泡瞰講誑擬滔猜恣唾忙鑑膳玩兼週芝紛祭傀儡肺堤恍惚
昏累茫賞疎裸売憧悼痴院辛鼓匹呑侭訓咲援轟川蕩塞鐘嘯澤旬暖埼棟睫藍璧霞皺輩酒酔整焼
瞼〇社掘繫店郷礎補挟菜啜菓郊瘦墨摑弧呻塊腑診預駐医療蛍灯噓沿億劫虹灰械晶腫管盪症
凝頰仁昭透揉慨炭酸喘疼桜汀充浅菌胞卓盗剤憑燃訳牧尺智妻冴搔閏委巳牢曇濃槽館緑凄聴
贅煽猿轡翌茜漁領塩妃績賭泊建蔡歓券剃飄塔粟堅燐榴撒吠墟穫漂秋錆域顚祓頓剝郵埃鈴涼
滲求笠澄洞梯嗅擦軸嚙摩耗季綱漆修仄砲壕農貯暦沙汰旅梅販駿坂柱央粉斫隈囓侘筒羊羹柿
訪姜湯城砦逢蒔祟啓辻褄島載粘瞥溶皿票磨紋被媒掲懸赴航囁懲飼脊枷緯但攫獅英曳鷲殻幅
粒侶窟瑞萎檻憾令兵漕永股津蚊丘署瓦黄併轢弛尼巾珠渦斉滝翻船褪魂狸襖鴨摺壇牌醸艶糾
倣衰啞髭梢憊履献篇竿欄註諾拓冊版朗刷籍株童宴砂糖奨励項伺胆賑泉遡紀國餅裾伎商岩粧
蔦豪香免絨毯瓶竹桃拡尿災斤芋酎琴惹咤召惧貢秩揚炒猥蛙牙冠浸谷垢凸冬垣蒼痙煌撥雫柵
憔悴癇癪齟齬鉛稜枯焚蜘蛛搦薪融依笹塚稀米匍匐舗苔擁凹鮭昆淹崖藪鉈塀仙椿松杉鋳衷籠
菰藁框扇簞笥須盃挿炉熾鉤盆汁椀柳鶏県掬鍋壺燥肪紺纏臙楊煎狩棲炙猟猪迂硝肛腸咀嚼疫
輿訴縋骸遁嫉妬陀繕尖珊瑚穿愁韻函旨疾麓敏捷燦棘鱗舐咥宛婚妊娠櫛爺祥之扶桑刊勁稲淳
蜜嫁條償嬌奉耽蓮紗穂媚睦勤唆騰楚蹂躙暈捏嵩捩悦靡揶揄噤掌貞吟繊膣羞膂亀褻膨娶紡錘
淑嗚貪夥迭脆憐勃杞蜂舟掠牡些凛蟲錦掴恰闖詫恵腋鯱仔乙隆培詣馳絹肘茎臀傅癒醇剛嘶菊
括逞閨穢謙窄啄沁涎腔嚢栗牝矜滓襞諭賜貝婀娜苑宵跨嗄朶灼隘屹嫣孔棹蠕蟹磁啼串鬢蓄胤
耕畝悸践曝幾蔑滾綴甚泌奔鼠跪蠱悋錐萌顏覿饐戴噎頤征胃壷蒸埒狽梳彷徨胎躁蟻涕芽嬲漲
繁渓蕊姫攪拌畔燻聡晰鎌幕涛羅逡弦搾募嚥奈柑橘葵析雛丹楯謳迸舵闊澱焔噯蹊曽藉沫紳虜
蛮坩堝蕾抓宥窪就鴇靄漬莞爾孕爛淀絖斂龍皇貨殿眷帝冥尤軀飢岐政府匙吞毅冑騎遽譜氷翼
摯凜乃枕誌濯箒欧猴孫饒狗鳶麵某邸匿潭陛副旧釜寮祐虔罵僚浄又奘匠吒筈督觔蟠旃檀鎮婿
閃峰錬薔薇窒鮫戚雀誓詩饕餮謹曹鯛弥乏柴廻亜朔俄雉俠猊購需村飴噌俵榮頻泰扮臣批詈茨
俊曾涯燈酬畏措厘蹄袍偃拱祀廟劉孟勅痣糞隻此魄賦敢讃兎嫦娥諜遜轄絆膏勾禅緻囮兜痍赫
譚廉州峡鰻撰賓搭泳碧摂靭儲僻烏俳屯盟閥懺虎殲棺桶贔屓姥絢僭餉只棋蘭棍巫戟克糧鳳凰
汝哄旺郡礁裔帆叉旗咬湖卸藹搬慟哭輸磋琢叢弔狐賽狛拙賀江斧洪暁栽訛餡洛悍鼬鞍枢囊勲
該塡卿贄姪霹靂憫叔盒岳甥擢欒跋扈賤荘貶徘徊殉燼鱈禄嘗銛港幌褐芒伯爵閣堀餃醍醐儂帥
恒厩蔓瘴蛾碑浦隷梵播慶烽斥套魏儒敦鬨桔梗麟佐渾叡矯昌吾驀剰弘汽董詐貿銅剖厨簿幣循
窃凡陪湾廷訟賠税詭也頒亭獰緞塀佳缶丑蜻蛉辰漱呵禱饅曼炬燵洟炊茸呷蚕酢捗峻傭宜溌剌
梓哨彰躓暫其罷綯檜坦醤鶴鹸嗤訥撻謗囀膵癌享臑丼濤瀾殖盲邁輔阜棗倹謄窘邦汎挽蜃楼溫
菩薩磯椒鼎豐啊羽蠶簽會朋很笨蛋驗獸靈戀骷翠翡肴獺蝕芥茹嚆甕滂沱雁蒡姓辣蕎痔魘猶醂
愾侃諤躯刎昴芻縒衒煉謁錫栞麺諌毟腥箔慧惣捲娩敲薫鋤碁鮎閲鵜滋辟謂庶淋黎鮨蝎倶瞞壌
繡耀箋睥憬眇錚楓窶腺瑕疵匡湘鱧縷幡筍徽鯖升顛矮瘤杙附賄繍梨筑遵紆霜苺酵藻榊睾桟宰
靱濾彙啖驕寵餓甁噪娼穹淆痼憮甦囃彿鴻祉嘔脹亢柏疹毀膠諫熨窩罹蝋篤嫋軛秦瘍訣謡縺庁
湛洩潑溂齧琥珀潟裳爬岬慇懃楕簾呉蠟贖荼毘薹瀉腓腿屑堰准詠恭蠣疸翁胚狢鰊虻鹼烹葱椎
臍醬橙儘愴煤蠅蟬鋒鄙蛆綽涸肇荻菱詛𠮟綾狡猾眈玲刮杓琉蛹蘊亦几虛斡忸怩簀蝙蝠蝸巷俟
吽栂沽柚做頸箪罅篩挺閾托截秤薮櫻遼槎劃穣葦鷺渠忽蝉峠躑躅應繹嶋簒袂姬帖當硯鴎沓緋
俤鴉吃盥聊捥慙愧葡萄嘉漸慾慼寫眞或遙吻悉杭舳瘧悄顫鏖婪譫斯蛻箍葩唄杜黴賂侯遷殆翔
繭硲沃踝曙耄碌塑硫韓縞聘萩坪舶珪幟鰭扁姻艇鉱瑠掟婉剋斎氣杏汐莉慷炯恫彗剽嬪嫡蹙弩
瓏蓬帛俸忖瀑挾胯逗撹泄斑蔭鷗游漿涌撼幀桂抄鍾隼宏荀媛槻檄謐圀閊餞捺檸檬伽聳趨噺填
涜嘱蚯蚓寥且皙竪霆奄鑽擽凭吝恙櫂帚誦樺麝沐瀆凱佩犀帷鍔埠崗債烙淘濠凧饗鎚艘艦鐙鱸
嘴氾濫廓蒐磔鑿喊碍纂綜楠夭扼尉恕朕欣臂劾囂吏殷籤蛟驟濛漓懼鵬劔恤覺頽聾翦柊椋艱楔
叛璽滸榜憺堆甜毬奸麾鋲麩痢鰐恢眦焜玻璃雖齎簪粥珈琲嗾茄鯵鰹蛸顆榛禰摸梱禽佃﨑滉濱
庄浚圭寓皐㟢塁冨皴偲梃哉杵洲僑筥榎掏灘鼾鬚墾蜥蜴藷蕪祠檎磊灸橇矍鑠鎗鍬耘樽梟樫窯
禿於胛戎俱桿賎來罫租舘菖蒲篝奧砥馮昊楢麸閻濘陞臼鬣坑哂塒裃磐鑚筮拇籾渥齋嗣栁撓橡
鋸虱邏縊鞣寅藝鱒祇昶舅贋櫓鍮鸚鵡訶倅隋芦李貉襤褸錨樵恃畦旱竈竃晄閂橈學孵瀟衾紬疳
匣蹟鯨痘鬘皸姐谺噬酪鵠辜尸啾熔懦庵饉諧謔按魃妾夷蠍櫃鉞鏤穽艤妓攀杳蝿穀膿墳鏑寞后
舷樅矩剱禊誾站筧淺吶鍼圃糟鉾珎芬膀胱畿俣齣樋鹹灌漑劈駈卯堡喇叭掩拿誼焰裡褥貂馭竣
裑繻鏃菫鮃喀冽畠鍍鵞訃痞鈑翅獪諳楡茅葺覘慚兇乎罌狎刳箴笊媼譬鰈鶉巌弼气颶鄭靠蒜坡
箭虞睛禹淮竺卦繞體絣盂蝦瑪瑙麒跏趺歐嘻箝莢椰翹幇剪籘謬亞鰯狒恬郁稗嬰柩猩薯琵琶勒
瓢鮪鰤瑛伶藩戊厠菅栴晋輛蕭抛酋榕鬩漣迴鱠鉋糜詔斃霰澎湃忝糺蜷悽渺踞囈杢惶踠棉撚擡
襷鬆漉欅逼瑣逓筏旁挌娑擅砌懍毫繙酩酊薀蜉蝣雹豁倆鎹畢竟壜鼈倪諮麿勸膾駱駝笏繚掉瞋
恚鈷鑢痾蕁鑷瘢羆痰堺隧嗇菲碩篆枡樟鐵瀞溪輻玫瑰釉鉦丗肱荊枳碇褶鵺罐釦蜚粁寳俥鞠鈿
宸髯豫實稔歸屬爭傳權决樣據拂練臺緣邊隨稱喝團變類佛墨淒乘裝餘觀孃迄麴茣蓙寶梅斷發
經者郞莊德數畫輕甫殺勤藏搜續桝揆擾渙牴泚熙咨蚪觝啅昃羃羚瑶罘乕鵰篥濕翫鵫苞塘冕凉
睹覯觸鉉夲癲佑蛞蝓栃緘鞴諏秣褌丞韮晃黝馥攘髷悖醺蝗莵儕夾鈞漾惟涅槃廣鰆蚩糠鑼斛煉
蟀韋疱瘡蚤孩蜀黍闌忉寇霖燿闢羯俎咢鰺軈鯰宍搗闍皓屛脾霍枇杷諂欹抒蜊栖澪儺濵砧鯔緖
媾膓瀝桎梏緬魯俚煢盈宕鳰梧酉戌亥已蟄趾渕苫壱箏亨邑駘黌襦袢賈掖陋允聯湊鮒孰鯢鸞厓
麹鵯曠狆慳歎蕃咸赭秉謨婢騾驢彎彬諒勺鵑庚庖逍篁嶮聚驤跫韃靼疽埓鵙謖鐔乍遑聲萬蝮舫
卍怙款蹈菠薐艀袷攸峯襁褓笙篳鹵芹彌魹芍飆啐袱肚跣昵壟鞦韆頗縟蝲蛄艮鼯嘛﨟悌綸它觴
覈稙繖尭鰍倭飫蒟蒻焙禎纔燧杣欝騨閤蘆槇芙蓉槿煥諱馗奕粕瀧茉懴疋鴬纒擂筵晚掣塹蕗髣
髴杲廠茴輌弐僉倚鈎轆轤鴈啀噫樂攝垓陬靫洸紊鶯祗曉彭壒鈔芭蕉祿巖弉冉嚶冲宋熹翰嶂偈
頌諷叟鑓銑匁疣蓼毋涵呶帙茗嵯峨偸衍岫泪壬誡疚獏黜駭旭莎髮肅鏝琺瑯讒墮燠衿姒裙枸隗
汪廏廁鐡綬蔗籐霽渗飜茱萸肆襴侈藺臈屏讀賣頴舍彡燗什咫瓊祚縹廂梔纓豎衙嬬袿髻輦廬榻
茵緌弖衞塙仗襯氈迪槐懈鰓癡扠薊馘礬疏僊桓戔桧箆搏琳邨尹籬咩岑絽篷蘋萱址頞儞欽朮埴
驍輜樓逬皹枹頻龐莱瀨欟檳樞歿楴棆棕椈楾楷欖梭檢殀弌碓爨殼諢巽忿砒屢悚燎戍噸嶇愬魴
鮄撈艫辷鯒匆哩艙聟泛鮑禦惓檣雞糎赧狷莨纜摶甍屡蹠攬楫鋪颱頡頏顳顬蓆鷄蜩曵苧菟萃邯
鄲恆都醗惠聰亙綮膊稟寨槙晏婁呀辯廼靜匪暉惡齊麼廚痲荏霙螻號帋于崑渤銚侏絲苅潅蟒塚
嶽兌吁扨羈窿龕福浣錮惺惇卷并爲參顯滌邈寔劒巓徑儛烟猷繩曁潛洊臻擧絳浹沴愷旌戈戢軼
摠奬煒覩賷辭僞舊禮繼柯穗譯忤獻摭叵帶訖勳區謠假關獨隱萠遲邇辨雙祕對鹽淤處𢌞狹讚兒
兩灣燒龜縣炫屎壹擔拔拆縢闕笋牟鑛齒咋歡滿妣檍勞敍亂璁鞆蹶胷无閇稻營醉證淨縱轉楮麥
插蘿榲峽釀庪飮寢帒從誨輾𧏛壯覓椽仆鵼𣑥鴗盞鎭鉏晝鵝盡拜騷讓擎搤坰瓮蒪衢釧窻竝壽圍
麤盌璵將疊絁鯽鯁戰與怍姨諡祁槁溯倐寤筌惱鴫羂柧棱柃莖婇檮壓藥湟黥綏搖殘杼懿濟總樴
鸇袁牀驛姙渟竊仟旡沾懷鶙跛樔餝榔圓縵廿收酣苽粮譽桙嚴薢澁默殯瓠柂檝弭悒櫟劍韵裹仍
點襪壞楲羮菘竒栢戲泝钁潦喬鷦鷯熅兔彈盜炳鋺姧娉蒂獵豕縶栲鶺鴒罇鬪鐸單坏釋鮹舒癸圖
覽耆醫舂屆咒橿耻柁雜臟碎眄骰畷岨竭鏨褫巍蓮栅弍崙鉗蹌踉饌冀惻欷犰狳厖髥佗薤擥悛閧
蘯腭辮暼餠鵐喙齦譱壑蕚熬闃譏醯遨羣缸佞蟇姸檗觜偕籟艷嶌步籃髙譁鵲剄癘峭霾疆讖掾澟
歇擘蛔繃攩覲莚尠蜿蜒嗽鰌鰮蔘藜躄鯣餱瘠煠叺嚔舁猖獗蟋禾豌饂飩梠棊鮠艾啣蟯硼丙瘻痂
蓴湮珂黃楪靨慥罔虬囹圄梦馨笈葭櫚絮厦嚏俘榾苜蓿氓醱畸黐蔀棰銹贏佉呬嚩囉𥁊逕渝趙諛
鞏揣戞嘇兀幔夙楣倨腮剔怕喞寐罎瑾尨瓔珞鶸〻甃轗軻苒癬濺湍迺簓櫺嫖礙癋顴柝儔蹉釐弗
圜竇彔疥靉靆羸慫慂饑譎滄蕤臾神喃椹貘諄琦你怎俐緜鶚謫跌盧艪浬媽煖擒瀰渫犢鐶鱚氵筅
轅爰誣炷綈甑呍夔稷筯鄰醢炮侑擱弋霄蝟嗷豺麭錣椙簣慘廩窈窕犲迹覡腟秭椚葆庠稠楳颪殪
睺鑒祢齡薺棧纐纈筺閒鐺潺牘笄箙矧窖朗碾哥濶螢邀嚮旒膺踟譴脩渣粽嶼赳转载鶫猪溺曺舩
鶲俑殃淦崛鱏鮟鱇溟棠襠愈洌墺蒋薈丶嘖骶溥瀋葫歔哈娟宦鷙縅范鬻溿烘橉簑皎图请脃焱哪
鎔躪躋枻鑞溲摧枩姚茘瓯爻苓隹蕈爸稈菴黛茯姶糕鐚奶椛簫糒薨橄樒鳧蘖螵酥蝨荔胼胝怏鄯
駛穰臘曆狄妁邢揖萊驒埵暹昱柬埔亅簸裄酡甸謦響瓣嫂兢凩歟懶奠輯骼愍蚋皰舜弽谿諚鍚蹕
翩弎鏢蠊內說匈邱窗睇渭咜粂篦羔蘗啻纎柢灝枉暠杠堯筝罩絎訌孺壼茲鎺駑熄繁冪嫐隆紂妲
璋蜈蚣乩犂膈礪烱鞨涓幉詢齅娃賺籌幄紕垙瘁洙嬶鱶鵄孚鷽糀臉鏈沒鴿昕渚兕貳媧睚牆柾蕣
膽銷柞侲湫蠹筬蜓螽蟖螟蚰倻仞黽鷸楝蟾蜍蟆鴟佚愼聢鄕惛陦苣萼瑤歆瑜舛櫨榿囎苳樰燹忰
篏銕拈漣貍盖旻笞霏孑霓迠鼕喨淙雋嵬瞽裲旈芟侫堊熏雕峅桀磽确皚繽瀁嵎榧鑵犛鏘腴洶槊
竫孱癆傚掎緡眛冦痎熈愎跟慍莽聿迚蔬孌耿丰伜磧颺譟戛蕘阮遏倜儻嘿禧謌廐胥湎鑊佶眥鴛
鴦淇烝轂雍楨兮悵貽黠翕蜆麑輒骭洵稍潸紮樗遶蹣跚巒癥閬晤跼畚汾跎槓瘋銈韶醵鐫苟枋膩
髦舖珉鞅摚旆璣沮鋠踴礦劄恂筲鍽晨坅岱遼崋鷓鴣璐翎歷褞贐淼潘晗冰雯羲咪嬴粱鬧陝圪閘
涉刘畅螯曚驄孜杁睜蕺晧跑佝僂晷徵瀚噶艨艟萍薛儿鄧养氐驪蒅鑪粔籹眚牓捶灑醪瀘鰾傪捐
咏髢迩刧嬥鏽婬鱓鰰鰒鮗曩慊銓疒礒傴癤慴蔣賓難驅突汶怡棣杌癈鯤楸脣鋩蘂枓栱煕怺嬋瑆
獬豸錢挂海衫襄檐墻塼鐗杆霤鄂侂繆巢窠蒿雎浙窅橫沪褚匯檉薗薑彽莠顋旛丿淞滬澳勦闡軫
犁瀦溷釆彪怫哇躬鈕粲鰥禀徂徠变殭薜嚊晁厶叮嚀縕僣罨襀汞蝴眤閔槨瀏蔚坎驘从仵佯甬臝
蠃瀛亻裘竅丨亠冂冖冫凵勹匚匸卩厂囗夂夊宀尢屮巛幺广廴廾彐彳戶攴歹殳爿癶禸网耒艸虍
襾辵隶靑韭髟鬥鬯鬲黑黹龠丄玨蓐宁叕辡孨𠫓瞾囝纛咼咿爕𠏹㐅躭譃俾卌顓頊嚳悰煬姆臚穆
滷杮猱犭闆閦醴哦哆拏馱麽籀虵幷庾髀塢辶歲羌禳靚盱闔冋硨磲匝燄橤鍿亍衕衎歧𠤎嶠邉䕃
萓朿鯊孳毱鼡渊醋輓淪聨爼鴃怱毮溘繧荵霑荳縲遘蠎隴霈淅靦濹壅瞿增劑狃欛挘嘸磅儼吋豈
嚠慓錻髱嫩痳鰑甞葢惘俛圉嶄洽估綟蹤螫顱籔蠖閼礑衵袒琅玕恟蛺孼喟懚熒鬟厲珸瑁肓錵珖
穐阳个嗎佬卡圳綢淝苻鰲螭萇褲蚝閹樊侖澠崤皝暐鄴恪廋漳詵丕沔繝皁袞聶抔詁鉑硅胄玳衄
泯矣絜戾睢呫奭裴槧廢騁瓿崦圈鏗鶻軾刪儉駢儷杪倏拖抃紲鵂鶹檠郢叨逖汨挈鵩麋竢踰稹崔
鑰妝陌彜兪樾惆孽偓奩萋祐籖僮耨藐絛涿菁潼灞彧乂罣秕呎癎頹洮夛慯缻迯卉滹蹇扯顥廈鸛
釵櫪嫗幢燔觚笘熕險淚騏奎寬連淸諸社祝視祖擊擣槪層刄絕廊旣薅陷狀旅晴廉賴滯精瞶著愜
吿敏憎卽嘆敎强犧爐悅益閱僧穩免尙詑銳聽脫產器匇飯謹綠簇遉館劬吩擴囘價錄黨揷逸晳臭
鍊簷祈簔每邃悔繪蠻吳硏專壻玆勵欄禪缺腦彥剩贈揭禍效薰册薾蘭誚恠澆皈笭壘署帑鐐鑄踐
歛鉧擇虧爍鏟饘饋嫰寃渴泔豉曦玦琛椏黯吧綵暝齲峪驥呱褝敞蛎蹼鎰羇份穎暑蔕溽鞜弴峩駟
忻罕莟輳鈐銖囿茌兗琨晞鞮犒泠酛杻陲廳鬐陂犍奚沆搶扣裨錀啗丐諠蜾廖扡璉壢噭杰琰砺笳
滃膕韛毳卅駻闋饀鈹瑳橅暸葎褊羿驫簗逋槲榁牖粢鉅乢穉詒脉咡睽脯眶蒹唹輙槹恁冱豳戉邶
丯秫衽陟捫藟厥嫄猗亼粦㤅遐隰毄橐叀軎轊鏜丂贊兟兓兂㠯耜匏亟飤緅尗菽穡㒸墬彖乚阝㐄
夅湅繒漚昜蝘睪罒懌苷勻駰幵夋菀羝蜎蠋攵屨彘冃冡鍪漘寘鄘墐蚌拑瑟囟奐垤刂畐朙囧猒肰
瞏醻厤雟冏攜壎篪鳦豵豣斦臤蝃蝀拊莪涂㐃犮棫瘞誥复亖坴圥敝暘仌柎咅蟁䖵蠭駸尓獦啦唵
萵鼹蚶糄蚫佾愿扞噦椨妤咕咾匳竚眴皦泮迢氛躡么顗鑁佼咦价瑩璿睿鶩倩諗岷蒴辶屰鳲劦缼
攷蜺扌灬衤磬皀氺荅忄畀埤鬽靁娚扛滙罟斵汭浞鯀弃嶢纉閟驩兠殛龔甌洹賚閩鄱傜劭宓皡郯
邵徙闐紇撕澌紝茆斲开笵耦滕陜秔粳糯秈夆癢亶饍鄒叚匋搯郟鐏彝鈇捍甎磚淄篚軑縑邕玠卞
踢蒦蚇仭揲碟跬爫匊厮綫簋鍰曷耔胠篋腠嗔坼翟墉僖媱燁鄽髞㐂仐卆熢蠑螈騫疝鱲潁仂孁堲
碕釿楞釁翆覊矗齷齪筰壤撿籮莆牯衲徧璨逎憖搆揩榑尰迥趁麁汙憍闥幖陁怛迮飧紜瓫簠枌悃
繇曄鶼餒慠槖姮鴂縻伋幃喈匱蝥蟭蜋氳蓊檟齗湲磕轔橦颿瞻飡糅攄摛緗輅矇囅咍蠡悱搉廛璞
弈噉倡獼毚熠譖筭閭鵾莅翺畋搢謚伉媵褰悝醞寰粤麞爀磤歠綆顙甄蠆鴆讎徉燋讜蕕桼顦顇蕞
槵屩繦孥汍楹挊聆盍翮翥夐礴皪蹋纚拯磷咷哽酲騖洫舸藿唼讋彊鶖殫韞潨蚑廸垜蕷垸腊媄龗
媞昉誄梼籙尅愔潙賁緇菑戝臃憙贓抂灾夸猨暍窬狻罭敖鏁贍瘀覔嘰殄紈㝵苴婕荐騃皷聒鑣喁
凾泓黔笇刖冝懋虺媿掄儁濂剳謾惴濮獒婾睠摹蹐朸嵶樸芎鷂擯攤鷁娍跖朳莧澗擠糶臠澍僵簶
鉸𧾷砉暎苙妮哘蟵篗籰椊蛯仝莓芡妛蹯籵鸝桌糵栬蘼坳畾鱩鐳唀訢黟黮鞾桛鞐垰匀鼃拼遖靏
隺靎靍孖侗彅爫譞舮愆徃們抦凖僄况慨既畧凮畊亳羑莒袵殽嚭桴臏湣噲霸阯殤琮嵆沂郗潯裛
棼汴苕擤夘郝魳㒵霎梺昻皋炻葷禕紣璹蘰峒檞徭祺琢崚糘晢纖妍萁瓩⼀洱倀炕簍瞎豢鶡呰怤
嵜鑯瘟躔奝腨晟綰隲祆隍泬闈塉蕀埆貮毗簟崢嶸轜袪梲潴欵唳颸岵摎晡迊凢檪屣煞畄釼卧圡
絰冩鶬鴞鳬莘剗餼澶鰝鰕迤禺苡峴隄銍挍芷笶芨苨葜迨佰㚑湏尒桒蘓柒隂廝楉榭妋桉鍫醎筠
荑觧勑沉亰駞哿湄帔埿覃靇胖冣肄佪雩渧牂洄砆輊幤岺菎裒泗蓁唫漪盬詎晻逶蹔蹰䑓蹬瘳巗
哢鵤鴲鞕韉躶舉絚絙㝡搓棭鮓襅爹媳蜑圻螓郤卻鰡嬾吮桮譌盼獠絅偖愃蝌梴樛滁梣㮶关适畱
泫荃埗磡滇碼唔嘈硤涮咭釟垈咐疔鬃鯡豼貅倔聱暲玵粍溱袙遒鍜蘚緝呢鐃鈸嶷㐮痃瞹遯扃穠
俒睍睆鮀嘬煐鉃跂蟶膃肭卋栩鱟彾㣔璘䨩玥渼槭駮𠖱敧芫蔔档咯秧窰歉燉罸纍鬮墩汕辧昳餛
櫞䧺𢢫錏渞睲橢蔟剴逑韙孛嬭靹膸蚘襍酘餾勰麯酴醽卣罍觥盉盎緹穄釅醅餻樻瓺韲磑醑賡𥑎
樎垧裱筇慵垝驎圣焠燬瘭尞褧絓綞烤鑫嗢皖魬蕙壙縝裊岠珏蠏璟萏鱘鰉暾嶗翊垠菉珮巵妒灤
崧鄔瑋沕甯朓鼐酖隸昀燾禛讙齕痤蹎嶰蓍蜮淌菪蜣廡鱮褂樑閎檔跆擺碯飈縨咖抬礻𦱳窼囍晉
鶍杈鐉飭毿貔倥懾筦祲斌鰱袘瓷塲郃儌絀崆玁狁卭苲毌濊貊阡涇堙焯雒譙酈笮邳濞堠塠瓴甓
椁嶔驃靬罽賔兖羗瓉挹頎庻柤淥焘昿涔踈訾靺儋詹欐脰旄闚燮闓徼糴磉捴綝矦讟纘瓚俀瀲㓛
鼊崐崘枵朏逈髠毓𨿸腆褐贛鋌琪喂麬楛褹逵邴夒郖縐蒨剿俉碵鸕鷀弇訐伾稾唉冢畬怐笫諶徇
颻邽澡璜悳漢异勣粹囑穀搩虜祥謁碑侮苾蒭卑髓縠廰疉丱螳鞚鵷堄勗噍攽蒒蒯緤軆懽禯俆泭
錡蕹絿紒愨幘罥紵枲絍賖麖荽鶱蹻籩餔穸緱喑蟣迕暚戕怳睒浤踔濩綃顒邰汜狖灔瓈楺簳蘘楙
柀柗櫲詆冐畴鷩紼牋旰灊敘匵璠甾珥衹遞錟圩縡魞撩緲堞葹鷭崕愞褙垪洿忩脽垉墸壥岾彁恷
挧暃椦橸汢穃粐粭粫膤蟐袮軅鍄閠駲鵈綛蛬抖豇篊鮸兊呦僐擻麨屐椶騅彤鵇蘩蔞榠樝枦閖墅
薼瓞祜嶒磴釗淬迁鰶袤逾鵆覉纑蓏娵籏嗒笻庿餽逹樃贇偐餲餬黏饆饠錺孀俶椥蘞蘧蚉橛膻窳
罡頾剡蘢惕椢黶厰嵋箜篌藕楬襌嬖猝吗亚忯禔濬壠欸貎曈灶幫獐苹嶐傻騶轎羶昄扎丫毆弯辦
倂陘蒄簧翛忒殞唎㗚湋圷偁鯷鵶猯癰獘喆潽澈宫师爷烦惊别戡碰箚鼴砍瑀圯鑾攲芿諐俅种洼
鄆潞碣媓嗉瓱嚕畤縉怵锻輗劓輟玷煆帕蒺箛吭笒偆晹偰毉昺啤冓罏秖節禎閶搨辤凞邗彀嚈噠
瑭潢昪煜嬀㬎芾忢鍳溉袗鸊鷉鱖陏鏧鰧讌糝箟髁糙譛离㷔壩芮斝蘄虢穌鼂瑇瑒耊找凳柰縧麈
盔撾鮊鱔黿攢驊騮驌駃騠騊駼顖綉扆拄炁拽憨鰣殮鄷壳猙扒倮璇戩瘖瘂髒豭瑗癯踽偬鐇滎鼇
盦惲翬琿龢芩暻犹洳溏沺呴棃筷豬駙珓崁⻆歃賾澂拕泆瀅氂轀鬭斁鐲懟阨頥忼擕隳熛鄄渮纊
鶇濰帮紓幞蜇阴竽傈轌蕋駉盻禘鄹愀纆絏杇棖臧鍇騂魋忞葸悾黻勉忮踧踖絺綌紾飪阼喭僎訒
慝蕢柙櫝肸訕耰蓧鼗璩靛坷煮糲揀

162
data/lists/jimaku.list Normal file
View File

@ -0,0 +1,162 @@
Jimaku
花子始茜今日最高思寧々放課後八尋私愉快達紹介赤根葵親友死女王蒼井生徒会副長好幼天
使山吹檸檬君夢中何恋違説明方簡単半紙墨鳥居五十音書上置円玉全員人指呼出数月前面白
安心楽僕周到準備重汁血混進大丈夫危険暗一体霊来動成功答気不議絶対本番初聞言間見幸
待利用計画的欲夏彦怪異普通桜仕先輩俺肌脱寂決持願噂流七峰新変手充落着終段祓屋無理
年近同分作物意味早火悪元付合当撮切情爆発突然入顔助信知存我特別世界真学園地下場所
歴史立色集身戻時忘質返捕祖回帰誰偉洗脳研究仲夜育崇目未熟題抱習勉強災害策部諜報施
設潜改司美調査結果次第壊滅機嫌暴伏建二相性頑張鍛雑念消去話働殺奪勝取倫観教難度凶
担彼野非常優秀離自素直伝表示少守緒悲適派街菓奇妙昨掃除受呪低限抑代労力提供約束誘
確困嬉外考許祭談光連輝兄源共苦乗越得戦汚軽率胸傷邪魔行席空己癒系金稼志望採格畑頼
諦職土籠授業走万個解透風名症状熱他擬態弱徴様治静頭痛威嚇歩岬事勢飛現配脚冷声覚悟
愚随由正家歳奴隷族父母拾可暑昼寝将婚姫起娘誕男有匹語雷鳴青浜遠底迷勇魚必要怖逃追
影潮旧病棟階内腕慎平四垂腹届記憶末以食飢獲弟温津南藪辺道朝買竜之飲倒息予感雲耳右
良猟師捜能弾肩足泣止首葬儀骨点遅測狭超続迎命削開料驚慣救妹俯瞰捻挫筋肉辛昔澪視令
逆刻印敵験疑似撃窓実際携帯響緊癖位況渡失敗悔電避選択継繰保証武器過刺凸村駒島文句
朱鷺皆団預駆銃狙抜距探範囲接崩多亡頃定速在週踏崖者象線致負至交読士換触品径射程収
穫針増姿隠卑怯互小細工堂網急礼割任左秒老角潰主斬運神経残余裕海効禁笑偽引興毛炎減
疲慢防脇燃化即鈍偶判館込隙液容缶捉認産更洞窟転車舟院替菱形裏種類写裂娩泥役謝哲狂
復活量兵隊餌了承済納晩医痒蚊問東京標和歌弁郷従冗閉鍵机染財具拠挟痕争跡室遺恐恥締
椅断両路参口古奥銅千登黙貴郎免疫掛挑廊姉怒沈式喜瞬戸惑深故永国償診候群簿船護創降
憑午雁砂洋憾沙汰客絵訪寄座吉川絞抵抗警察被爪犯皮膚片弔逮粧看冒涜騒申訳磯兼絡住号
義臓恩期三芝既侮辱銀溺襲演雪雨晴台再棺剣泊炉曽精疾患漂水案想隣協脂依浪漫照論述謬
術押件焼巌法検討塞索倍責拳健反応欠包丁投移勘岸貝練局軟並遡軸岐識肝伴徐賭仮向阪湾
瀬紀伊干満夕脅差完希輿境御送加康拍映腰唯扱葉貸遮与床詰推民木森紛沖激璧黒傘暮浴衣
浦北署装休忍試字留廃虚泳球闘服鎧価値築薬棚昇汞塩猛毒処箋盲腸管支肺関彫像商売繁盛
漁太祀滴鉄荒穴壁扉旦米膨妊娠宝益側髪錠借掘壕注百型曲封制攻吸匂嗅坊震睡板暇械釘尽
雰香市季節沼公操損桃町評玄那荷飯戒釣原因極双噛犬巣懸浅構縫若据振舞才材鼻彙貧愛展
蔵庫鶏炒鎖虫順専門皿宿校造都灯狩臨魂寿縮鋭杯恨嘆呂油侵排障譲鎮乾店蘇措殴蹴紋曜虎
菜漬区圏図各怠猿秘密耐衰塊骸衝否等矛執慰称戯翻打贅沢把握迫舌顛刀甘託卵醒破捨淀比
麻痺領敬毬瞭波稲揮軍編淡旋祈屁這焦磨隔莢囃裸為統蒸聖闖複製折概召巨駄景渋谷酔濡陸
告拗剤途端蓋忙臭柄官載躍誤善朗灰遍散横港清整詳倅鋸柵革靴罠鬼蛇域丸辻褄遊惜巻伸享
饉餓瀕鯨恵祟緩毎麦茶幕退胞陳江宇宙栄養隕石献枚社宮戚瓜植省科豊婦吐盗尻敷短汗績虐
犠牲眠薫妻垣渕衛殻旅例滞催尾録審焚漏叫幽屈技仰蛭久往汐便駐眼鏡乳乱刑扼厄払凝叶刃
併喉歯矢酒岩析孤独涙鼓県峡浮積餅溶鈴巡寸祝涼覆描堵堤糖懲拓繹履卒列剖眺拭湿喪勤拝
殿砲組宗算揚含稚孫旗条暁剥羽柱妄背痩踪酢酵冴延拡挺覧是鯛努炸貰夷遣挙挨拶草湧蒙啓
忠填均豪劣訂環逝曾弄誼云頂渇伯爵醜晒隼牙弦瑞穂倉拐導藤架係肢惹憎悩基陽刊獄趣罪煮
尊厳湊酷陰謀奏求珍懐略聴頚脈貨幣貯憩奉田舎緑奈黄律喋飽促拷咳丹浸宴燦励凡級就布叩
銭罰嘘詐欺劇胃杭惨爺婆桶奮乙招蛮粘貌騙錯固憂寒誓輪悠絆揺乏唐朽奢遭徳諸葛亮孔侯惇
曹陣飾丞荊州鋒仁宛城喫河埋樊荀勧拒庶騎馬福慕撤襄蔡瑁劉阿斗趙猶錨控魏賊阻陵富援賢
洲務糧蓄隻督遂呉営巧剛誇龍嵐闇序巾党圧賞侍鈞憤慨帝尉赴農傑勅郵伐靖漢縁廷訴堅酌粋
徹棒傲翌賄賂贈税洛盾翼狼藉腐縄陥辣幹契皇粛臣企盧仇覇袁総李典曠翔訓祐幾央及添沿杜
西濤補謎徽禄権沛裁英雄孟潁厚羨睦宵監繍征昌璽胆韓胤珪媚広薦臆烏衆占暹荘庭楊郊袋朕
陛瑜賛于鼎弓筆雇魯霧虜却戴砦規模偵斉蒋傾熊輸慈歓佞智砕蘭露遼還乞府謹牌札賜慮里講
潔餞揃寛伺嶺秦詫貫叱政崔齢宜亭牧叔池春宅烈湖寺奸跳梁跋扈梅譜薄誠隆斎孝泰顧蜀肥耕
蛍蹂躙謁偏兎冥冀誉宋謙請攪磐猪慌尚岱楼桑墓嫁董辰巳芸諾暦星兆揆蜂笠堕嬢郡聡豚宦競
彩檻融鳳雛逐微慶駕堪瑾林郭舸艦艨艫舳冶茂妖熾后卓檄牢華棄雌儒柔耀洪挽濮則秋唱貂蝉
魅壮遷披哀允冠牡褒抹妨屏祷胡蘆炊煙枯繋幻軒臥牛峠昧汝甥橋竹姓傍柴篤博坡燎綿槍硬鮮
緻紫章純修冑鄭療冬膠糸慧咎漠懣枢航渦淮畔峙緞層閥穏盟松繕蕭僧韋饅甚窮絹昭喬粗釈雀
馳凱弘裔貞昴邦泗尺糾姦募踊忽蓑摩擦籍額蛟詩隅檀渓糜竺亀莫資没狽涛漆綜妃塢絢爛珠颯
爽悶驍赦偃蛙嵩嫡菩渉旨劭慷唆牽遁甲壇祥硫遇廬聚艘幔馥盤委耿悍掟獅軫肴給斐兪縛塁堰
麋芳晏坂較晰庵蕩墳累謡勃戮繊粉斤践彊遽氏陶枕痍呑噴墜擁礎摂蹇碩湯獪瞠唖巷拙眈殊勲
豆易讐邸諭豹廉属蔑雋寵般岳吠佐莽鄒凄焉閣甫囚濁哄宣疎咲詮渤曇鞘屯六諮雍吏鵬宰賓鯉
愕停并攸沮詔櫓猜淳瓊柳沂凍掎鹿泡戟憲仙汽笛獣恒杉恭淵駅塾畜梯鶴塗樹賀織乃冊羊瞳也
扶貢盆鐘箱唇澤稿版泉瓶諏芽克鋼縦磁憧忌猫億児晶俊俗蜜膝煩核庄鉱晋濃尼滑辞耗飼麗如
喚酬崎閃狡猾媒墟培粒庁該埠搭維旭幅費涯璃亜枝搬帽杖樺儲溢九碑株迅揉票拘藍怨贄祠苗
旺躊躇頻貼迂仏股蕎閲僅沌紡儚俸浩吾冨菅攫筒柿岡刈童鞄賃桐祉笹羅鉢綾戊佳牟符惚婿需
逸毅賠訟痴穀旬鑑敏妥鎌浄喝姻帳枠駿冤掻臍毀圭輔篠匿掌腿肪榎蝶嫉妬饒紅銘眩喧頬鍼券
淑沃溝謳螺鈿悼芯胎括販著欄僚摘掲慇懃匠曖奨酎濯撲箸韮鳩噌氷釜狗醤泌拉殖膿貪惰疵項
錬捗灸頓瑠麩緯栗些誌塀栽腎澄菌薪班芋餐疽弊髄盪滋悦艶槌僥倖稽畳嗜凛采潤循搾綱酸敢
禍須鋳矜悋箇茸娯塔軋轢蟻捧此贔屓唾簒碁升抄鉛舶衙詠卯雅琴扇凧藻宏莉哉綺麺罵丑剰倦
丼梨伎俳囮吽俣凌眉嶋滝俄躓尖靱撫吼掴殆迄鱈只又塵刷磋琢擢購丘萎軌桁潟晦袴肖袖尿痔
苫癌嗚咽劃顕咆哮閑紗菊已喰眷斃巫誅屠霞雹薙斥泄朴衡棘殲蝙蝠顎炭轟凰瓦礫叡蔽弥陀蓮
蜥蜴朧鉾兜黽埼沸帚祇膳串鴨傀斧鵠亦帆舗肯嘉鬱溜椢卜藩淫膜舒蔓巿淨暖槻桂彰阜嵯峨鞍
幡鷽准裾樋鍋狐肇畏嗣臼侶塚柚茉煎腫杏伽婢房零栖襟歪薔薇批佇紳垢奔虹靭鶯彗秤憐醸倣
萌蜘蛛轄錮侠茨姐肘堀舵綻燥辿騰勾麓卸韻馨漱蓼姑槽朦椀瘍抽俵贋舅幌蜃梗梶挿栓彬椎窒
腔頸疹窃肋晃捏紐紺瘤佑茅郁茹錆馴苛櫛徘徊愁覗楯匡遜斡寮棋諒詭嘲債篇〇秩站惧吶喊寡
杞劫遵瞼仄柩躰褪刹橘楓洸漕寅吃榮檎姜粥凪綴縞刮樫玲伍硝悛鵜屍鷲鍜腱箝國剪隈邁傭篭
稀薯渾欒堆遥殉卿陞燻厨箔叙凹紆睨惣巽嘩吊鄙柏筑壺纏斑坪礁訃扮恬眞鷹娼狢唄圀碗窯姪
函賑苺煌訣廻昆逢灼彷徨脆帖珊瑚蕾獠槇渚椿蠍羆杠其獰憚膏穿吟凜飴嬬斜胴敦齊櫻稜楚珀
宥畠詞條濱怜栃皓琥瑛昊侑琉翠暫窪媛恰竿哨呈鑼拮孵忖芦腑嘴榊痙攣炙撒髙瀧笙巴嬌椋皐
朔緋濠朋湘鍾慄瞑鱗玖礒渥晟羚藁琳鞭撻惟碧枡煽酪霜栞鞠剋薩醍醐梃暉萩菫鼠舐靡玩紘茎
崚托滉袂餃絨毯爬哺帥棲苔淹鏑楠呟彿筐杓蝕傊懇懺塑罷蔚嘔樽羞畿檜梢腺詣隋蒲竪錦荏艇
呆迭啖呵氾濫嘱筺甦琵琶萬簑痢拌悸膣弛癇昏罹唸庇疇蟲剝仔糞脊迦闊壌儡貿麒麟駑驕錫妓
盃沫摯尹亥楹嬪鍮倭咸贍几翁盈僭乎簾朮厠庚壬戌痘廟糊癸酉儺處哭撼輌幇戎訶屑煉賽鮫脛
播蠱羽倶欧鉤坑瘴桟灘鉦讃弩碓褐蝦蚕繭鹸暎喙栂矮貮蝸壹蟹禅貳某肆芭蕉鵺喃轍荻堡瞞苑
猥鯖咋壱僻鮭荼毘疱瘡羹茄嘶塚畢釡邏脩躾洩堺槙但倹鰐淘俥﨑埃應肛捺痣筧奧翡梓臀套彅
牝餡洒汲梱贖瀆恫峯卍蕨耶濾佃撰芒弐焔凩蝎梟棍叉袈裟燕茫逞禰鞋賦昂繚悧杵魁閻冽曼枷
撹舷吻撥桔逗攘卦魑魍魎縷當慚愧慟銚芥獏禎艮詛漸蹄瀑酩酊葦杙坦弧禽闥斯亘縣梛椒鍬氣
溥彌奄暢廿勿穆鰊疼駈顏咄嗟灌附虻旁凭或胛嘗籃鎗熔咫燗聰縋鵯胚喩粕鷄淋俾烹燈稟鮎裄
襷迪葱樂泪醇茗憊糟豉鰻咀嚼蛤撞畷蒜麹蠣粤繆甸鯵鮪鰆鰹絲鮨鰯臘沽憮矯邑髭捌鋏悉囁葡
萄喘襤褸箒齎胧处你颜续语彻风绪仍飞远请诉掠过时啊错现红终烦爸儿无辜什么缉这气抓假
货还给闭们伙应护宪对举吗说关别队嘁唔喂哎呀箭歉为样谅吧妈谢该让变尸众维纳带藏孕开
围经迟连见热闹怎赛怕势顶罗问贵骚您个实而兴奋结难茱丽呢动亲烧种长嗯阁议马题强权发
赋叛罚组团协搜寻两诸员严哦听达况导且话谓谁误认镇压孩责进厉檐缺扰很欢做夺德弗莱尔
蒂纹赞决获须骗收爱欣赏东帅灵润泽裘碰恶肤哪检查车较找啦边毕竟渐咦哥鸢凋嘛哟呐丢每
噢虽备费门从骂她狠兰杀卫诱废场伪绝离惯论款跟险掉碍预许蓝渴旌摇稍丝傅滾狸蔭柊剃粂
銕瑤膵誂擽鴉疚捥鲇竄埒縊曝筈鳶鯱匍匐偲齋鑽籟齟齬恍辟烙鮒榴鹵鬚鬨饗穢癪焙衾髻麿桿
僑黛嚢誹謗蓬蓉絃丶丿罫郢嬲塙頁髑囗雫彡蕁庸亨鸞瑕齔團萱瀋壷耆會亢宕笥寶芙甕壽廣學
鴻邊蛾棗於磔賎殯栲楢邂逅銛誣褌訝謐閂嶽拇芹蚤飫椰釧窄憔悴譚訊嵌栩埴軛珈琲狒穣玻猩
姥坩堝坐按竣殷紂妲鶫愴稔蘊聊迺舍菖楕躁恣砥恕租釼剱畦寓柾斟汎啼摺遙耽瞥髓奭惡膀胱
紊陪睾犀疆吞鎬黍裳厶增曙噓訾隸騷曰爾彪浚渫擲矣莞憫侘鬣諫轉籤閾閧桝謄虞體軆廂搖屹
聳榜壤魄楔忸怩抉蔦鷗訛絣舘蝮衷鋲涌騨噪狛鞁邯鄲邱穹澱號竈酋圓译间轴亖词效监铁银弹
鸣汪涸翳檗纂苅鉈厭頷剌窺瘻鉗脾鑷紮顆漿痰橈痂疸窩宍霹靂碇洟呻緘沐禱摸傳韜廓禿籬姶
隘蕃儂耄碌滓跪视频师务揶揄趨欅嶮關簀饌紬鱒罐醗鴎酛鎹橙咤妾猊闢撓蜈蚣頌瞽厘蓆譬瓢
箪鑿襖熈昵黐袱嬶嶌勁鏖蛆鈎臂聘渺黎鵡坤塡來霍廠簪賤皺鎚睫藝蒔滲蟷螂軀赭赫叢颶囹霆
燭燼鑚匣膂儘峻樟曳躯鏢虔漣箕擾賴妍娍掏儼掾硯謂乍孺怵愓惻誦蜻蛉煬噺鬘杣裴楷斷獨戰
乘歸媄枇杷凉庖宸鷁鞨桴篳篥禔閤稹婉磊閨忯霑閇郅寗乕郗髯參珣筮祚袿笏瀉盞粟陟嫄蕗餝
釉閟寇臚姚諟陋氐惕漉晚珂禊芍櫂慍潭椚錐瞋恚戲臈匙弑狄弼僖璋沓蒡諱琭珞薨髷柑裃肚翰
爲諂藷諚蟄褥閏愈篩菲趾惠聲捲娑异畝纈烽伶疋丙驟髏笞瑪瑙蜷葺盂蹟詈麵捷瀾輻煤澹咥櫃
鞆諍劾筥讒揖兌貶闕棹蠅伜簗蛸穽掩麾澁擂巖茲敲汀逓倚繪喀胄鬆鰤盒腓綯蹲踞箏鐸鐙鍍矩
帷鴫衒乖扁籐浣諤絽懊蝿篝蝋欽褻啜鍔薮偸匪牒艱咒愾梵沁驀跨娶眸俚禺蛻姒范楳憬憺桓熨
鼬佛裡祐甑墾涎藹淆厩脹弯舜邀衿諺鋤杢糠螢垓杼澗實霖奕踵邉柯襴睛夭顴𠮟鐵虱覿筅刎渙
秣羌亻嬰瘣羸莒麃毐燐珉鮑嬴媧隗蛹兇霰塒帛嵜綸擱逼膺鑓繫抃錘拿溟忝譴覲搦諌仞諧崗翎
蹉跌禮麝冲贓鮟鱇埜躱孜滸炳胥鱶鰭哆瑣殮擺戱鴇截雉頒佩蛋芻桧邇创仅习业喵偈鑢鉋鐚釵
銓鴛鴦獺臙罌鎩孑兔筍睥弋榛𠮷笘詢腋瘢舫籔髣髴縺楡啄喇叭蛞蝓穗逡萓朿讓柘笊雒郿瓚懿
靄昱賈詡瓉郃鄴晄蹋儁丕顰罔頽塹躡厎擊荅蘢夥鼔樣圻幟蟒樓蠎艀隧櫑鳫麸諛瀰嚙蝗亞莇崋
餉與匁檮梼艪蜊崛畧鼈囂佻綽羂禹嚥鰓嶒恢證貉稷倪搗埓傒鑭咬頗厖葎戀笈氈匆菰嶼瓏禾祗
份犁焱滄鯤眇蠢毫釐泛牆岨鐡圃渣怡椛鬢齧襦袢尤翦覺恤焜劔蟬鷭阮晁碣鵰薗濘錚絖涅槃掬
剴娜嵬蚓蓙淙駝稗弖逋瀞漑駁瀦浬搏靠欝孰鱸翊疏捩蟠遉螻窖搔崑奠粿們禪誑聢頰傢礬篁僵
樵鰍恙莊禧舩馭廼椙歎翫鈷寔樅涵辮俎哩疝綬變譯歐勞絅嚴對驛錄畫發梧仑壟斂炯殼漲勒狎
婁綵粲懼僣偕侲蒐蛄釋韃靼榕蠟籾筵轅朶杳厥滂沱溌慾吝鯰厦怙俠櫨殘笄蹙烝湫訞蠹櫟殃甜
燁柝弍迸薊艤脫內點數寢纪战剧隐访瀨殱萠渠旒凵杆竇鶤聾筏荳橿闌欟譛晨泙臺穎赱閘苳菴
觸竃撚攀厂譁聯雙跛穐諷襪堯硼鱆寨纉鴬勺轣闔豁轆轤价泯椹录糅亚约圣哈扎苏鲁疯诗书顺
玛莎轻晓记忆悄铭读汇传怅惘苍辽阔叹拼凑尘顾响擎翅软腥拜术类萨满军卷仓库册奖线鏤腊
联陆黑蚯杰艾勋荣嗄膊芬閰扫銜郝葭峥莹胭陜婧荑襁褓嫂濟臝嬛瞻靧肓曦棠嘯靅恪荇崐貔貅
醮瑩蛳荟耒耜尭乂霽馔逍絳漘倩盅嬖竦滔縒拵沒寫懍棕櫚簓弉冉躑躅霄衢址燿飄飜颪脘膻賣
龐煖塘誨曩魃游鞣茈蟇逕剔裹蠕砒鶉蛯漓㐂箴湛蟜竭滎隰賁隆驁藨蕞蚩睢渭匈齕逹馮摎藺轡
崙岫蕪茯苓誾俑匕莟慳蘂囀溪婀樱质倾偷跑羈狀麼膽壞敞怀步闪娇嘞脑拔补电剑击确權焘訥
猗黃巢敎屎寞慙夾帑燔譏盜瑬寬閔垶煥瀝隍懷馹苧詁僉郤萃蒟潅挾佗迹峴猴綛谺炮皎檍馗謔
緬篆鵲銑皙泷绢标单摔扑验节鉴损调报职选飘祯总兒癲薰𡂈蜉蝣謖祁檳榔覩淺摠蜆譽圡犂鉏
楞雖錺盡侈嗇湒諄餘瀚藥茴飮癨亂麥將爰拱廛蘿飡迊羲侭駙遲耘黴艷隱姆粳愼楪羯觀糺箍侃
抒巓盥矍鑠叟稙駡貘欸頡冰薛珮淞綏裙繡鰲彈鵐帮翹翆玫瑰蕙褶嗤絋豸鞴悖靈晞魉邺彤驭邵
鞏撷睚眦篑秉桀骜彘蒹萍娥梳嫔辇纣绦嫚闫荪琅熙婕妤蔣薤嫪滕縢夙毓韇寥彎槐薺郞醬爻梔
阡煕礽弴頤袍赳鄧㓛圳騏陝蘋膩椶忿詑醴芾厓霙覯顫劍歔欷恆柒裝雕瑶嗔孽經飆昻仗炬燵圖
楫庠樗栴豈泮濛睿誥禫鯔鋪槿瀛殭胖閦胝媾瘦啞肅糀蘖鶴鏃闍筌癋唵饕餮扤杌畸潘枸坏俘碕
錏焰蜩繩穰疳侏輦醯豫葫苞軻壙窶暈萼蕊謦肱鹼磬薹蔀枳卞抁扌俟砧戩邙黥敝橇鉞拂凖曺鈩
喼罧椥劈鶙驤譫掣泱侖榖騖锭楣呰鏧媽滬稠菟椽豬皁挹鰥鴆貊佟靺濊它邮繻貓舁滿毟蛔蟾酥
篷佾殄懈狆鉚舊竝繼檢圍茧驢籏銖摑嫐憖鱧絁巍靨窈驒澳犍挂罅鸡赩插眄橫畚荔砵糕丐鉉贏
旛蔔樒菇鄷瘟潑慊獻輕擔晝禦鱚釦袷叺陲髢梠洽甌晀框睹谎愿释规跃义镜头运觉噤织绵纵艰
铺垫佯槓撈搶幺澎湃煢衄寐懦騁恃鎭覡拯綠燠惷瘧龕讖簣揀衫悌笋倆俐栢嚆圄蹌踉峽燧驪砺
煇朏觜璣丟韭螫攝簞唤叠梦启炫劳跺诵层莯骰剂啪赶讴裤刳观坛闻衍试沉搅魘彧蒻蹠甬硅冐
祢婬顚犲牯燹槨唳緖濵旱犇跏趺搞盖饭锁笨圆翱仿紧晕诶够虑设贞销售签订违铃烟乐园颤宫
污浊归复钩劲镰坠滚陷暂伤吵沟碟冢袭瞅趟栅极测环抢辉雎窕逑衞巛謌减课灣輜刧鋕都楝莵
𣝣暘謚纐徂猷饂飩區繧邨舛艸匝鷂嚝秌嗾桎梏剽鰺鵄膾砌戳纒扣躺掤鈑駘辨嚮凤岛纬训练锹
桥挥呜哇踢绕蹬踹纯岁厅宽广换惊吓惋户钟际产骇赐执缘领阶级专谦钱辈识资穷擅馆遗办愤
网辆码牵绍滨估计块圈粪鲜钉饰讨厌碎另耍刚坨踩细优赚贡负犹饶鸟隶态丰辙简滥惺扯胁抚
养胜证默亏邢讲谈驻帜桩闲弃锻炼扬谋评挖络屿额爷爹谜戏枪缚涕择驱储诚揭敌适脸贴输图
阵侦钥继扩淌谣缠沾瞒谍阱凿划夹捡笔净摆转值递编纸拥历败偿诞乡屡蜾蠃蹊旻註朵簫闡胶
捐荆珙阳丫夳惶欗璟柜霸脉礦琿抻拏鰌鑰氛稈鱠鹹熬寳隨粽戔鵞鞜蔗妆聟踠髀呷坎箙弽礙蓚
姬窿桄楮饑鑲駱奘蝨單佚奚惆悵霓猖啾娃佶嚔陌鶇咪樸鮹扒侽袒徠钁悕頞臛碼纓璐珎鋺醪洙
筬腆昖謫茭簷粮跖慥鵤緇芩靳嵘耻軾澯潸雜溫鐐戝鼾輛榁筰萊簇芟謨鵙楸箜篌疣蓁釿瘠祹祘
暄燜邃鴟鏨總擧徑蜿蜒僊竢祿麁菘釟駛皴鮠蓿碵繝杤鈕銈蘗縹妣仝豐嗽袤䅤琦玥嫦亟冩麴寃
卉鵑鑞洌曉薀菠蟋蟀錣亙脷挌囓洵藿药鯡儕冝𢌞莚鏝蛎衽濶喨噫丨靑淦杦鶸浙彭埸馱纖緣氓
縉甍垈醂奐說爐鰰廐鰈庾蔕粹杁臾鄕醋鈐览髮掖淚潯綃噬粱敖辯絮宁渊醉伦甄煞姨崍俏宾塌
瘋雞跎忧幫螳萸沧汴嶷峦迁潞溅缟崆峒鹰枉眾悅癆癬蕷硲牠駭亰晧箚辦歲徵蕚棧聶饔擇笒閭
苣夯埔臟歷囉嗎懋禛拆抛崧鮃恟摧厕侧卡凯懂亊絕雩襞晢諡竚葯芷樾澜筹箐荃涿岭兑斌歇忡
霤罕芫桡豌淸黌獗覬覦銷蹕溯姮璿筓敾奎囊不覈緝兮攜雱虛喈霏袞戍茛鐃鈸兢暠鄰戈愍咼昉
岼覓悽戉罘檣囘苒牀纜薏膈癰箆彳亍苻綉獒嶸鑄榾鞫翟鈔頴讀勞咾枦簔煐續萇巹﨟痞緡翘树
矶傻隲獬廚翩颻亯晼慿乜擒鮗俱嫋壜繙繃曻吭殛瓠兕闐狷嶄馘郛蜋蔾唼軼燬鷇摶鐔剡熒筲貎
骶桒屬曄絝鶺鴒鮓谿奬顳竅厮椴痾觴篮隴湣茷皋駻剄湮殪類鞅鶮輯笵蘄垜旆矧弌綰榧莓咩奶
嚶萵撩鷸蒿酱濑傩尝项构涉喔尴尬则栋贱脖瞧墙骑杨昕葩獸潴琬迴殤竊譎垠歿獵佰倨毱墻榀
颱瓮婪儞嚩焠跼蹐挧芎閒丧惦顿嘿呃荐冕夸贝逛庆贸趁竞堇烊龄卢俩躲咱垃圾垮杂讽桌锡烤
妒宠诺坚胳账鸥鱼遨壳仪剩妇蜚营荡璀璨挚窗饼蔬钓砸拖买针抬张卖妳從稱妮歡辭撿趕爭讚
卻獎攤驗錢磅檔戶舉賺帶聽咧夠醫瞎掰廳專贊壓姊燒兩遞佔據腦腳勸閱臉營咻厲啟祺妁驥躬
苹鵝輳轰齩侄鳰罸爨靜攵畭諸鷙鶚籌幄呶險刪慘墅擰掐淇齡揍錶啥鬥產賬癢瞄扔喲潛毁蓦锐
贯迈稳哼颈币绣烛载删亿蹭鳞钻灭赢纽拽贪佬洁辑邻骆驼咯霉瑟蹤價縱撕嘟掙抖羡褲濺擋穩
墊睜捅擠簽黏咖啡噁儈謊嗦汙龜顯惱碾虧嘍缝泻绊髒谱盯鬧歹唧鍊鴿甩佈撐憋毆遛澡邋遢沏
嚏搓嚨燙棵誡灑趴嫻孬廢驅齒屜唬摳砍鬍济糗猎饮疗萝驴赔砝擼扛瘮疙瘩疤癡骯鹽琪茬眨淒
鐮啃蠻麽誒擴繞扭犧癟嗆咕嚕骼鑒鯷橄欖籽帕汉挤诡惫溃啰狱积县摄盘绺呍枋幢櫺媼侒乇髎
騅魋湍騶驃忤蕈汕豺沍窘踰徇冱葷諳鎰亶孚臧鄽镖鍴磧峩嫗曷禀薐幀愡刄嗑霐跫驎翙璉璇僮

View File

@ -1,3 +1,3 @@
漢検許用
删勗厮剏厦凾呑凛
删勗厮剏厦凾呑凛

View File

@ -12,19 +12,12 @@
* The "importmap:require" command can be used to add new entries to this file.
*/
return [
'app' => [
'path' => './assets/app.js',
'entrypoint' => true,
],
'@hotwired/stimulus' => [
'version' => '3.2.2',
],
'@symfony/stimulus-bundle' => [
'path' => './vendor/symfony/stimulus-bundle/assets/dist/loader.js',
],
'@hotwired/turbo' => [
'version' => '7.3.0',
],
'app' => ['path' => './assets/app.js', 'entrypoint' => true],
'htmx.org' => ['version' => '2.0.6'],
'bootstrap' => ['version' => '5.3.8'],
'@popperjs/core' => ['version' => '2.11.8'],
'bootstrap/dist/css/bootstrap.min.css' => [
'version' => '5.3.8',
'type' => 'css',

View File

@ -0,0 +1,86 @@
<?php
namespace App\Command;
use App\Utils\Japanese;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
use RegexIterator;
use SplFileInfo;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\VarExporter\VarExporter;
#[AsCommand('app:extract', 'Create list recursively from path')]
class KanjiExtractCommand extends Command
{
public function __construct(
private string $varBasepath,
) {
parent::__construct();
}
protected function configure(): void
{
$this->addArgument(
'path',
InputArgument::REQUIRED,
'Base to iterate recursively from',
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$basepath = $input->getArgument('path');
$kanji = [];
$directory = new RecursiveDirectoryIterator($basepath);
$iterator = new RecursiveIteratorIterator($directory);
/** @var iterable<int, SplFileInfo> */
$regex = new RegexIterator($iterator, '/^.+\.txt$/i');
echo "$basepath\n\n";
foreach ($regex as $fileinfo) {
$file = $fileinfo->openFile();
while (!$file->eof()) {
$line = $file->fgets();
$kanjiStr = Japanese::getOnlyKanji($line);
foreach (Japanese::mbIterate($kanjiStr) as $char) {
if (!key_exists($char, $kanji)) {
$kanji[$char] ??= [];
echo $char;
if (count($kanji) % 40 === 0) echo "\n";
}
if (count($kanji[$char]) < 50) {
$kanji[$char][$fileinfo->getPathname()] ??= 0;
$kanji[$char][$fileinfo->getPathname()]++;
}
}
}
}
file_put_contents("$this->varBasepath/ebook-ref.php", '<?php return ' . VarExporter::export($kanji) . ';');
// ------------------------------------------------- Actual parsing ---
fprintf(
STDERR,
<<<FMNT
max usage: %0.2f MiB
current usage: %0.2f MiB\n
FMNT,
memory_get_peak_usage() / 1024 / 1024,
memory_get_usage() / 1024 / 1024,
);
return Command::SUCCESS;
}
}

View File

@ -5,10 +5,15 @@ namespace App\Controller;
use App\Entity\UnicodeNote;
use App\Service\AnkiService;
use App\Service\CharListService;
use App\Utils\Japanese;
use App\Utils\Number;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\MapQueryParameter;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\VarExporter\VarExporter;
#[Route('/kanji', name: 'app_kanji_')]
class KanjiController extends AbstractController
@ -16,6 +21,7 @@ class KanjiController extends AbstractController
function __construct(
private AnkiService $anki,
private CharListService $charList,
private string $varBasepath,
) {}
public static function tmpl(string $path): string
@ -23,42 +29,113 @@ class KanjiController extends AbstractController
return "kanji/$path.html.twig";
}
/** @return array<string, string> */
public function getIgnoredList(): array
{
$path = "{$this->getParameter('kernel.project_dir')}/data/ignored.list";
$ret = [];
$file = fopen($path, 'r');
while (($kanji = fgets($file)) !== false) {
$kanji = mb_trim($kanji);
$ret[$kanji] = '';
if (mb_strlen($kanji) !== 1) throw new \Exception(sprintf(
'Kanji expected, got "%s"',
$kanji,
));
while (($explanation = fgets($file)) !== false) {
if ($explanation === "\n") continue 2;
$ret[$kanji] .= $explanation;
}
$ret[$kanji] = mb_rtrim($ret[$kanji]);
}
return $ret;
}
/** @return array<string, array<string, 0>> */
private function getCharInfo(bool $force = false): array
{
$cacheFile = "$this->varBasepath/charlist.php";
if (!$force and file_exists($cacheFile)) return require $cacheFile;
$ret = [];
$lists = [
'sn' => $this->anki->getKnownSnKanjiCounts(),
'sln' => $this->anki->getKnownSlnKanjiCounts(),
'unicode' => $this->anki->getUnicodeKanji(),
'ignored' => $this->getIgnoredList(),
];
// @formatter:off
$storedLists = [
'taiwan', 'bushu', 'kyoyou', 'kyuujitai', 'kanken', 'hsk', 'zhcn',
'jimaku', 'ebook',
];
// @formatter:on
foreach ($storedLists as $storedName) {
$storedList = $this->charList->getList($storedName);
// Simple list
if (key_exists('chars', $storedList)) {
$lists[$storedName] = $storedList['chars'];
} else {
foreach ($storedList['sublists'] as $subname => $sublist) {
$lists["$storedName-$subname"] = $sublist['chars'];
}
}
}
foreach ($lists as $listName => $list) {
foreach (array_keys($list) as $char) {
$ret[$char] ??= [];
$ret[$char][$listName] = 0;
}
}
file_put_contents($cacheFile, '<?php return ' . VarExporter::export($ret) . ';');
return $ret;
}
#[Route('/{start}-{end}', name: 'index')]
public function index(
string $start,
string $end,
Request $request,
): Response {
$snKanji = array_keys($this->anki->getKnownSnKanjiCounts());
$slnKanji = array_keys($this->anki->getKnownSlnKanjiCounts());
$unicodeKanji = $this->anki->getUnicodeKanji();
$taiwan = $this->charList->getList('taiwan');
$jiten = json_decode(file_get_contents(
"{$this->getParameter('kernel.project_dir')}/data/kanken-links.json",
), true);
$charInfo = $this->getCharInfo(force: $request->isNoCache());
$completedRows = [];
$completedFlag = true;
$chars = [];
foreach (range(intval("{$start}0", 16), intval("{$end}f", 16)) as $codepoint) {
$charStr = mb_chr($codepoint, 'UTF-8');
if (
!key_exists('ignored', $charInfo[$charStr] ?? ['ignored' => 0])
and !key_exists('unicode', $charInfo[$charStr] ?? [])
) {
$completedFlag = false;
}
if (($codepoint + 1) % 0x10 === 0) {
if ($completedFlag === true) $completedRows[] = dechex($codepoint - 0xf);
$completedFlag = true;
}
$chars[] = [
'str' => $charStr,
'codepoint' => dechex($codepoint),
'lists' => [
'sn' => in_array($charStr, $snKanji, true),
'sln' => in_array($charStr, $slnKanji, true),
'unicode' => in_array($charStr, $unicodeKanji, true),
'taiwan' => key_exists($charStr, $taiwan['chars']),
],
'jiten_href' => key_exists($charStr, $jiten)
? "https://kanji.jitenon.jp/kanji{$jiten[$charStr]}"
: null
'lists' => $charInfo[$charStr] ?? [],
];
}
return $this->render(self::tmpl('grid'), [
'characters' => $chars,
'completed' => $completedRows,
]);
}
@ -66,11 +143,44 @@ class KanjiController extends AbstractController
public function register(string $codepoint): Response
{
// Properly check it's valid (make a util?)
$char = mb_chr(Number::hexint($codepoint), 'UTF-8');
$charStr = mb_chr(Number::hexint($codepoint), 'UTF-8');
$note = UnicodeNote::fromCharacter($charStr);
$terms = $this->anki->searchTerms($charStr);
$note->setTerms($terms);
$note = UnicodeNote::fromCharacter($char);
$this->anki->addNote($note, UnicodeNote::DECK);
return new Response();
}
#[Route('view', 'view', methods: 'GET')]
public function view(#[MapQueryParameter] string $char): Response
{
$charStr = ctype_xdigit($char) ? Number::parseCodepoint($char) : $char;
$codepoint = ctype_xdigit($char) ? $char : dechex(mb_ord($char));
$charInfo = $this->getCharInfo()[$charStr] ?? [];
//$listTitles = $this->charList->getTitles();
$jiten = json_decode(file_get_contents(
"{$this->getParameter('kernel.project_dir')}/data/kanken-links.json",
), true);
$terms = $this->anki->searchTerms($charStr);
$ebookRef = require "$this->varBasepath/ebook-ref.php";
return $this->render(self::tmpl('view'), [
'ignored_text' => $this->getIgnoredList()[$charStr] ?? null,
'char' => $charStr,
'codepoint' => $codepoint,
'info' => $charInfo,
'terms' => $terms,
'ref' => $ebookRef[$charStr] ?? [],
'jiten_href' => key_exists($charStr, $jiten)
? "https://kanji.jitenon.jp/kanji{$jiten[$charStr]}"
: null
]);
}
}

View File

@ -10,6 +10,8 @@ class UnicodeNote extends Note
const string DECK = 'unicode';
private ?int $codepoint = null;
/** @var Term[] */
private array $terms = [];
public static function fromCharacter(string $character): self
{
@ -37,6 +39,7 @@ class UnicodeNote extends Note
'fields' => [
'Character' => $this->getCharacter(),
'Codepoint' => $this->getHex(),
'Examples' => implode("\n", array_map(fn(Term $t) => $t->toAnkiVocabDef(), $this->terms)),
],
]);
}
@ -96,4 +99,18 @@ class UnicodeNote extends Note
$this->fields['Codepoint'] = $this->getHex();
return $this;
}
/** @return Term[] */
public function getTerms(): array
{
return $this->terms;
}
/** @param Term[] $terms */
public function setTerms(array $terms): static
{
$this->terms = $terms;
$this->fields['Examples'] = implode("<br/>", array_map(fn(Term $t) => $t->toAnkiVocabDef(), $this->terms));
return $this;
}
}

View File

@ -5,6 +5,7 @@ namespace App\Service;
use App\Entity\Note;
use App\Entity\SentenceListeningNote;
use App\Entity\SentenceNote;
use App\Entity\Term;
use App\Entity\UnicodeNote;
use App\Utils\Japanese;
use Symfony\Contracts\HttpClient\HttpClientInterface;
@ -141,14 +142,14 @@ class AnkiService
$this->request('guiBrowse', ['query' => 'nid:' . $note->getId()]);
}
/** @return list<string> */
/** @return array<string, 0> */
public function getUnicodeKanji(): array
{
$ret = [];
foreach ($this->getNotes($this->getAllUnicodeNoteIds()) as $note) {
assert($note instanceof UnicodeNote);
$ret[] = $note->getCharacter();
$ret[$note->getCharacter()] = 0;
}
return $ret;
@ -203,4 +204,26 @@ class AnkiService
return $ret;
}
/** @return Term[] */
public function searchTerms(string $query): array
{
$ret = [];
$ids = $this->request('findNotes', ['query' => "VocabKanji:*$query*"]);
$notes = $this->getNotes($ids);
foreach ($notes as $note) {
if (!$note instanceof SentenceNote) continue;
foreach ($note->getTerms() as $term) {
if (!str_contains($term->getKanji(), $query)) continue;
$ret[$term->getKanji()] = $term;
}
}
return $ret;
}
}

View File

@ -3,6 +3,8 @@
namespace App\Service;
use App\Utils\Japanese;
use DirectoryIterator;
use Symfony\Component\Filesystem\Filesystem;
class CharListService
{
@ -13,9 +15,9 @@ class CharListService
/**
* TODO: Document the structure being returned... maybe
*
* @return array<mixed>
* @return array<string, string|array<string, 0>|array<string|array<string, 0>>>
*/
function getList(string $name): array
public function getList(string $name): array
{
if (!ctype_alnum($name)) throw new \Exception(sprintf(
'Invalid name for list "%s". Only alphanumeric characters allowed',
@ -49,10 +51,11 @@ class CharListService
}
// Has children lists
$ret['sublists'] = [];
while (($title = fgets($file)) !== false) {
$title = mb_trim($title);
$code = mb_trim(fgets($file));
$ret[$code] = [
$ret['sublists'][$code] = [
'title' => mb_trim($title),
'full_title' => "{$ret['name']} {$title}",
'chars' => self::getKanjiBlockSet($file)
@ -67,6 +70,25 @@ class CharListService
return $ret;
}
/** @return array<string, string> */
public function getTitles(): array
{
$ret = [];
$dirIter = new DirectoryIterator($this->basepath);
foreach ($dirIter as $entry) {
if (
$entry->isDot() or
!str_ends_with($entry->getFilename(), ".list")
) continue;
$file = $entry->openFile();
$ret[$entry->getBasename('.list')] = $file->fgets();
}
return $ret;
}
/**
* Returns array on success, true on non-block
*

View File

@ -0,0 +1,39 @@
<?php
namespace App\Twig\Extension;
use App\Twig\Runtime\AppExtensionRuntime;
use App\Utils\Japanese;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
class AppExtension extends AbstractExtension
{
public function getFilters(): array
{
return [
// If your filter generates SAFE HTML, you should add a third
// parameter: ['is_safe' => ['html']]
// Reference: https://twig.symfony.com/doc/3.x/advanced.html#automatic-escaping
new TwigFilter('basename', basename(...)),
new TwigFilter('ruby', self::ankiRubyToHtml(...)),
];
}
public function getFunctions(): array
{
return [
//new TwigFunction('function_name', [AppExtensionRuntime::class, 'doSomething']),
];
}
public static function ankiRubyToHtml(string $str): string
{
return preg_replace(
'/ ?([^ ><\[\n]+)\[([^\[]+)\]/',
'<ruby>$1<rp>(</rp><rt>$2<rt><rp>)</rp></ruby>',
$str
);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Twig\Runtime;
use Twig\Extension\RuntimeExtensionInterface;
class AppExtensionRuntime implements RuntimeExtensionInterface
{
public function __construct()
{
// Inject dependencies if needed
}
public function doSomething($value)
{
// ...
}
}

View File

@ -52,4 +52,10 @@ class Number
$value = hexdec($num);
return is_int($value) ? $value : null;
}
public static function parseCodepoint(int|string $char): string
{
$charInt = is_int($char) ? $char : self::hexint($char);
return mb_chr($charInt, 'UTF-8');
}
}

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
@ -13,5 +13,67 @@
</head>
<body>
{% block body %}{% endblock %}
<div
class="modal fade modal-xl"
id="baseModal"
tabindex="-1"
aria-labelledby="baseModalLabel"
aria-hidden="true"
hx-indicator="#baseModalIndicator"
>
<div class="modal-dialog" style="position: relative;">
<div
class="modal-content"
id="baseModalContent"
style="min-height: 400px;"
hx-swap="innerHTML"
hx-indicator="#baseModalIndicator"
>
<div class="modal-header">
<h1
class="modal-title fs-5"
id="baseModalLabel"
>
Modal
</h1>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
>
</button>
</div>
<div class="modal-body" style="min-height: 350px;"></div>
</div>
{#<div
id="baseModalIndicator"
class="display-indicator"
style="
background-color: rgba(255,255,255,0.75);
display: block !important;
position: absolute;
z-index: 999;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
"
>
<div class="d-flex flex-column align-items-center justify-content-center h-100 gap-3">
<div style="width: 3rem; height: 3rem;" class="spinner-border text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div>Loading...</div>
</div>
</div>#}
</div>
</div> <!-- modal -->
</body>
</html>

View File

@ -1,31 +1,113 @@
{% extends 'base.html.twig' %}
{% block title %}Kanji Index{% endblock %}
{% block title %}漢字索引{% endblock %}
{% block body %}
<div class="example-wrapper">
<h1 class="text-center p-2 mb-2">{{ block('title') }}</h1>
<div class="d-flex flex-wrap m-2">
<style>
.taiwan > .kanji-card { background-color: hsl(300, 100%, 80%); color: black; }
.zhcn-n1 > .kanji-card { background-color: hsl(220, 100%, 90%); color: black; }
.zhcn-n2 > .kanji-card { background-color: hsl(220, 100%, 80%); color: black; }
.zhcn-n3 > .kanji-card { background-color: hsl(220, 100%, 60%); color: black; }
.hsk-n1 > .kanji-card { background-color: hsl(180, 100%, 90%); color: black; }
.hsk-n2 > .kanji-card { background-color: hsl(180, 100%, 85%); color: black; }
.hsk-n3 > .kanji-card { background-color: hsl(180, 100%, 80%); color: black; }
.hsk-n4 > .kanji-card { background-color: hsl(180, 100%, 75%); color: black; }
.hsk-n5 > .kanji-card { background-color: hsl(180, 100%, 70%); color: black; }
.hsk-n6 > .kanji-card { background-color: hsl(180, 100%, 65%); color: black; }
.hsk-n7_9 > .kanji-card { background-color: hsl(180, 100%, 40%); color: black; }
.kanken-n10 > .kanji-card { background-color: hsl( 0, 100%, 90%); color: black; }
.kanken-n9 > .kanji-card { background-color: hsl( 0, 100%, 80%); color: black; }
.kanken-n8 > .kanji-card { background-color: hsl( 0, 100%, 70%); color: black; }
.kanken-n7 > .kanji-card { background-color: hsl( 0, 100%, 60%); color: black; }
.kanken-n6 > .kanji-card { background-color: hsl( 0, 100%, 50%); color: black; }
.kanken-n5 > .kanji-card { background-color: hsl( 0, 100%, 40%); color: black; }
.kanken-n4 > .kanji-card { background-color: hsl( 0, 100%, 30%); color: white; }
.kanken-n3 > .kanji-card { background-color: hsl( 0, 100%, 20%); color: white; }
.kanken-np2 > .kanji-card { background-color: hsl( 85, 100%, 70%); color: black; }
.kanken-n2 > .kanji-card { background-color: hsl( 80, 100%, 50%); color: black; }
.kanken-np1 > .kanji-card { background-color: hsl( 60, 100%, 90%); color: black; }
.kanken-np1n1 > .kanji-card { background-color: hsl( 55, 100%, 70%); color: black; }
.kanken-n1 > .kanji-card { background-color: hsl( 50, 100%, 50%); color: black; }
.bushu > .kanji-card { background-color: hsl( 45, 100%, 0%); color: white; }
.kyuujitai > .kanji-card { background-color: hsl( 45, 100%, 30%); color: white; }
.kyoyou > .kanji-card { background-color: hsl( 45, 0%, 50%); color: white; }
.unicode { border: 3px solid green !important; }
.sn { border-bottom: 3px solid var(--bs-danger) !important; }
.sln { border-bottom: 3px solid var(--bs-warning) !important; }
.ebook { border-top: 3px solid deeppink !important; }
.jimaku { border-top: 3px solid lightgray !important; }
.none, .ignored { opacity: 0.15; }
.completed { background-color: rgba(0 255 0 / 0.05); }
</style>
<div>
<div class="d-flex align-items-center p-2 ps-3 pe-3 border-bottom sticky-top bg-body">
<h1 class="text-left p-0 mb-0 flex-grow-1">{{ block('title') }}</h1>
<form
class="btn-group"
hx-target="#baseModalContent"
hx-swap="innerHTML"
hx-get="{{ path('app_kanji_view') }}"
>
<input
type="text" name="char" placeholder="字 / 5B57"
class="form-control w-auto"
>
<butto
type="submit"
class="btn btn-secondary"
data-bs-toggle="modal"
data-bs-target="#baseModal"
>
検索
</button>
</form>
</div>
<div
class="pd-flex flex-column"
hx-target="#baseModalContent"
hx-swap="innerHTML"
>
{% for char in characters %}
{% if char.codepoint ends with '0' %}
<div class="
d-flex p-1 ps-3 pe-3
{{ char.codepoint in completed ? 'completed' : '' }}
">
{% endif %}
<div style="width: calc(100% / 16);">
<div
class="border text-center rounded"
class="
border text-center rounded
{{ char.lists|length == 0
? 'none'
: char.lists|keys|join(' ')
}}
"
style="
{% if char.lists.unicode %}
border-color: green !important;
border-width: 3px !important;
{% endif %}
margin: 2px;
overflow: hidden;
"
title="{{ char.lists|keys|join("\n") }}"
>
<div class="
border-bottom fs-4 pb-1
{{ char.lists.taiwan ? 'bg-primary text-white' : '' }}
{{ char.lists.sln ? 'bg-danger text-white' : '' }}
{{ char.lists.sn ? 'bg-warning text-black' : '' }}
">
{% if char.jiten_href != null %}
<div
class="kanji-card border-bottom fs-1 pb-1"
hx-get="{{ path('app_kanji_view', { char: char.codepoint }) }}"
data-bs-toggle="modal"
data-bs-target="#baseModal"
>
{#{% if char.jiten_href != null %}
<a
target="_blank"
href="{{- char.jiten_href -}}"
@ -33,15 +115,13 @@
>
{{- char.str -}}
</a>
{% else %}
{% else %}#}
{{- char.str -}}
{% endif %}
{#{% endif %}#}
</div>
<div style="
font-size: 0.5em;
padding-bottom: 2px;
">
{% if not char.lists.unicode %}
<div style="padding-bottom: 2px;">
{% if char.lists.unicode is not defined %}
<a
target="_blank"
href="{{ path('app_kanji_register', {
@ -56,6 +136,9 @@
</div>
</div>
</div>
{% if char.codepoint ends with 'f' %}
</div>
{% endif %}
{% endfor %}
</div>
</div>

View File

@ -0,0 +1,117 @@
<div class="d-flex flex-column p-3 align-items-stretch">
<div class="d-flex gap-2 w-100">
<div class="card">
<div class="card-header text-center">
{{ codepoint }}
</div>
<div class="card-body">
<div style="font-size: 6em;">{{ char }}</div>
</div>
<div class="card-footer">
{% for list in info|keys %}
<div class="badge text-bg-secondary">{{ list }}</div>
{% endfor %}
</div>
</div>
<div class="flex-grow-1">
<h2>Links</h2>
<ul>
{% if jiten_href is not null %}
<li><a class="text-primary" href="{{ jiten_href }}">漢字辞典</a></li>
{% else %}
<li class="text-muted">漢字辞典</li>
{% endif %}
<li>
<a
class="text-primary"
href="{{ 'https://en.wiktionary.org/wiki/' ~ char|url_encode }}"
>
Wiktionary EN
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://ja.wiktionary.org/wiki/' ~ char|url_encode }}"
>
Wiktionary JA
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://forvo.com/word/' ~ char|url_encode ~ '/#zh' }}"
>
Forvo
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=' ~ codepoint }}"
>
Unihan Database
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://www.mdbg.net/chinese/dictionary?' ~ {
page: 'worddict',
wdrst: 0,
wdqb: 'c:*' ~ char ~ '*'
}|url_encode }}"
>
MDBG Simplified Chinese words
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://www.mdbg.net/chinese/dictionary?' ~ {
page: 'worddict',
wdrst: 1,
wdqb: 'c:*' ~ char ~ '*'
}|url_encode }}"
>
MDBG Traditional Chinese words
</a>
</li>
<li>
<a
class="text-primary"
href="{{ 'https://www.chise.org/est/view/character/' ~ char|url_encode }}"
>
CHISE
</a>
</li>
</ul>
</div>
</div>
{% if ignored_text is not null %}
<hr>
<div class="alert alert-info">
<h2>Ignored</h2 >
<div>{{ ignored_text|nl2br }}</div>
</div>
{% endif %}
<hr>
<h2>Terms</h2>
{% for term in terms|slice(0,5) %}
<div>{{ term.toAnkiVocabDef|ruby|raw }}</div>
{% endfor %}
<hr>
<h2>Appeareances</h2>
{% for refname, refcount in ref %}
<div>{{ refname|basename }}: {{ refcount }}</div>
{% endfor %}
</div>