Compare commits

...

119 Commits

Author SHA1 Message Date
github-actions[bot]
9bd0ed03a5 🎨 改进代码样式 2022-01-14 14:18:27 +00:00
himawari
cb1e4bcdb7 feat:添加b站推送功能 (#106)
* feat:添加b站推送,写了一半

* feat:添加b站推送(后续看情况,替换掉chromepd)

* fix:修复一直推送直播的bug

* fix:添加缓存路径

* feat:添加推送列表,修复重复发消息的bug

* feat:发现禁用有用,删除多余指令

* fix:修改格式

* fix:sleep无效

* fix:修改直播card

* fix:增加长度

* fix:修改readme

* fix:修lint,并去掉cron

* fix:修lint

* fix:去掉日志

Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
2022-01-14 22:17:24 +08:00
fumiama
af8e6a63b9 💩👌 make lint happy 2022-01-14 22:17:03 +08:00
fumiama
8c8cd709b5 🔖 v1.2.4-beta1 2022-01-14 20:07:57 +08:00
fumiama
18ae566d34 💩👌 make lint happy 2022-01-14 20:00:02 +08:00
fumiama
9cfa44d434 🐛 fix: aireply 表情 2022-01-14 13:34:46 +08:00
fumiama
23393d9157 ✏️ edit import 2022-01-14 13:17:59 +08:00
fumiama
b676e00f0b 🐛 fix fontfile notfound error 2022-01-14 12:10:05 +08:00
fumiama
790200e519 🔥 运势 移除下载锁 2022-01-13 23:03:42 +08:00
fumiama
ccde99e695 📝 运势 恢复为传递 base64 2022-01-13 23:02:20 +08:00
fumiama
a80f8082cc 📝 update zbputils 2022-01-13 20:57:07 +08:00
fumiama
4b194627bb ️ remove cachefile on start 2022-01-13 20:51:07 +08:00
fumiama
d983c66597 💫 🎉 添加插件 DeepDanbooru二次元图标签识别 2022-01-13 20:47:07 +08:00
fumiama
30f6b57941 🐛 fix txt2img 2022-01-13 20:30:26 +08:00
fumiama
107979c459 🔥 drop writer 2022-01-13 19:17:59 +08:00
fumiama
f05f09d741 🍱 🎨 ️ 运势 不解压 不传 base64 2022-01-13 16:43:50 +08:00
fumiama
bc989f2fb0 🐛 fix score cache error 2022-01-12 12:33:02 +08:00
fumiama
9b4494a24f 🐛 fix new user error 2022-01-12 12:25:16 +08:00
fumiama
d3fafa7b9a 🐛 fix: fortune dlmu 2022-01-12 12:11:14 +08:00
fumiama
ce1e85e0a3 🔥 优化 score 并发 2022-01-12 11:57:16 +08:00
fumiama
560df5cade 🐛 fix(#95): aifalse error unckeck 2022-01-12 11:39:03 +08:00
fumiama
9f6e361e6e 💩👌 make lint happy 2022-01-12 11:33:55 +08:00
fumiama
00be4a856f 🎨 🚚 move zbpctrl into zbputils 2022-01-12 11:33:12 +08:00
fumiama
606aec4ec1 🚚 🎉 📝 合并 gif 2022-01-11 16:09:33 +08:00
github-actions[bot]
7f0f211333 🎨 改进代码样式 2022-01-11 07:32:06 +00:00
fumiama
42f761d44d ♻️ 🔥 优化青云客结构 2022-01-11 15:31:00 +08:00
fumiama
577b5b108f Merge branch 'master' of https://github.com/FloatTech/ZeroBot-Plugin 2022-01-11 12:08:59 +08:00
fumiama
4d39b32cf6 🙈 add ignore 2022-01-11 12:08:48 +08:00
github-actions[bot]
8279ed31d1 🎨 改进代码样式 2022-01-11 03:41:25 +00:00
fumiama
0185d0c730 🚚 ⬆️ 📝 🔥 🎨 迁移 ctrl, utils 2022-01-11 11:40:33 +08:00
fumiama
4ac1674cc0 📝 update data 2022-01-11 10:42:02 +08:00
github-actions[bot]
1c222a36ee 🎨 改进代码样式 2022-01-11 02:08:46 +00:00
himawari
16e05e0320 独立骂人插件 (#102)
* fix:vtb数据不用从zbp更新

* feat:独立骂人插件

* fix:修lint

* feat:添加关键词

Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
2022-01-11 10:07:51 +08:00
fumiama
8ea64e7aba 添加 -n -p 参数 2022-01-10 12:55:34 +08:00
fumiama
c22140103f 🐛 小修正 2022-01-10 12:17:39 +08:00
github-actions[bot]
8bd6e40ac8 🎨 改进代码样式 2022-01-09 15:22:17 +00:00
himawari
2ed25c6991 添加签到,引入分数机制 (#101)
* feat:添加签到功能,引入分数机制

* feat:修lint

* fix:加宽

* fix:修lint和加锁

* fix:解决冲突

* fix:二次判断
2022-01-09 23:21:36 +08:00
fumiama
d8991ec016 🐛 启动显示 banner 2022-01-09 23:20:00 +08:00
fumiama
dc9ca1e63f 💩👌 make lint happy 2022-01-09 22:53:22 +08:00
fumiama
7bb3203dfb 🐛 群管全局操作权限错误 2022-01-09 22:20:14 +08:00
fumiama
8ebe9548f7 ️ 优化 abs 2022-01-08 13:56:19 +08:00
fumiama
f90f20d3a8 🙈 同步 data 2022-01-08 11:53:52 +08:00
fumiama
1437e3b323 🎨 小修正 2022-01-07 22:47:32 +08:00
fumiama
d44171de61 ♻️ 🔥 优化 acgimage, 新增 ipv6 分流 2022-01-07 21:57:30 +08:00
fumiama
62a9e413fb 🔖 v1.2.3 2022-01-07 20:10:14 +08:00
fumiama
c12c48dea6 🐛 fix setdata&getdata 2022-01-07 20:07:10 +08:00
github-actions[bot]
7dd81525e4 🎨 改进代码样式 2022-01-07 11:48:23 +00:00
himawari
ca36038bbd 增加小爱回复 (#100)
* fix:去掉count,修sql

* feat:增加小爱回复

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修改设置回复模式

* fix:修lint

Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
2022-01-07 19:47:35 +08:00
fumiama
ca2f674696 更新 md5 服务器域名 2022-01-06 21:09:34 +08:00
fumiama
8acf9b817f ✏️ 修复 cd valid 判断 2022-01-06 12:40:48 +08:00
fumiama
2dc1fbde96 Merge branch 'master' of https://github.com/FloatTech/ZeroBot-Plugin 2022-01-06 12:26:08 +08:00
fumiama
919651a2b3 💩👌 make lint happy 2022-01-06 12:25:56 +08:00
himawari
19b55a574f fix:去掉count,修sql (#99) 2022-01-03 23:13:24 +08:00
fumiama
a6ab7de475 ⬆️ 更新 摸鱼 元旦 2022-01-03 10:54:59 +08:00
fumiama
2ff229e9d9 ⚰️ 简化 getdata 2022-01-03 01:00:35 +08:00
fumiama
18def7c624 💩👌 make lint happy 2022-01-03 00:46:49 +08:00
fumiama
59a731df88 升级依赖 2022-01-03 00:36:40 +08:00
github-actions[bot]
6186356496 🎨 改进代码样式 2022-01-02 16:26:49 +00:00
himawari
045ee091a7 增加文字转图片&拟声鸟 (#96)
* feat:添加文字转图片,改造长文字

* fix:修改log

* fix:修改条件

* fix:不保存图片

* fix:增加block和优先级

* fix:文件夹首字母大写

* fix:修改解签为图片

* feat:添加拟声鸟

* fix:清理缓存

* fix:换一个音频

* fix:小修格式

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:修一下lint

* fix:10s一次

* fix:10s一次

* fix:修lint
2022-01-03 00:26:00 +08:00
github-actions[bot]
a69d985139 🎨 改进代码样式 2022-01-02 14:13:19 +00:00
fumiama
c13641dd1d ✏️ 修复 waitgroup 错误 2022-01-02 22:12:40 +08:00
fumiama
f0fc5d6598 同步 data 2022-01-02 22:06:54 +08:00
fumiama
2348039c16 ✏️ 加快 reg 处理速度 2022-01-02 15:06:35 +08:00
fumiama
7f8d34e8a0 ✏️ 修复 kanban panic 2022-01-02 14:09:27 +08:00
fumiama
205036b658 🎨 优化 win logrus 色彩显示 2021-12-30 12:32:31 +08:00
fumiama
9519896d04 remove apple in nightly 2021-12-27 17:10:10 +08:00
fumiama
aa83b63617 win 下 log 支持颜色 2021-12-27 16:59:07 +08:00
源文雨
3e89a372b3 Update main_win.go 2021-12-27 16:53:20 +08:00
源文雨
d464695b66 win 下 log 支持颜色 2021-12-27 16:51:53 +08:00
fumiama
657532f7e5 make lint happy 2021-12-26 22:21:00 +08:00
github-actions[bot]
3f69308603 🎨 改进代码样式 2021-12-26 14:00:48 +00:00
himawari
486160fc57 添加cp短打 (#94)
* feat:添加cp短打插件

* feat:匹配中英文标点符号和中文字符
2021-12-26 22:00:02 +08:00
fumiama
3939e0760f make lint happy 2021-12-26 21:59:48 +08:00
fumiama
16624a9596 ✏️ 修复 manager 定时器错误 2021-12-26 16:05:05 +08:00
fumiama
58e075e6ff make lint happy 2021-12-26 15:25:46 +08:00
github-actions[bot]
ef081714d7 🎨 改进代码样式 2021-12-26 07:17:57 +00:00
himawari
96802efa45 增加绝绝子和藏头诗 (#93)
* feat:添加绝绝子和藏头诗

* fix:去除日志

* fix:修一下help,replace,命名
2021-12-26 15:17:11 +08:00
fumiama
0a95f3198b make lint happy 2021-12-26 15:16:42 +08:00
fumiama
cb44758036 ✏️ 修复 manager 定时器错误
同时 make lint happy
2021-12-26 14:07:05 +08:00
fumiama
1682c321d3 ✏️ 升级到 go 1.17 2021-12-25 20:18:09 +08:00
fumiama
eeba8a5de7 move atri data to submodule 2021-12-25 14:01:51 +08:00
fumiama
2ea0f58e03 fix download error 2021-12-25 13:57:55 +08:00
fumiama
05235473c1 ✏️ 更新下载 url 2021-12-25 13:39:41 +08:00
fumiama
f0c083f4e6 ✏️ 将 data 作为子模块 2021-12-25 13:33:04 +08:00
fumiama
6997c9a5c0 rm data 2021-12-25 13:30:20 +08:00
fumiama
eebfa23509 make lint happy 2021-12-25 13:01:05 +08:00
github-actions[bot]
59fe8a021f 🎨 改进代码样式 2021-12-25 04:43:37 +00:00
himawari
16672d9b89 feat:添加抽象话插件 (#92) 2021-12-25 12:43:02 +08:00
fumiama
1d39fd8685 fix(manager): unable to open dbfile: out of memory 2021-12-24 19:52:51 +08:00
fumiama
ae41bdb7f8 ✏️ 修改摸鱼节日为动态变化 2021-12-24 13:14:40 +08:00
github-actions[bot]
4147f1056a 🎨 改进代码样式 2021-12-24 04:33:46 +00:00
fumiama
7c5d08b723 ✏️ make lint happy 2021-12-24 12:32:51 +08:00
himawari
a3b5a226ac 增加沙雕app一系列接口 (#91)
* feat:添加沙雕app一系列api

* fix: 修个文案

* fix:修改等级

* fix:好孩子不能骂人

Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
2021-12-24 12:32:26 +08:00
fumiama
f56cee9ec1 ✏️ 群管 gist 验证 自动设置昵称为用户名 2021-12-23 21:46:34 +08:00
fumiama
3b977535f1 ✏️ edit README 2021-12-22 18:57:30 +08:00
fumiama
ce8d98b77d fix: panic: database is locked (5) (SQLITE_BUSY) 2021-12-22 18:37:41 +08:00
fumiama
2858d0b0a4 Merge branch 'master' of https://github.com/FloatTech/ZeroBot-Plugin 2021-12-21 22:22:11 +08:00
fumiama
1f982566e0 更新 codechina 域名 2021-12-21 22:22:01 +08:00
github-actions[bot]
779ec5b2fe 🎨 改进代码样式 2021-12-21 14:18:52 +00:00
fumiama
8499921d67 ✏️ 优化代码结构 2021-12-21 22:18:06 +08:00
fumiama
1e49bad1a6 Merge branch 'master' of https://github.com/FloatTech/ZeroBot-Plugin 2021-12-21 22:12:09 +08:00
fumiama
1d3a61386d ✏️ 优化代码结构 2021-12-21 22:09:43 +08:00
github-actions[bot]
25ef2ca220 🎨 改进代码样式 2021-12-21 13:25:34 +00:00
himawari
b953385bc5 feat:添加词库,骂人和笑话 (#90)
Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
2021-12-21 21:24:59 +08:00
fumiama
4fdedd0a7b ✏️ 增加黑名单 (#2) 2021-12-21 14:12:13 +08:00
Kanri
f4bc43e7a5 ✏️ 修改 windows 日志样式 2021-12-21 09:35:59 +08:00
fumiama
596c75eeca ✏️ make lint happy 2021-12-19 17:43:46 +08:00
fumiama
67a493ee84 ✏️ 更新 go.sum 2021-12-19 17:36:13 +08:00
fumiama
f9c7d9419e ✏️ make lint happy 2021-12-19 17:27:32 +08:00
github-actions[bot]
1a1a006283 🎨 改进代码样式 2021-12-19 08:06:16 +00:00
himawari
fd85ce0923 feat:添加铅笔小说搜索插件 (#89)
* feat:添加铅笔小说搜索插件

* fix:小修改help

* fix:微调语句

* fix:替换编码库

* fix:不修改go.sum
2021-12-19 16:05:29 +08:00
fumiama
5ff9069ff2 ✏️ make lint happy 2021-12-19 16:04:14 +08:00
fumiama
4ad7ff7971 ✏️ make lint happy 2021-12-19 11:39:30 +08:00
fumiama
a9f98763c4 ✏️ edit README 2021-12-17 12:30:48 +08:00
fumiama
3b637fad78 ✏️ aifalese 磁盘空间占用仅输出非0挂载点 2021-12-17 12:28:38 +08:00
fumiama
f202797964 ✏️ fix shindan by @Yiwen-Chan 2021-12-17 11:36:50 +08:00
fumiama
242d780048 ✏️ edit README 2021-12-16 17:02:03 +08:00
fumiama
bf23364097 ✏️ edit README 2021-12-16 17:00:11 +08:00
fumiama
7eaac7a20b ✏️ fix gist panic 2021-12-16 16:27:25 +08:00
149 changed files with 3820 additions and 3977 deletions

View File

@@ -15,13 +15,9 @@ jobs:
strategy:
matrix:
# build and publish in parallel: linux/386, linux/amd64, windows/386, windows/amd64, darwin/amd64, darwin/arm64
goos: [linux, windows, darwin]
goos: [linux, windows]
goarch: ["386", amd64, arm, arm64]
exclude:
- goos: darwin
goarch: arm
- goos: darwin
goarch: "386"
- goos: windows
goarch: arm
- goos: windows

11
.gitignore vendored
View File

@@ -1,14 +1,3 @@
data/SetuTime/cache
data/control
data/SetuTime/search
data/manager
data/acgimage
data/saucenao
data/fortune
data/hs
data/nsetu
data/nwife
data/sleep
plugins/*.so
plugins/*.dll
.idea/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "data"]
path = data
url = https://github.com/FloatTech/zbpdata

View File

@@ -11,7 +11,6 @@ builds:
- GO111MODULE=on
goos:
- linux
- darwin
goarch:
- 386
- amd64
@@ -20,11 +19,6 @@ builds:
goarm:
- 6
- 7
ignore:
- goos: darwin
goarch: arm
- goos: darwin
goarch: 386
mod_timestamp: "{{ .CommitTimestamp }}"
flags:
- -trimpath

View File

@@ -28,20 +28,24 @@
> 如果您不知道什么是 [OneBot](https://github.com/howmanybots/onebot) 或不希望运行多个程序,还可以直接前往 [gocqzbp](https://github.com/FloatTech/gocqzbp) 的 [Release](https://github.com/FloatTech/gocqzbp/releases) 页面下载单一可执行文件或前往 [Packages](https://github.com/FloatTech/gocqzbp/pkgs/container/gocqzbp) 页面使用`docker`,运行后按提示登录即可。
## 命令行参数
> `[]`代表是可选参数
```bash
zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地址:端口] [qq1 qq2 qq3 ...] [&]
```
- **-h**: 显示帮助
- **-t token**: 设置`AccessToken`,默认为空
- **-u url**: 设置`Url`,默认为`ws://127.0.0.1:6700`
- **-n nickname**: 设置默认昵称,默认为`椛椛`
- **-p prefix**: 设置命令前缀,默认为`/`
- **-d|w**: 开启 debug | warning 级别及以上日志输出
- **-g 监听地址:端口**: 在 http://监听地址:端口 上开启 [webgui](https://github.com/FloatTech/bot-manager)
- **qqs**: superusers 的 qq 号
- **&**: 驻留在后台,必须放在最后,仅`Linux`下有效
## 功能
> 在编译时,以下功能除插件控制外,均可通过注释`main.go`中的相应`import`而物理禁用,减小插件体积。
> 通过插件控制,还可动态管理某个功能在某个群的打开/关闭。
- **web管理** `import _ "github.com/FloatTech/ZeroBot-Plugin/control/web"`
- **web管理** `import _ "github.com/FloatTech/zbputils/control/web"`
- 开启后可执行文件大约增加 5M ,默认注释不开启。如需开启请自行编辑`main.go`取消注释
- 需要配合 [webgui](https://github.com/FloatTech/bot-manager) 使用
- **动态加载插件** `import _ github.com/FloatTech/ZeroBot-Plugin-Dynamic/dyloader`
@@ -52,6 +56,8 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] /全局启用 xxx
- [x] /全局禁用 xxx
- [x] /还原 xxx (在发送的群/用户还原xxx的开启状态到初始状态)
- [x] /禁止 service qq1 qq2... (禁止 qqs 使用服务 service)
- [x] /允许 service qq1 qq2... (重新允许 qqs 使用服务 service)
- [x] /用法 xxx
- [x] /服务列表
- [x] /服务详情
@@ -63,6 +69,7 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] 空调关
- [x] 群温度
- [x] 设置温度[正整数]
- [x] @Bot mua|啾咪|摸|上你|傻|裸|贴|老婆|抱|亲|一下|咬|操|123|进去|调教|搓|让|捏|挤|略|呐|原味|胖次|内裤|内衣|衣服|ghs|批|憨批|kkp|咕|骚|喜欢|suki|好き|看|不能|砸了|透|口我|草我|自慰|onani|オナニー|炸了|色图|涩图|告白|对不起|回来|吻|软|壁咚|掰开|女友|是|喵|嗷呜|叫|拜|佬|awsl|臭|香|腿|张开|脚|脸|头发|手|pr|舔|小穴|腰|诶嘿嘿|可爱|扭蛋|鼻|眼|色气|推|床|举|手冲|饿|变|敲|爬|怕|冲|射|不穿|迫害|猫粮|揪尾巴|薄荷|早|晚安|揉|榨|掐|胸|奶子|欧派|嫩|蹭|牵手|握手|拍照|w|睡不着|欧尼酱|哥|爱你|过来|自闭|打不过|么么哒|很懂|膝枕|累了|安慰|洗澡|一起睡觉|一起|多大|姐姐|糖|嗦|牛子|🐂子|🐮子|嫌弃|紧|baka|笨蛋|插|插进来|屁股|翘|翘起来|抬|抬起|爸|傲娇|rua|咕噜咕噜|咕噜|上床|做爱|吃掉|吃|揪|种草莓|种草|掀|妹|病娇|嘻
- **ATRI** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_atri"`
- [x] 具体指令看 /用法 atri
- 注:本插件基于 [ATRI](https://github.com/Kyomotoi/ATRI) ,为 Golang 移植版
@@ -96,7 +103,7 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [ ] 撤回[@xxx] [xxx]
- [ ] 警告[@xxx]
- [x] run[xxx]
-使用gist加群自动审批请在群介绍添加以下说明同时开启`需要回答问题并由管理员审核`加群请在github新建一个gist其文件名为本群群号的字符串的md5内容为一行是当前unix时间戳。然后请将您的用户名和gist哈希按照username/gisthash的格式填写到回答即可。
-使用gist加群自动审批请在群介绍添加以下说明同时开启`需要回答问题并由管理员审核`加群请在github新建一个gist其文件名为本群群号的字符串的md5(小写)内容为一行是当前unix时间戳(10分钟内有效)。然后请将您的用户名和gist哈希(小写)按照username/gisthash的格式填写到回答即可。
- **GitHub仓库搜索** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_github"`
- [x] >github [xxx]
- [x] >github -p [xxx]
@@ -115,7 +122,7 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] 抽老婆[@xxx]
- **AIWife** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_aiwife"`
- [x] waifu|随机waifu(从[100000个AI生成的waifu](https://www.thiswaifudoesnotexist.net/)中随机一位)
- **gif** `import _ "github.com/tdf1939/ZeroBot-Plugin-Gif/plugin_gif"`
- **gif** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_gif"`
- [x] 爬[@xxx]
- [x] 摸[@xxx]
- [x] 搓[@xxx]
@@ -147,12 +154,14 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] 搜图[P站图片ID]
- **搜番** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_tracemoe"`
- [x] 搜番|搜索番剧[图片]
- **随机图片与AI点评** `github.com/FloatTech/ZeroBot-Plugin/plugin_acgimage`
- **随机图片与AI点评** `import _ github.com/FloatTech/ZeroBot-Plugin/plugin_acgimage`
- [x] 随机图片(评级大于6的图将私发)
- [x] 直接随机(无r18检测务必小心仅管理可用)
- [x] 设置随机图片网址[url]
- [x] 太涩了(撤回最近发的图)
- [x] 评价图片(发送一张图片让bot评分)
- **DeepDanbooru二次元图标签识别** `import _ github.com/FloatTech/ZeroBot-Plugin/plugin_danbooru`
- [x] 鉴赏图片[图片]
- **每日运势** `import _ github.com/FloatTech/ZeroBot-Plugin/plugin_fortune`
- [x] 运势|抽签
- [x] 设置底图[车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师]
@@ -176,7 +185,7 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- 注:由于需要科学,默认注释。
- **AIfalse** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_false"`
- [x] 查询计算机当前活跃度: [检查身体|自检|启动自检|系统状态]
- [x] 清理缓存
- [x] 清理缓存 (仅适用于 gocq 且需要 bot 的运行目录和 gocq 相同)
- [ ] 简易语音
- [ ] 爬图合成 [@xxx]
- **抽wife** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_nativewife"`
@@ -194,8 +203,9 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] 搜卡[xxxx]
- [x] [卡组代码xxx]
-更多搜卡指令参数https://hs.fbigame.com/misc/searchhelp
- **青云客** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_qingyunke"`
- **人工智能回复** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_reply"`
- [x] @Bot 任意文本(任意一句话回复)
- [x] 设置回复模式[青云客|小爱]
- **关键字搜图** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_image_finder"`
- [x] 来张 [xxx]
- **拼音首字母释义工具** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_nbnhhsh"`
@@ -211,10 +221,47 @@ zerobot -h -t token -u url [-d|w] [-g 监听地址:端口] qq1 qq2 qq3 ...
- [x] vtb语录
- [x] 随机vtb
- **书评** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_book_review"`
- [x] 书评[关键字]
- [x] 书评[xxx]
- [x] 随机书评
- **coser** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_coser" `
- [x] coser
- **小说** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_novel" `
- [x] 小说[xxx]
- **沙雕app插件** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_shadiao"`
- [x] 骂他[@xxx]|骂他[qq号] (停用)
- [x] 骂我 (停用)
- [x] 哄我
- [x] 渣我
- [x] 来碗绿茶
- [x] 发个朋友圈
- [x] 来碗毒鸡汤
- [x] 讲个段子
- **笑话** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_funny"`
- [x] 讲个笑话[@xxx]|讲个笑话[qq号]
- **抽象话** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_chouxianghua"`
- [x] 抽象翻译[xxx]
- **绝绝子** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_juejuezi"`
- [x] 喝奶茶绝绝子|绝绝子吃饭
- **藏头诗** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_cangtoushi"`
- [x] 藏头诗[xxx]
- [x] 藏尾诗[xxx]
- **cp短打** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_cpstory"`
- [x] 组cp[@xxx][@xxx]
- [x] 组cp大老师 雪乃
- **签到得分** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_score"`
- [x] 签到
- [x] 获得签到背景[@xxx]|获得签到背景
- **骂人** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_curse"`
- [x] 骂我
- [x] 大力骂我
- [x] @bot 他妈|公交车|你妈|操|屎|去死|快死|日|逼|尼玛|艾滋|癌症|有病|戴套|啊对对对|烦你|你爹|屮|tui|cnm
- **b站推送** `_ "github.com/FloatTech/ZeroBot-Plugin/plugin_bilibili_push"`
- [x] 添加订阅[uid]
- [x] 取消订阅[uid]
- [x] 取消动态订阅[uid]
- [x] 取消直播订阅[uid]
- [x] 推送列表
- 注: linux下要想动态图片显示正常需要下载chrome浏览器并安装字体具体看https://www.yuque.com/xiangrikuidezhongzi/zerobot/qrwxth
- **TODO...**
## 使用方法

View File

@@ -1,93 +0,0 @@
package control
import (
"encoding/binary"
"strings"
"time"
b14 "github.com/fumiama/go-base16384"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
)
var startTime int64
func init() {
// 插件冲突检测 会在本群发送一条消息并在约 1s 后撤回
zero.OnFullMatch("插件冲突检测", zero.OnlyGroup, zero.AdminPermission, zero.OnlyToMe).SetBlock(true).FirstPriority().
Handle(func(ctx *zero.Ctx) {
tok, err := genToken()
if err != nil {
return
}
t := message.Text("●cd" + tok)
startTime = time.Now().Unix()
id := ctx.SendChain(t)
process.SleepAbout1sTo2s()
ctx.DeleteMessage(id)
})
zero.OnRegex("^●cd([\u4e00-\u8e00]{4})$", zero.OnlyGroup).SetBlock(true).FirstPriority().
Handle(func(ctx *zero.Ctx) {
if isValidToken(ctx.State["regex_matched"].([]string)[1]) {
msg := ""
gid := ctx.Event.GroupID
ForEach(func(key string, manager *Control) bool {
if manager.IsEnabledIn(gid) {
msg += "\xfe\xff" + key
}
return true
})
if len(msg) > 2 {
my, err := b14.UTF16be2utf8(b14.EncodeString(msg[2:]))
mys := "●cd●" + helper.BytesToString(my)
if err == nil {
id := ctx.SendChain(message.Text(mys))
process.SleepAbout1sTo2s()
ctx.DeleteMessage(id)
}
}
}
})
zero.OnRegex("^●cd●(([\u4e00-\u8e00]*[\u3d01-\u3d06]?))", zero.OnlyGroup).SetBlock(true).FirstPriority().
Handle(func(ctx *zero.Ctx) {
if time.Now().Unix()-startTime < 10 {
msg, err := b14.UTF82utf16be(helper.StringToBytes(ctx.State["regex_matched"].([]string)[1]))
if err == nil {
gid := ctx.Event.GroupID
for _, s := range strings.Split(b14.DecodeString(msg), "\xfe\xff") {
mu.RLock()
c, ok := managers[s]
mu.RUnlock()
if ok && c.IsEnabledIn(gid) {
c.Disable(gid)
}
}
}
}
})
}
func genToken() (tok string, err error) {
timebytes := make([]byte, 8)
binary.BigEndian.PutUint64(timebytes, uint64(time.Now().Unix()))
timebytes, err = b14.UTF16be2utf8(b14.Encode(timebytes[1:]))
if err == nil {
tok = helper.BytesToString(timebytes)
}
return
}
func isValidToken(tok string) (yes bool) {
s, err := b14.UTF82utf16be(helper.StringToBytes(tok))
if err == nil {
timebytes := make([]byte, 1, 8)
timebytes = append(timebytes, b14.Decode(s)...)
yes = time.Now().Unix()-int64(binary.BigEndian.Uint64(timebytes)) < 10
}
return
}

View File

@@ -1,19 +0,0 @@
package control
import "testing"
func TestGenToken(t *testing.T) {
tok, err := genToken()
if err == nil {
t.Log(tok)
t.Log(isValidToken(tok))
t.Fail()
} else {
t.Fatal(err)
}
}
func TestMaru(t *testing.T) {
t.Log(len("\xff"))
t.Fail()
}

View File

@@ -1,31 +0,0 @@
package control
import (
zero "github.com/wdvxdr1123/ZeroBot"
)
var enmap = make(map[string]*zero.Engine)
// Register 注册插件控制器
func Register(service string, o *Options) *zero.Engine {
engine := zero.New()
engine.UsePreHandler(newctrl(service, o).Handler())
enmap[service] = engine
return engine
}
// Delete 删除插件控制器,不会删除数据
func Delete(service string) {
engine, ok := enmap[service]
if ok {
engine.Delete()
mu.RLock()
_, ok = managers[service]
mu.RUnlock()
if ok {
mu.Lock()
delete(managers, service)
mu.Unlock()
}
}
}

View File

@@ -1,354 +0,0 @@
// Package control 控制插件的启用与优先级等
package control
import (
"os"
"strconv"
"strings"
"sync"
"github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
)
var (
db = &sql.Sqlite{DBPath: "data/control/plugins.db"}
// managers 每个插件对应的管理
managers = map[string]*Control{}
mu = sync.RWMutex{}
hasinit bool
)
// Control is to control the plugins.
type Control struct {
sync.RWMutex
service string
options Options
}
// newctrl returns Manager with settings.
func newctrl(service string, o *Options) *Control {
m := &Control{service: service,
options: func() Options {
if o == nil {
return Options{}
}
return *o
}(),
}
mu.Lock()
managers[service] = m
mu.Unlock()
err := db.Create(service, &grpcfg{})
if err != nil {
panic(err)
}
return m
}
// Enable enables a group to pass the Manager.
// groupID == 0 (ALL) will operate on all grps.
func (m *Control) Enable(groupID int64) {
var c grpcfg
m.RLock()
err := db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(groupID, 10))
m.RUnlock()
if err != nil {
c.GroupID = groupID
}
c.Disable = int64(uint64(c.Disable) & 0xffffffff_fffffffe)
m.Lock()
err = db.Insert(m.service, &c)
m.Unlock()
if err != nil {
logrus.Errorf("[control] %v", err)
}
}
// Disable disables a group to pass the Manager.
// groupID == 0 (ALL) will operate on all grps.
func (m *Control) Disable(groupID int64) {
var c grpcfg
m.RLock()
err := db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(groupID, 10))
m.RUnlock()
if err != nil {
c.GroupID = groupID
}
c.Disable |= 1
m.Lock()
err = db.Insert(m.service, &c)
m.Unlock()
if err != nil {
logrus.Errorf("[control] %v", err)
}
}
// Reset resets the default config of a group.
// groupID == 0 (ALL) is not allowed.
func (m *Control) Reset(groupID int64) {
if groupID != 0 {
m.Lock()
err := db.Del(m.service, "WHERE gid = "+strconv.FormatInt(groupID, 10))
m.Unlock()
if err != nil {
logrus.Errorf("[control] %v", err)
}
}
}
// IsEnabledIn 开启群
func (m *Control) IsEnabledIn(gid int64) bool {
var c grpcfg
var err error
logrus.Debugln("[control] IsEnabledIn recv gid =", gid)
if gid != 0 {
m.RLock()
err = db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(gid, 10))
m.RUnlock()
if err == nil && gid == c.GroupID {
logrus.Debugf("[control] plugin %s of grp %d : %d", m.service, c.GroupID, c.Disable&1)
return c.Disable&1 == 0
}
}
m.RLock()
err = db.Find(m.service, &c, "WHERE gid = 0")
m.RUnlock()
if err == nil && c.GroupID == 0 {
logrus.Debugf("[control] plugin %s of all : %d", m.service, c.Disable&1)
return c.Disable&1 == 0
}
return !m.options.DisableOnDefault
}
// GetData 获取某个群的 63 字节配置信息
func (m *Control) GetData(gid int64) int64 {
var c grpcfg
var err error
logrus.Debugln("[control] IsEnabledIn recv gid =", gid)
if gid != 0 {
m.RLock()
err = db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(gid, 10))
m.RUnlock()
if err == nil && gid == c.GroupID {
logrus.Debugf("[control] plugin %s of grp %d : %x", m.service, c.GroupID, c.Disable>>1)
return c.Disable >> 1
}
}
m.RLock()
err = db.Find(m.service, &c, "WHERE gid = 0")
m.RUnlock()
if err == nil && c.GroupID == 0 {
logrus.Debugf("[control] plugin %s of all : %x", m.service, c.Disable>>1)
return c.Disable >> 1
}
return 0
}
// SetData 为某个群设置低 63 位配置数据
func (m *Control) SetData(groupID int64, data int64) error {
var c grpcfg
m.RLock()
err := db.Find(m.service, &c, "WHERE gid = "+strconv.FormatInt(groupID, 10))
m.RUnlock()
if err != nil {
c.GroupID = groupID
if m.options.DisableOnDefault {
c.Disable = 1
}
}
c.Disable |= data << 1
logrus.Debugf("[control] set plugin %s of all : %x", m.service, data)
m.Lock()
err = db.Insert(m.service, &c)
m.Unlock()
if err != nil {
logrus.Errorf("[control] %v", err)
}
return err
}
// Handler 返回 预处理器
func (m *Control) Handler() zero.Rule {
return func(ctx *zero.Ctx) bool {
ctx.State["manager"] = m
grp := ctx.Event.GroupID
if grp == 0 {
// 个人用户
grp = -ctx.Event.UserID
}
logrus.Debugln("[control] handler get gid =", grp)
return m.IsEnabledIn(grp)
}
}
// Lookup returns a Manager by the service name, if
// not exist, it will returns nil.
func Lookup(service string) (*Control, bool) {
mu.RLock()
m, ok := managers[service]
mu.RUnlock()
return m, ok
}
// ForEach iterates through managers.
func ForEach(iterator func(key string, manager *Control) bool) {
mu.RLock()
m := copyMap(managers)
mu.RUnlock()
for k, v := range m {
if !iterator(k, v) {
return
}
}
}
func copyMap(m map[string]*Control) map[string]*Control {
ret := make(map[string]*Control, len(m))
for k, v := range m {
ret[k] = v
}
return ret
}
func userOrGrpAdmin(ctx *zero.Ctx) bool {
if zero.OnlyGroup(ctx) {
return zero.AdminPermission(ctx)
}
return zero.OnlyToMe(ctx)
}
func init() {
if !hasinit {
mu.Lock()
if !hasinit {
err := os.MkdirAll("data/control", 0755)
if err != nil {
panic(err)
} else {
hasinit = true
zero.OnCommandGroup([]string{
"启用", "enable", "禁用", "disable",
"全局启用", "enableall", "全局禁用", "disableall",
}, userOrGrpAdmin).Handle(func(ctx *zero.Ctx) {
model := extension.CommandModel{}
_ = ctx.Parse(&model)
service, ok := Lookup(model.Args)
if !ok {
ctx.SendChain(message.Text("没有找到指定服务!"))
return
}
grp := ctx.Event.GroupID
if grp == 0 {
// 个人用户
grp = -ctx.Event.UserID
}
if strings.Contains(model.Command, "全局") || strings.Contains(model.Command, "all") {
grp = 0
}
if strings.Contains(model.Command, "启用") || strings.Contains(model.Command, "enable") {
service.Enable(grp)
ctx.SendChain(message.Text("已启用服务: " + model.Args))
} else {
service.Disable(grp)
ctx.SendChain(message.Text("已禁用服务: " + model.Args))
}
})
zero.OnCommandGroup([]string{"还原", "reset"}, userOrGrpAdmin).Handle(func(ctx *zero.Ctx) {
model := extension.CommandModel{}
_ = ctx.Parse(&model)
service, ok := Lookup(model.Args)
if !ok {
ctx.SendChain(message.Text("没有找到指定服务!"))
return
}
grp := ctx.Event.GroupID
if grp == 0 {
// 个人用户
grp = -ctx.Event.UserID
}
service.Reset(grp)
ctx.SendChain(message.Text("已还原服务的默认启用状态: " + model.Args))
})
zero.OnCommandGroup([]string{"用法", "usage"}, userOrGrpAdmin).
Handle(func(ctx *zero.Ctx) {
model := extension.CommandModel{}
_ = ctx.Parse(&model)
service, ok := Lookup(model.Args)
if !ok {
ctx.SendChain(message.Text("没有找到指定服务!"))
return
}
if service.options.Help != "" {
ctx.SendChain(message.Text(service.options.Help))
} else {
ctx.SendChain(message.Text("该服务无帮助!"))
}
})
zero.OnCommandGroup([]string{"服务列表", "service_list"}, userOrGrpAdmin).
Handle(func(ctx *zero.Ctx) {
msg := "--------服务列表--------\n发送\"/用法 name\"查看详情"
i := 0
gid := ctx.Event.GroupID
ForEach(func(key string, manager *Control) bool {
i++
msg += "\n" + strconv.Itoa(i) + `: `
if manager.IsEnabledIn(gid) {
msg += "●" + key
} else {
msg += "○" + key
}
return true
})
ctx.SendChain(message.Text(msg))
})
zero.OnCommandGroup([]string{"服务详情", "service_detail"}, userOrGrpAdmin, zero.OnlyGroup).
Handle(func(ctx *zero.Ctx) {
var m message.Message
m = append(m,
message.CustomNode(
zero.BotConfig.NickName[0],
ctx.Event.SelfID,
"---服务详情---",
))
i := 0
ForEach(func(key string, manager *Control) bool {
service, _ := Lookup(key)
help := service.options.Help
i++
msg := strconv.Itoa(i) + `: `
if manager.IsEnabledIn(ctx.Event.GroupID) {
msg += "●" + key
} else {
msg += "○" + key
}
msg += "\n" + help
m = append(m,
message.CustomNode(
zero.BotConfig.NickName[0],
ctx.Event.SelfID,
msg,
))
return true
})
if id := ctx.SendGroupForwardMessage(
ctx.Event.GroupID,
m,
).Get("message_id").Int(); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
}
})
}
}
mu.Unlock()
}
}

View File

@@ -1,13 +0,0 @@
package control
// grpcfg holds the group config for the Manager.
type grpcfg struct {
GroupID int64 `db:"gid"` // GroupID 群号
Disable int64 `db:"disable"` // Disable 默认启用该插件
}
// Options holds the optional parameters for the Manager.
type Options struct {
DisableOnDefault bool
Help string // 帮助文本信息
}

View File

@@ -1,564 +0,0 @@
// Package webctrl
/*
* 一个用户webui的包里面包含了webui所需的所有内容
*/
package webctrl
import (
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"strconv"
"sync"
manager "github.com/FloatTech/bot-manager"
// 依赖gin监听server
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
// 前端静态文件
log "github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
ctrl "github.com/FloatTech/ZeroBot-Plugin/control"
)
var (
// 向前端推送消息的ws链接
conn *websocket.Conn
// 向前端推送日志的ws链接
logConn *websocket.Conn
l logWriter
// 存储请求事件flag作为键一个request对象作为值
requestData sync.Map
)
// logWriter
// @Description:
//
type logWriter struct {
}
// request
// @Description: 一个请求事件的结构体
//
type request struct {
RequestType string `json:"request_type"`
SubType string `json:"sub_type"`
Type string `json:"type"`
Comment string `json:"comment"`
GroupID int64 `json:"group_id"`
UserID int64 `json:"user_id"`
Flag string `json:"flag"`
SelfID int64 `json:"self_id"`
}
// InitGui 初始化gui
func InitGui(addr string) {
// 将日志重定向到前端hook
writer := io.MultiWriter(l, os.Stdout)
log.SetOutput(writer)
// 监听后端
go controller(addr)
// 注册消息handle
messageHandle()
}
// websocket的协议升级
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func controller(addr string) {
defer func() {
err := recover()
if err != nil {
log.Errorln("[gui]" + "bot-manager出现不可恢复的错误")
log.Errorln("[gui]", err)
}
}()
engine := gin.New()
// 支持跨域
engine.Use(cors())
// 注册静态文件
engine.StaticFS("/dist", http.FS(manager.Dist))
engine.POST("/get_bots", getBots)
engine.POST("/get_group_list", getGroupList)
engine.POST("/get_friend_list", getFriendList)
// 注册主路径路由,使其跳转到主页面
engine.GET("/", func(context *gin.Context) {
context.Redirect(http.StatusMovedPermanently, "/dist/dist/default.html")
})
// 更改某个插件状态
engine.POST("/update_plugin_status", updatePluginStatus)
// 更改某一个插件在所有群的状态
engine.POST("/update_plugin_all_group_status", updatePluginAllGroupStatus)
// 更改所有插件状态
engine.POST("/update_all_plugin_status", updateAllPluginStatus)
// 获取所有插件状态
engine.POST("/get_plugins_status", getPluginsStatus)
// 获取一个插件状态
engine.POST("/get_plugin_status", getPluginStatus)
// 获取插件列表
engine.POST("/get_plugins", func(context *gin.Context) {
var datas []map[string]interface{}
ctrl.ForEach(func(key string, manager *ctrl.Control) bool {
datas = append(datas, map[string]interface{}{"id": 1, "handle_type": "", "name": key, "enable": manager.IsEnabledIn(0)})
return true
})
context.JSON(200, datas)
})
// 获取所有请求
engine.POST("/get_requests", getRequests)
// 执行一个请求事件
engine.POST("handle_request", handelRequest)
// 链接日志
engine.GET("/get_log", getLogs)
// 获取前端标签
engine.GET("/get_label", func(context *gin.Context) {
context.JSON(200, "ZeroBot-Plugin")
})
// 发送信息
engine.POST("/send_msg", sendMsg)
engine.GET("/data", upgrade)
log.Infoln("[gui] the webui is running on", addr)
log.Infoln("[gui] ", "you input the `ZeroBot-Plugin.exe -g` can disable the gui")
if err := engine.Run(addr); err != nil {
log.Debugln("[gui] ", err.Error())
}
}
// handelRequest
/**
* @Description: 处理一个请求
* @param context
*/
func handelRequest(context *gin.Context) {
var data map[string]interface{}
err := context.BindJSON(&data)
if err != nil {
context.JSON(404, nil)
return
}
r, ok := requestData.LoadAndDelete(data["flag"].(string))
if !ok {
context.JSON(404, "flag not found")
}
r2 := r.(*request)
r2.handle(data["approve"].(bool), data["reason"].(string))
context.JSON(200, "操作成功")
}
// getRequests
/**
* @Description: 获取所有的请求
* @param context
*/
func getRequests(context *gin.Context) {
var data []interface{}
requestData.Range(func(key, value interface{}) bool {
data = append(data, value)
return true
})
context.JSON(200, data)
}
// updateAllPluginStatus
/**
* @Description: 改变所有插件的状态
* @param context
* example
*/
func updateAllPluginStatus(context *gin.Context) {
enable, err := strconv.ParseBool(context.PostForm("enable"))
if err != nil {
var parse map[string]interface{}
err := context.BindJSON(&parse)
if err != nil {
log.Errorln("[gui] " + err.Error())
return
}
enable = parse["enable"].(bool)
}
ctrl.ForEach(func(key string, manager *ctrl.Control) bool {
if enable {
manager.Enable(0)
} else {
manager.Disable(0)
}
return true
})
context.JSON(200, nil)
}
// updatePluginAllGroupStatus
/**
* @Description: 改变插件在所有群的状态
* @param context
* example
*/
func updatePluginAllGroupStatus(context *gin.Context) {
name := context.PostForm("name")
enable, err := strconv.ParseBool(context.PostForm("enable"))
if err != nil {
var parse map[string]interface{}
err := context.BindJSON(&parse)
if err != nil {
log.Errorln("[gui]" + err.Error())
return
}
name = parse["name"].(string)
enable = parse["enable"].(bool)
}
control, b := ctrl.Lookup(name)
if !b {
context.JSON(404, nil)
return
}
if enable {
control.Enable(0)
} else {
control.Disable(0)
}
context.JSON(200, nil)
}
// updatePluginStatus
/**
* @Description: 更改某一个插件状态
* @param context
* example
*/
func updatePluginStatus(context *gin.Context) {
var parse map[string]interface{}
err := context.BindJSON(&parse)
if err != nil {
log.Errorln("[gui] ", err)
return
}
groupID := int64(parse["group_id"].(float64))
name := parse["name"].(string)
enable := parse["enable"].(bool)
fmt.Println(name)
control, b := ctrl.Lookup(name)
if !b {
context.JSON(404, "服务不存在")
return
}
if enable {
control.Enable(groupID)
} else {
control.Disable(groupID)
}
context.JSON(200, nil)
}
// getPluginStatus
/**
* @Description: 获取一个插件的状态
* @param context
* example
*/
func getPluginStatus(context *gin.Context) {
groupID, err := strconv.ParseInt(context.PostForm("group_id"), 10, 64)
name := context.PostForm("name")
if err != nil {
var parse map[string]interface{}
err := context.BindJSON(&parse)
if err != nil {
log.Errorln("[gui]" + err.Error())
return
}
groupID = int64(parse["group_id"].(float64))
name = parse["name"].(string)
}
control, b := ctrl.Lookup(name)
if !b {
context.JSON(404, "服务不存在")
return
}
context.JSON(200, gin.H{"enable": control.IsEnabledIn(groupID)})
}
// getPluginsStatus
/**
* @Description: 获取所有插件的状态
* @param context
* example
*/
func getPluginsStatus(context *gin.Context) {
groupID, err := strconv.ParseInt(context.PostForm("group_id"), 10, 64)
if err != nil {
var parse map[string]interface{}
err := context.BindJSON(&parse)
if err != nil {
log.Errorln("[gui]" + err.Error())
return
}
groupID = int64(parse["group_id"].(float64))
}
var datas []map[string]interface{}
ctrl.ForEach(func(key string, manager *ctrl.Control) bool {
enable := manager.IsEnabledIn(groupID)
datas = append(datas, map[string]interface{}{"name": key, "enable": enable})
return true
})
context.JSON(200, datas)
}
// getLogs
/**
* @Description: 连接日志
* @param context
* example
*/
func getLogs(context *gin.Context) {
con1, err := upGrader.Upgrade(context.Writer, context.Request, nil)
if err != nil {
return
}
logConn = con1
}
// getFriendList
/**
* @Description: 获取好友列表
* @param context
* example
*/
func getFriendList(context *gin.Context) {
selfID, err := strconv.Atoi(context.PostForm("self_id"))
if err != nil {
log.Errorln("[gui]" + err.Error())
var data map[string]interface{}
err := context.BindJSON(&data)
if err != nil {
log.Errorln("[gui]" + err.Error())
log.Errorln("[gui]" + "绑定错误")
return
}
selfID = int(data["self_id"].(float64))
}
bot := zero.GetBot(int64(selfID))
var resp []interface{}
list := bot.GetFriendList().String()
err = json.Unmarshal([]byte(list), &resp)
if err != nil {
log.Errorln("[gui]" + err.Error())
log.Errorln("[gui]" + "解析json错误")
}
context.JSON(200, resp)
}
// getGroupList
/**
* @Description: 获取群列表
* @param context
* example
*/
func getGroupList(context *gin.Context) {
selfID, err := strconv.Atoi(context.PostForm("self_id"))
if err != nil {
var data map[string]interface{}
err := context.BindJSON(&data)
if err != nil {
log.Errorln("[gui]" + err.Error())
return
}
selfID = int(data["self_id"].(float64))
}
bot := zero.GetBot(int64(selfID))
var resp []interface{}
list := bot.GetGroupList().String()
err = json.Unmarshal([]byte(list), &resp)
if err != nil {
log.Errorln("[gui]" + err.Error())
}
context.JSON(200, resp)
}
// getBots
/**
* @Description: 获取机器人qq号
* @param context
* example
*/
func getBots(context *gin.Context) {
var bots []int64
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
bots = append(bots, id)
return true
})
context.JSON(200, bots)
}
// MessageHandle
/**
* @Description: 定义一个向前端发送信息的handle
* example
*/
func messageHandle() {
defer func() {
err := recover()
if err != nil {
log.Errorln("[gui]" + "bot-manager出现不可恢复的错误")
log.Errorln("[gui] ", err)
}
}()
matcher := zero.OnMessage().SetBlock(false).SetPriority(1)
matcher.Handle(func(ctx *zero.Ctx) {
if conn != nil {
err := conn.WriteJSON(ctx.Event)
if err != nil {
log.Debugln("[gui] " + "向发送错误")
return
}
}
})
// 直接注册一个request请求监听器优先级设置为最高设置不阻断事件传播
zero.OnRequest(func(ctx *zero.Ctx) bool {
if ctx.Event.RequestType == "friend" {
ctx.State["type_name"] = "好友添加"
} else {
if ctx.Event.SubType == "add" {
ctx.State["type_name"] = "加群请求"
} else {
ctx.State["type_name"] = "群邀请"
}
}
return true
}).SetBlock(false).FirstPriority().Handle(func(ctx *zero.Ctx) {
r := &request{
RequestType: ctx.Event.RequestType,
SubType: ctx.Event.SubType,
Type: ctx.State["type_name"].(string),
GroupID: ctx.Event.GroupID,
UserID: ctx.Event.UserID,
Flag: ctx.Event.Flag,
Comment: ctx.Event.Comment,
SelfID: ctx.Event.SelfID,
}
requestData.Store(ctx.Event.Flag, r)
})
}
// upgrade
/**
* @Description: 连接ws向前端推送message
* @param context
* example
*/
func upgrade(context *gin.Context) {
con, err := upGrader.Upgrade(context.Writer, context.Request, nil)
if err != nil {
return
}
conn = con
}
// sendMsg
/**
* @Description: 前端调用发送信息
* @param context
* example
*/
func sendMsg(context *gin.Context) {
var data map[string]interface{}
err := context.BindJSON(&data)
if err != nil {
context.JSON(404, nil)
return
}
selfID := int64(data["self_id"].(float64))
id := int64(data["id"].(float64))
message1 := data["message"].(string)
messageType := data["message_type"].(string)
bot := zero.GetBot(selfID)
var msgID int64
if messageType == "group" {
msgID = bot.SendGroupMessage(id, message.ParseMessageFromString(message1))
} else {
msgID = bot.SendPrivateMessage(id, message.ParseMessageFromString(message1))
}
context.JSON(200, msgID)
}
// cors
/**
* @Description: 支持跨域访问
* @return gin.HandlerFunc
* example
*/
func cors() gin.HandlerFunc {
return func(c *gin.Context) {
method := c.Request.Method
origin := c.Request.Header.Get("Origin") // 请求头部
if origin != "" {
// 接收客户端发送的origin (重要!)
c.Writer.Header().Set("Access-Control-Allow-Origin", origin)
// 服务器支持的所有跨域请求的方法
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE,UPDATE")
// 允许跨域设置可以返回其他子段,可以自定义字段
c.Header("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session, Content-Type")
// 允许浏览器(客户端)可以解析的头部 (重要)
c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers")
// 设置缓存时间
c.Header("Access-Control-Max-Age", "172800")
// 允许客户端传递校验信息比如 cookie (重要)
c.Header("Access-Control-Allow-Credentials", "true")
}
// 允许类型校验
if method == "OPTIONS" {
c.JSON(http.StatusOK, "ok!")
}
defer func() {
if err := recover(); err != nil {
log.Printf("Panic info is: %v", err)
}
}()
c.Next()
}
}
// handle
/**
* @Description: 提交一个请求
* @receiver r
* @param approve 是否通过
* @param reason 拒绝的理由
*/
func (r *request) handle(approve bool, reason string) {
bot := zero.GetBot(r.SelfID)
if r.RequestType == "friend" {
bot.SetFriendAddRequest(r.Flag, approve, "")
} else {
bot.SetGroupAddRequest(r.Flag, r.SubType, approve, reason)
}
log.Debugln("[gui] ", "已处理", r.UserID, "的"+r.Type)
}
func (l logWriter) Write(p []byte) (n int, err error) {
if logConn != nil {
err := logConn.WriteMessage(websocket.TextMessage, p)
if err != nil {
return len(p), nil
}
}
return len(p), nil
}

1
data Submodule

Submodule data added at cf3c143aa9

Binary file not shown.

Binary file not shown.

View File

@@ -1,45 +0,0 @@
<EFBFBD>雍晄級謚ス謌択衍オ蝌臥鬪大惠謌題レ荳嬉衍オ譎壽劒雕ゥ謌択衍オ荵<EFBFBD>正蝮仙惠邇句コァ譏ッ逕ィ逵句档蝨セ逧<EFBFBD>愍逾樒恚謌択衍オ<EFBFBD>オ迴井ケ占ク謌択衍オ<EFBFBD><EFBFBD>梧滑謌醍愍逹幄貯菴冗蜷惹コ泌宵閼壻ク€襍キ雕ゥ謌択衍オ霑倩ョゥ謌醍懸閼壽弍隹<EFBFBD>檎懸髞吩コ<EFBFBD>サ呎<EFBFBD>蜉育愍荳€昨衍オ
<EFBFBD> 謌大ス諠ウ蛛壼<EFBFBD>辟カ蟆丞ァ千噪迢怜賦縲ょ庄譏ッ蝌臥蟆丞ァ占ッエ螂ケ蝟懈ャ<EFBFBD>弍迪ォ<EFBFBD><EFBFBD>蜩ュ莠<EFBFBD>€<EFBFBD>驕捺里荳肴弍迢嶺ケ滉ク肴弍迪ォ逧<EFBFBD><EFBFBD>荳コ莉€荵郁ヲ働逧<EFBFBD>€ょ屏荳コ謌大<EFBFBD>螳樊弍荳€蜿ェ閠<EFBFBD><EFBFBD>縲よ<EFBFBD>莉取イ譛帛<EFBFBD>辟カ蟆丞ァ占<EFBFBD>蝟懈ャ閾ェ蟾ア縲よ<EFBFBD>譏守區逧<EFBFBD>シ梧園譛我ココ驛ス蝟懈ャ<EFBFBD>菴呵穂ク頑焔螟ゥ謇肴遠髓ア逧<EFBFBD>酔關檎噪迢礼距謌冶€<EFBFBD>賢迪ォ<EFBFBD>梧イ譛我ココ莨壼万谺髦エ貉ソ蟶ヲ逞<EFBFBD>噪閠<EFBFBD><EFBFBD>縲ゆス<EFBFBD><EFBFBD>霑俶弍髣ョ莠<EFBFBD><EFBFBD>辟カ蟆丞ァ<EFBFBD>:窶懈<EFBFBD>閭ス荳崎<EFBFBD>蛛壻ス<EFBFBD><EFBFBD><EFBFBD>€<EFBFBD>驕捺<EFBFBD>譏ッ豕ィ螳壼荳堺コ<EFBFBD>距逧<EFBFBD>€ゆス<EFBFBD>ヲよ棡螂ケ蝟懈ャ迢暦シ梧<EFBFBD>蟆ア蜿ッ莉€逶エ蝨ィ霄ォ霎ケ逵狗捩螂ケ莠<EFBFBD>シ悟頭諤募ケ諤€驥梧干逹€<EFBFBD>ーク霑憺<EFBFBD>譏ッ迢励€ょ庄譏ッ螂ケ隸エ蝟懈ャ<EFBFBD>弍迪ォ縲ょケ邇ー蝨ィ霑伜惠逵狗捩謌托シ瑚ソ伜惠騾玲<EFBFBD>€<EFBFBD>シ梧弍蝗<EFBFBD>荳コ迪ォ霑俶イ譛牙<EFBFBD>邇ー<EFBFBD>悟宵譛画<EFBFBD>霑呵€<EFBFBD><EFBFBD>豈丞ゥ雹第焔雹題<EFBFBD>蝨ー莉取エ樣辷ャ蜃コ譚<EFBFBD>瑚ソ懆ソ懷慍蜥悟ケ蟇ケ隗<EFBFBD>€らュ牙ケ蝟懈ャ<EFBFBD>賢譚<EFBFBD>噪譌カ蛟呻シ梧<EFBFBD>蟆ア隸驥肴眠貊壼屓謌醍噪豢樔コ<EFBFBD>制縲ゆス<EFBFBD><EFBFBD>霑俶弍螂ス蝟懈ャ螂ケ<EFBFBD>ケ閭ス蝨ィ謌題ソ伜惠螂ケ霄ォ霎ケ逧<EFBFBD>慮蛟吝夂恚謌大<EFBFBD>逵シ蜷暦シ溷<EFBFBD>辟カ蟆丞ァ占ッエ謗荳区擂逧<EFBFBD>ッ丈クェ蝨隸槫<EFBFBD>柱螟ァ螳カ荳€襍キ霑<EFBFBD>€<EFBFBD>荳咲衍驕灘ァ螳カ謖<EFBFBD>頭莠帑ココ縲ょス蟶梧悍霑吩クェ髮<EFBFBD>粋閭ス螟溷ッケ謌大€閭槫裾縲ら賢迪ォ霑伜惠螳ウ諤募<EFBFBD>辟カ蟆丞ァ舌€<EFBFBD>莨壼悉謚雁ケ辷ア逧<EFBFBD>賢迪ォ蠑墓擂逧<EFBFBD>€<EFBFBD>驕鍋ィ肴怏荳肴<EFBFBD><EFBFBD><EFBFBD>蟆ア莨夊速霄ォ迪ォ蜿縲るぅ譌カ蛟吝<EFBFBD>辟カ蟆丞ァ仙ァ讎ゆシ壽滑謌醍噪霄ォ菴灘ス螂ス蝨ー陬<EFBFBD>オキ譚謇泌芦髣ィ螟門制縲るぅ謌大ーア謌蝉コ<EFBFBD>€<EFBFBD><EFBFBD><EFBFBD>悟仆蝌サ縲よ<EFBFBD>蟶梧悍螂ケ閭ス謚頑<EFBFBD>謇泌セ苓ソ台ク€轤ケ<EFBFBD>悟屏荳コ謌題ソ俶弍螂ス蝟懈ャ螂ケ縲ゆシ壻ク€逶エ蝟懈ャ荳句悉逧<EFBFBD>€<EFBFBD><EFBFBD><EFBFBD>鬲る€剰ソ<EFBFBD>ェ玲姐蜷鷹逵句悉<EFBFBD>梧撃逹€<EFBFBD>塔體帛惠霓サ霓サ鮑蜩搾シ悟<EFBFBD>辟カ蟆丞ァ先<EFBFBD>諛貞慍髱<EFBFBD>蝨ィ豐吝書荳奇シ瑚ィ貍泌セ鈴撼蟶ク貂ゥ鬘コ逧<EFBFBD>ゥ倡賢蝮仙惠螂ケ逧<EFBFBD>か閹€縲ょi逧<EFBFBD>蜈臥<EFBFBD>蝨ィ螂ケ逧<EFBFBD>蠎橸シ梧<EFBFBD>蜀サ蜒オ逧<EFBFBD>ソ<EFBFBD>э蝨ィ鬟朱蠕ョ蠕ョ蜿醍Ν縲<EFBFBD>
€繝翫繧薙<EFBFBD>迥ャ縺ォ縺ェ繧翫<EFBFBD>.縺代€€繝翫繧薙縲檎賢縺悟ス縺阪€€縺溘€€縺ゅ繧翫蜒輔<EFBFBD><EFBFBD>縺励<EFBFBD>.迪ォ縺ァ繧ら堪縺ァ繧ゅ<EFBFBD>ヵ縺後€€菴墓腐豕<EFBFBD>縺ョ縺九€蜒輔<EFBFBD>縺ヲ縺<EFBFBD>.菴墓腐縺ェ繧峨€€蜒輔<EFBFBD><EFBFBD><EFBFBD>縺溘°繧峨<EFBFBD><EFBFBD>..€蠎ヲ繧ゅム繧繝翫繧薙螂ス縺九l繧九縺ィ繧呈悍縺セ縺ェ縺後縺溘€€.蜒輔<EFBFBD>繧上縺ヲ縺<EFBFBD>€隱ー繧ゅ°繧ら炊隗菴呵穂ク頑焔螟ゥ謇阪<EFBFBD>蜿ッ諢帙驥第戟縺縺ョ迥ャ縺狗賢縺後縺阪縺ヲ縺薙<EFBFBD>.髯ー繧ュ繝縺ァ豎壹i繧上<EFBFBD>縺ッ隱ー繧ょス縺九s縺ョ縺<EFBFBD>..縺昴l縺ァ繧<EFBFBD>iana縺輔縺ォ閨槭縺ヲ縺ソ縺滂シ咼iana縺輔縺ョ迥ャ縺ォ縺ェ縺縺ヲ繧り憶縺<EFBFBD>縺吶°縺ィ.蜒輔縺ッ荳€逕溽堪縺ォ縺ェ繧後<EFBFBD>縺ィ縺ッ蛻<EFBFBD>°縺ヲ縺<EFBFBD>.縺ァ繧ゅb縺怜スシ螂ウ縺ッ迥ャ縺悟ス縺阪縺溘i縲€蜒輔<EFBFBD>縺壹縺ィ蛯阪隕九<EFBFBD>i繧後k.縺昴l縺ッ縺<EFBFBD>繧る<EFBFBD>縺ャ繧偵<EFBFBD>縺ヲ縺<EFBFBD>k縺ィ縺励<EFBFBD>..縺代l縺ゥ蠖シ螂ウ縺ッ迪ォ縺悟ス縺阪<EFBFBD>.蠖シ螂ウ縺ッ莉翫繧ょヵ繧定ヲ九<EFBFBD>k縲€縺シ縺上r讌ス縺励縺帙縺上l繧九€€縺昴l縺ッ迪ォ縺後<EFBFBD>陦ィ繧後<EFBFBD><EFBFBD>°<EFBFBD>.縺溘縺薙<EFBFBD><EFBFBD>縺梧ッ取律縺薙縺薙縺ィ遨エ縺九i蜃コ縺ヲ縲€<EFBFBD>縺上°繧臥岼繧貞粋縺縺ヲ縺<EFBFBD>.蠖シ螂ウ縺ョ螂ス縺阪迪ォ縺檎樟繧後繧峨€€蜒輔<EFBFBD>遨エ縺ォ謌サ繧九縺九<EFBFBD>..縺ァ繧ゅd縺縺ア繧雁スシ螂ウ縺悟ス縺阪<EFBFBD>i繧後<EFBFBD>€€蜒輔縺セ縺<EFBFBD>蛯阪<EFBFBD>k縺ィ縺阪繧峨€繧ゅ<EFBFBD>縺ソ縺ヲ縺上l繧九<EFBFBD>縺九.Diana縺輔縺後繧後°繧画ッ主屓縺ョ繧ッ繝ェ繧ケ繝槭せ縺ソ繧薙縺ィ荳€邱偵驕弱縺吶€縺溘€€縺ソ繧薙縺後縺ョ貂繧翫<EFBFBD>縺ソ繧薙縺九.蜒輔繧ゆクュ縺ォ蜈繧後繧後<EFBFBD>..迪ォ縺ッ縺セ縺<EFBFBD>縺セ縺<EFBFBD>Diana縺輔繧呈€縺ヲ縺<EFBFBD>.蜒輔蠖シ螂ウ縺ョ諢帙繧狗賢繧貞シ輔莉倥繧九h.蟆代縺ョ繝溘せ縺ァ迪ォ縺ョ蜿縺ォ豁サ縺ャ縺薙縺ッ繧上縺ヲ縺<EFBFBD>.縺昴<EFBFBD>譎ゅ縺ェ繧九縺溘<EFBFBD>繧泥iana縺輔縺ッ蜒輔<EFBFBD>菴薙r縺<EFBFBD>s縺ィ蛹<EFBFBD>霎シ繧薙€<EFBFBD>未螟悶謐ィ縺ヲ繧九縺励g.縺昴l縺ァ蜒輔<EFBFBD>繝輔Λ繧繝磯シ<EFBFBD>縺ォ縺ェ縺縺溘€€縺上.蠖シ螂ウ縺ォ蟆代霑代謐ィ縺ヲ縺ヲ縺サ縺励縺ェ縲€<EFBFBD>縺ヲ繧<EFBFBD>縺ア繧雁ス縺阪縺九i縲€縺昴l縺壹縺ィ螂ス縺阪<EFBFBD>..蜒輔<EFBFBD>縺溘縺励<EFBFBD>遯薙r雜翫縺ヲ荳ュ繧定ヲ九k縲€蜷翫縺ヲ縺<EFBFBD>k驤エ縺悟ー代髻ソ縺縺ヲ.Diana縺輔縺ッ縺<EFBFBD>繧峨j縺ィ繧ス繝輔ぃ繝シ縺ォ蟇<EFBFBD>j縺九°縺ヲ縲€謇区<EFBFBD>繧後<EFBFBD>k縺オ繧翫r縺吶k讖倡賢縺悟スシ螂ウ縺ョ閧ゥ縺ォ蠎ァ縺縺ヲ.證也i縺ョ蜈峨蠖シ螂ウ縺ョ鬘斐r辣ァ繧峨縺溘€€蜃阪j莉倥縺溷ヵ縺ョ蠢<EFBFBD>縺ッ縺九縺ョ荳ュ縺ァ辭ア縺上縺ヲ縺<EFBFBD>
<EFBFBD>譫晄ア溷ー城芙譁ー譚<EFBFBD>€菴堺ソョ螂ウ<EFBFBD>悟埋濶ッ貂ゥ譟皮噪菫ョ螂ウ縲ょケ荳咲鯵隶イ隸晢シ悟宵譏ッ蠕ョ隨醍捩髱蟇ケ豈丈ク€荳ェ蟇ケ螂ケ逾キ蜻顔噪莠コ縲よ怏逧<EFBFBD>ココ蟶梧悍蟄ゥ蟄仙蠎キ<EFBFBD>梧怏逧<EFBFBD>ココ蟶梧悍蠎<EFBFBD>ィシ辭ャ霑<EFBFBD><EFBFBD>螟ゥ<EFBFBD>梧怏逧<EFBFBD>ココ蟶梧悍閭ス謖蛻ー髓ア蜈サ豢サ螳カ莠コ縲ゅ€€€ケ驛ス逕ィ蠢<EFBFBD>成逹€<EFBFBD>悟セョ隨醍噪蝗槫コ皮捩縲ょケ霄ォ譚千洌蟆擾シ御ス<EFBFBD>弍蜊エ隶ゥ莠コ隗牙セ怜<EFBFBD>譎コ諷ァ<EFBFBD>ケ豐蛾サ伜ッ€<EFBFBD>御ス<EFBFBD>弍蜊エ莨夊ョゥ莠コ譌<EFBFBD>豈比ソ襍悶€りソ呎弍螂ケ莉サ閨悟ソォ貊€荳ェ譛育噪譌カ蛟呻シ梧蕗蝣ょ書逕滉コ<EFBFBD>ァ莠具シ御ク€荳ェ驢画ア牙書邇ー逾櫁莠コ蜻伜茜逕ィ謨吝<EFBFBD>ょ惠豺ア螟懆ソ幄ァ謇ケ襍<EFBFBD><EFBFBD><EFBFBD><EFBFBD>豎我シ<EFBFBD><EFBFBD>樔ケ主<EFBFBD>逾橸シ御ク我ココ謌占剋譛€扈亥シ戊オキ螳螳伜燕譚<EFBFBD>衍縲よ蕗荳サ陲ォ蟶ヲ襍ー<EFBFBD>梧蕗蝣る勁莠<EFBFBD>ぅ菴崎賢辟カ逧<EFBFBD>眠譚菫ョ螂ウ蜈カ莉紋ココ荳€<EFBFBD>€梧淵縲ゆソョ螂ウ陲ォ霑ォ謇ソ諡<EFBFBD>捩譛ャ荳榊コ碑ッ螻樔コ主ケ逧<EFBFBD>髫セ<EFBFBD>瑚セア鬪ゑシ御ス<EFBFBD>弍螂ケ豈丞ゥ驛ス隶逵溽噪蜷台クサ逾キ蜻奇シ悟€セ蜷ャ譚謨吝<EFBFBD>ゆケ倶ココ逧<EFBFBD>€セ隸峨€ょ庄譏ッ譬ケ譛ャ豐譛我ココ蜷大ケ蛟セ隸会シ梧擂逧<EFBFBD>ココ荳肴弍蝨ィ鬪ょ<EFBFBD>悟ーア譏ッ蝨ィ蜿第ウ<EFBFBD>函豢サ逧<EFBFBD>ク肴サ縲ょケ荳€蟾ア荵句鴨諡シ蜻ス謇ソ諡<EFBFBD>シ梧イ莠コ遏驕捺弍莉€荵井スソ螂ケ螯よュ蝮壽戟縲ら峩蛻ー螳螳伜クヲ蝗樔コ<EFBFBD>蕗荳サ<EFBFBD>悟相隸蛾芙豌鷹ぅ譏ッ謨吩クサ蝨ィ荳ュ螟ョ荳サ謨咎ぅ驥悟セ怜芦逧<EFBFBD>シ檎岼逧<EFBFBD>弍荳コ髟<EFBFBD>ー醍<EFBFBD><EFBFBD><EFBFBD>螟ゥ謇€€ケー邊ョ鬟溽噪髓ア雍縲ゆク€譌カ髣エ髟<EFBFBD>ー第ャ蜻シ襍キ謨吩クサ<EFBFBD>荳サ逧<EFBFBD><EFBFBD><EFBFBD>梧峩螟夂噪莠コ蠑€蟋区峩蜉<EFBFBD>辷ア荳贋コ<EFBFBD>ぅ荳ェ菫ョ螂ウ縲よ怏逧<EFBFBD>ココ謚雁ケ豈比ス懃寺蛻ゥ莠夲シ梧怏莠帑ココ謚雁ケ螂我クコ逾樊<EFBFBD><EFBFBD>ケ驛ス荳€€諡堤サ昜コ<EFBFBD>€らサ<EFBFBD>ソ<EFBFBD>噪髟<EFBFBD>ー台シ壼書邇ー霑吩ス堺ソョ螂ウ蜿倅コ<EFBFBD>シ悟序蠕苓ッ晏夊オキ譚<EFBFBD>シ御ケ溷序蠕玲峩蝟懈ャ<EFBFBD>惠謨吝<EFBFBD><EFBFBD>シ御ケ溷序蠕礼ヲサ髟<EFBFBD>ー題キ晉ヲサ譖エ霑應コ<EFBFBD>€ゆク€<EFBFBD>ス蜒丞処蜿伜屓蜴滓擂蟷ウ蜥檎噪蟆城芙<EFBFBD>梧ッ丈クェ蟇ケ菫ョ螂ウ逧<EFBFBD>刈螳ウ閠<EFBFBD>ッ丞ゥ蠕ョ隨醍捩蜷大セョ隨醍捩逧<EFBFBD>ソョ螂ウ謇捺魚蜻シ<EFBFBD>梧ッ丈クェ髟<EFBFBD>ー題ソ俶弍莨壼悉謨吝<EFBFBD><EFBFBD>悟悉蛟セ隸会シ悟悉蜷台ク€荳ェ蜴滓擂陲ォ莉紋サャ莠イ謇玖セア鬪ら噪莠コ逾キ蜻奇シ悟ク梧悍蠕怜芦荳サ逧<EFBFBD><EFBFBD>辣ァ<EFBFBD>悟桁諡ャ驍荳ェ驢画ア峨€よイ莠コ閭ス諠ゥ鄂夐ぅ莠幃芙豌托シ悟セ亥壻ココ驛ス蟾イ扈鞘€懷ソ倩ョー窶晏ス灘<EFBFBD>荳コ莉€荵郁ヲ<EFBFBD>ぅ譬キ蛛夲シ悟桁諡ャ驍荳ェ驢画ア会シ悟宵蜑ゥ荳倶ク€荳ェ扈丞クク螳<EFBFBD>惠謨吝<EFBFBD><EFBFBD>ソョ螂ウ<EFBFBD>ケ蟋狗サ郁ョー蠕嶺ク€<EFBFBD>€<EFBFBD>
雍晄級霄コ蝨ィ逞<EFBFBD>コ贋ク奇シ檎愍逾樒ゥコ遨コ蝨ー逶ッ逹€螟ゥ闃ア譚ソ<EFBFBD><EFBFBD>逋ス譎ヲ證礼噪螟ゥ闃ア譚ソ蜒丈ク€蝮怜嶋蜩磯復<EFBFBD>梧億譖イ謗牙夜擇逧<EFBFBD>€<EFBFBD>シ悟<EFBFBD>蜿俶<EFBFBD><EFBFBD><EFBFBD>壼スゥ蜿俶<EFBFBD>闍咲區<EFBFBD>瑚ァゆシ怜序謌仙現逕滂シ瑚<EFBFBD>蜿ー蜻<EFBFBD>悟序謌蝉コ<EFBFBD>€譁ケ蟆丞ー冗噪逞<EFBFBD>袷縲ょケ鄙サ莠<EFBFBD>クェ霄ォ<EFBFBD><EFBFBD>驛ィ莨<EFBFBD>迪帷ヨ蝨ー逍シ逞幢シ悟ケ菴惹ス主慍蜩シ莠<EFBFBD>€螢ー縲ょケ蟾イ扈丞シ€蟋倶ケ<EFBFBD>諠ッ霑咏ァ咲名逞帑コ<EFBFBD>シ悟ーア蜒丞ケ荵<EFBFBD>諠ッ荳咲ゥソ闃ュ阨セ闊櫁吩ク€譬キ<EFBFBD>ケ髣ュ荳顔愍逹幢シ梧滑閾ェ蟾ア蝓玖ソ幃サ第囓驥鯉シ御ク榊悉諠ウ縲る葎陲ォ謗ィ蠑€<EFBFBD>シ梧リ驢剃コ<EFBFBD>シシ譴ヲ髱樊ヲ逧<EFBFBD>ケ縲ょ現逕滓侃螢ォ蜿域擂譟謌ソ<EFBFBD>檎宛豈榊柱蠑溷シ滉サャ霍溷惠蜷朱擇<EFBFBD>帛現逕滄琉莠<EFBFBD>コ幃琉鬚伜錘襍ー莠<EFBFBD>シ梧ッ堺コイ謠€螂ケ逧<EFBFBD><EFBFBD>梧悃螂ケ隸エ逹€隸晏<EFBFBD><EFBFBD>檎宛莠イ螳蛾撕蝨ー蝮仙惠譌セケ<EFBFBD><EFBFBD>隶ュ扈<EFBFBD>ョ檎噪蠑溷シ溷エ荳願ソ伜<EFBFBD>€豎暦シ梧漢逹€蝌エ蜚<EFBFBD>悍逹€螂ケ縲よッ堺コイ蠖捺慮隸エ逧<EFBFBD>€荵亥ケ蟾イ扈丞ソ倅コ<EFBFBD>シ悟宵隶ー蠕玲怙蜷守ヲサ蠑€<EFBFBD>慮蛟呻シ檎宛莠イ襍ー蝨ィ譛€蜷趣シ悟屓譛帑コ<EFBFBD>ケ荳€逵シ<EFBFBD>蜷主ー丞ソ<EFBFBD>慍蜈ウ荳企葎<EFBFBD>御サ€鬮伜ァ逧<EFBFBD>レ蠖ア遶溽譏セ蠕玲怏莠幄制邏縲ゆココ驛ス襍ー螳悟錘<EFBFBD>梧慮髣エ蝨ィ豐蛾サ倡噪逞<EFBFBD>袷驥梧オ<EFBFBD>€晢シ悟ーア蜒乗イ呎シ城<EFBFBD>イ吝ュ撰シ悟ケ逧<EFBFBD>ぅ莠帷Ο諠<EFBFBD>€<EFBFBD>ぅ莠帶<EFBFBD>諞ャ驛ス謗我コ<EFBFBD>ソ帛悉縲り姦阨セ闊槫屬逧<EFBFBD>ュヲ蜻俶歓遨コ譚逵句<EFBFBD>ケ蜍牙シコ蝨ィ逞<EFBFBD>コ贋ク雁攝襍キ<EFBFBD>悟成驍莠幄<EFBFBD>閭檎ャ皮峩縲ー碑エィ莨倬寉逧<EFBFBD>恚蜿区干諤ィ荳譬シ逧<EFBFBD>慍迢ア邂螳カ蟀<EFBFBD>シ梧干諤ィ荳倶ク€蝨コ貍泌<EFBFBD>蜿郁ヲ擂莠<EFBFBD>€ケ螳蛾撕蝨ー蜷ャ逹€<EFBFBD>悟攝蝨ィ逞<EFBFBD>コ贋ク頑研蜃コ荳ェ隨題<EFBFBD><EFBFBD>蟆泌<EFBFBD>螢ー髯<EFBFBD>柱蜃<EFBFBD>縲ゆス<EFBFBD>ョ樣刔荳雁ケ蟾イ扈乗薯荳崎ソ幄ッ晞倅コ<EFBFBD>シ御シ倬寉逧<EFBFBD>區螟ゥ鮖<EFBFBD>ア慕ソ<EFBFBD>ォ倬橸シ碁槫髄貂ゥ證也噪譏螟ゥ<EFBFBD>梧滑蜿嶺シ<EFBFBD>ク大ー城クュ逡吝惠蜀ャ蟄驥後€よ恚蜿玖オー蜷主ケ扈ァ扈ュ蝮仙惠蠎贋ク奇シ檎岷逹€遯怜厄シ悟夜擇逧<EFBFBD>ゥ豌泌セ亥<EFBFBD>樊惻逧<EFBFBD>ーセ霑ケ遨ソ霑<EFBFBD>サオ霓ッ逧<EFBFBD>コ大屬<EFBFBD>檎區濶イ逧<EFBFBD>ク溷<EFBFBD><EFBFBD><EFBFBD>€<EFBFBD>ヲよエ礼噪螟ゥ遨コ<EFBFBD>ケ荳区э隸<EFBFBD>慍蛛壻コ<EFBFBD>クェ螻戊<EFBFBD>勘菴懶シ悟ワ螟ゥ鮖<EFBFBD>€譬キ莨倬寉縲ょセ育セ趣シ悟処蠕育洒證ゅ€るク溷<EFBFBD>鬟槫<EFBFBD><EFBFBD>ェ玲姐逧<EFBFBD>婿蟇ク荵句慍<EFBFBD>ケ逵倶ク榊芦莠<EFBFBD>€ケ謐ら捩蛻コ逞帷噪閻ー<EFBFBD>ス逞帛操<EFBFBD>檎李蠕苓ョゥ莠コ諠ウ隕働蜃コ螢ー縲よイ吝ュ占ケ謖溽捩螂ケ逧<EFBFBD>ヲ諠ウ<EFBFBD>梧脂霑帑コ<EFBFBD>イ呎シ冗噪荳倶ク€螻ゑシ悟<EFBFBD>荵滓今荳榊屓譚<EFBFBD>€ゆク荳ェ譛亥錘雍晄級蜃コ髯<EFBFBD>悟屓蛻ー莠<EFBFBD><EFBFBD>謔臥噪螳カ驥鯉シ梧ッ堺コイ菴楢エエ蝨ー謚願<EFBFBD>陬呵ソ俶怏驍莠帛ァ蟶育コァ逧<EFBFBD>姦阨セ貍泌<EFBFBD>蠖募ワ驛ス阯剰ソ帑コ<EFBFBD>慍荳句ョ<EFBFBD>ァ定誠<EFBFBD>御ク榊<EFBFBD>諢丞紋シ壼ワ螟ァ螟壽焚莠コ莉荳コ閭ス蝮壽戟逧<EFBFBD>ヲ諠ウ驍譬キ<EFBFBD><EFBFBD>遘ッ貊轣ー蟆假シ梧怙蜷手ォ謔<EFBFBD>d驕怜ソ倥€譏惹ココ莨壼惠蛛カ蟆疲Φ襍キ譚<EFBFBD>慮蛟呻シ檎サ呵<EFBFBD>蟾ア謇セ荳ェ蜿ー髦カ<EFBFBD><EFBFBD>蝌イ蝨ー隨醍ャ托シ壺€懷嶋<EFBFBD><EFBFBD>蜑崎ソ俶怏霑咏ァ榊ヲ<EFBFBD>Φ蝠翫€€晁エ晄級蠑€蟋句ュヲ謦ュ髻ウ<EFBFBD>悟シ€蟋玖オー蜿ヲ荳€霍ッ<EFBFBD>ケ豐諠ウ霑<EFBFBD>唆荳榊セ嶺ク崎オー逧<EFBFBD>霍ッ縲りソ吩ケ溷セ亥<EFBFBD>ス豁ケ譛芽キッ蜿ッ襍ー<EFBFBD>御ス<EFBFBD><EFBFBD>蟆泌成蛻ー闊樊峇逧<EFBFBD>慮蛟呻シ梧恚蜿倶シ夐琉螂ケ<EFBFBD>€應ス<EFBFBD>蝨ィ譎<EFBFBD>€荵亥賦<EFBFBD>€ケ蝗櫁ソ<EFBFBD>樊擂<EFBFBD>檎ャ台コ<EFBFBD>ャ代€€懈エサ蜉ィ豢サ蜉ィ霄ォ菴楢€悟キイ縲や€<EFBFBD> 陌ス辟カ譛臥せ荳咲曝蠢<EFBFBD>シ御ス<EFBFBD>女莨譏ッ豐蜉樊ウ慕噪莠区ュ蝌帙€りッ謾セ荳倶コ<EFBFBD>シ梧叛蠑<EFBFBD>Φ襍ー逧<EFBFBD>キッ<EFBFBD>€悟悉襍ー譖エ遞ウ螯<EFBFBD>コ碑ッ襍ー逧<EFBFBD>キッ<EFBFBD>ァ驛ィ蛻<EFBFBD>譏惹ココ驛ス譏ッ霑呎<EFBFBD>キ蛛夂噪縲よ<EFBFBD>蜿ッ譏ッ螟ァ閨ェ譏主造<EFBFBD>€<EFBFBD>
蟆丞ァ仙万谺€譛牙勘迚ゥ<EFBFBD>御ス<EFBFBD>万谺荵溷<EFBFBD>荳牙<EFBFBD>荵晉ュ会シ帷ョ螳カ隶ィ蜴梧園譛牙勘迚ゥ<EFBFBD>御ス<EFBFBD>ョィ蜴御ケ溷<EFBFBD>荳牙<EFBFBD>荵晉ュ峨€ょー丞ァ先怙蝟懈ャ迪ォ<EFBFBD>御ス<EFBFBD>ケ逧<EFBFBD>ァゆシ玲弍荳€<EFBFBD><EFBFBD><EFBFBD>帷ョ螳カ譛€隶ィ蜴瑚€<EFBFBD><EFBFBD><EFBFBD>御ス<EFBFBD>ー丞ァ千噪隗ゆシ玲イ譛我ク€蜿ェ迪ォ縲ゆコ取弍<EFBFBD>檎ョ螳カ扈呎園譛臥噪閠<EFBFBD><EFBFBD>蟶ヲ荳贋コ<EFBFBD>擇蜈キ蟆丞ァ仙シ€蟋倶コ<EFBFBD><EFBFBD>陦ィ貍費シ瑚€<EFBFBD><EFBFBD>莉ャ荳咲衍謇€謗ェ<EFBFBD>梧Φ隕<EFBFBD>螟肴Ρ蟶ク逧<EFBFBD>コキ謇ー縲ゆス<EFBFBD><EFBFBD>サャ逵玖ァー丞ァ占<EFBFBD>蟋ソ鄙ゥ鄙ゥ<EFBFBD>御ク€莠幄€<EFBFBD><EFBFBD>諠ウ蜃コ螢ー襍槫昌<EFBFBD>帑ス<EFBFBD><EFBFBD>サャ逵玖ァー丞ァ千怏逶ョ螯ら判<EFBFBD>御ク€莠幄€<EFBFBD><EFBFBD>遶滉クコ螂ケ豐蛾<EFBFBD><EFBFBD>帑ス<EFBFBD><EFBFBD>サャ逵玖ァー丞ァ千悄諠<EFBFBD><EFBFBD><EFBFBD>御ク€莠幄€<EFBFBD><EFBFBD>荵滉シ€關ス豕ェ縲ょョ<EFBFBD>サャ荳肴Φ隶ゥ蟆丞ァ仙ア譛幢シ御コ取弍螳<EFBFBD>サャ蟄ヲ襍キ迪ォ蜿ォ縲ょー丞ァ仙セ亥シ€<EFBFBD>シ悟ケ逧<EFBFBD>ァゆシ鈴譛臥賢莠<EFBFBD>€ケ蝟懈ャ<EFBFBD>賢莉ャ<EFBFBD>御ケ溷万谺螂ケ縲ょ<EFBFBD><EFBFBD>噪髣ィ蠎ュ驟堺ク堺ク雁ー丞ァ千噪鄒惹クス<EFBFBD>御コ取弍閠<EFBFBD><EFBFBD>諠ウ蜴サ蟶ヲ譚譖エ螟夂噪迪ォ縲り€<EFBFBD><EFBFBD>莉ャ蠑墓擂莠<EFBFBD><EFBFBD>御ケ溷シ墓擂莠<EFBFBD>峩螟夂噪閠<EFBFBD><EFBFBD>縲よ眠逧<EFBFBD>€<EFBFBD><EFBFBD>荳榊ェ隗<EFBFBD><EFBFBD>御ス<EFBFBD>眠譚<EFBFBD>賢遑ョ螳樊弍迪ォ縲ょー丞ァ先怏莠帛峅謇ー<EFBFBD>御ス<EFBFBD>ケ霑俶弍謗郤ウ莠<EFBFBD><EFBFBD>サャ<EFBFBD>悟ー丞ァ仙万谺€譛牙勘迚ゥ<EFBFBD>悟叉菴ソ閾ェ蟾ア莨壼峅謇ー縲ゆス<EFBFBD>錘譚<EFBFBD>檎ョ螳カ蜥悟ー丞ァ撰シ悟宵豕ィ隗<EFBFBD>捩迪ォ<EFBFBD>悟ソ伜唆莠<EFBFBD>€<EFBFBD><EFBFBD><EFBFBD>コ区ュ縲ゆケ溷ッケ<EFBFBD>梧ッ慕ォ溯€<EFBFBD><EFBFBD>蠖灘<EFBFBD>蟶ヲ逹€諱カ諢剰ュ譚<EFBFBD>檎鴫蝨ィ逧<EFBFBD>擇蜈キ諤サ譏ッ閼ア謗牙処蟶ヲ荳頑擂縲らョ螳カ蛛壻コ<EFBFBD>€莠帑コ区ュ遏驕謎ク主凄蜥悟酔諢丈ク主凄<EFBFBD>悟惠蟆丞ァ占ソ咎譛牙屁遘咲サ<EFBFBD>粋逧<EFBFBD>婿豕輔€ゆス<EFBFBD>€莠帶崟扈乗弍迪ォ逧<EFBFBD>€<EFBFBD><EFBFBD>隗牙ッ溷<EFBFBD>蠑よ<EFBFBD>キ縲ょクク蟷エ蝨ィ荳区ーエ驕鍋函豢サ<EFBFBD>悟ョ<EFBFBD>サャ蟇ケ霑呎<EFBFBD>キ逧<EFBFBD>ー泌袖蠑ょクク謨乗縲ゆコ取弍<EFBFBD>悟ョ<EFBFBD>サャ鞫倅ク倶コ<EFBFBD>擇蜈キ<EFBFBD>悟髄邂螳カ隶ィ荳ェ隸エ豕穂ス<EFBFBD><EFBFBD>サャ豐<EFBFBD>シェ陬<EFBFBD>シ御ク区ーエ驕馴蜿醍噪閾ュ豌費シ瑚ョゥ邂螳カ譖エ蜉<EFBFBD>蜴梧<EFBFBD>縲ゆサ€荵磯<EFBFBD>譛画隼蜿伜<EFBFBD>蜷取擂<EFBFBD>悟ー丞ァ蝉セ晄立鄒惹クス<EFBFBD>御ス<EFBFBD>サ丞紙莠<EFBFBD>ック螟夂コキ謇ー<EFBFBD>御ク咲衍驕灘ー丞ァ千噪蠢ォ荵宣譏ッ蜷ヲ譛画ウェ逵シ謌仙曙縲ゆク€莠幄€<EFBFBD><EFBFBD>萓晄立蟶ヲ逹€迪ォ逧<EFBFBD>擇蜈キ<EFBFBD>悟ョ<EFBFBD>サャ譛€蜷惹ケ滉シ壼序謌千賢縲ゆス<EFBFBD>ソ吩シ夐柄荵<EFBFBD><EFBFBD><EFBFBD>隶ク荳堺シ壹€ょ嘗荳€莠幄€<EFBFBD><EFBFBD>€蝗樔コ<EFBFBD>ク区ーエ驕難シ檎ュ牙セ<EFBFBD><EFBFBD><EFBFBD>隶ク莨壽怏蜿ヲ荳€菴榊ー丞ァ撰シ悟万谺<EFBFBD><EFBFBD><EFBFBD>ー丞ァ舌€ょ悉蝟懈ャ螂ケ<EFBFBD>悟悉蝟懈ャ<EFBFBD>サャ縲よ<EFBFBD>隶ク莨壽怏蜷暦シ溷コ碑ッ譛牙制菴<EFBFBD>€<EFBFBD><EFBFBD>莉ャ豌ク霑懷ソ倅ク堺コ<EFBFBD>ぅ菴榊ー丞ァ撰シ碁ぅ菴榊万谺€譛牙勘迚ゥ<EFBFBD>御ス<EFBFBD>峩蝟懈ャ迪ォ逧<EFBFBD>ー丞ァ舌€€<EFBFBD>
辟カ辟カ<EFBFBD>辟カ<EFBFBD>瑚區辟カ謌醍衍驕灘ーア邂苓ソ呎<EFBFBD>キ蜻シ蜚<EFBFBD><EFBFBD>荵溷宵閭ス蝨ィ菴<EFBFBD>蜉ィ諤ク区婿<EFBFBD>檎ォ吩ス丈ク<EFBFBD>鴻隸<EFBFBD>ョコ蛹コ逧<EFBFBD>€讌シ縲ゆス<EFBFBD><EFBFBD>ィ貍費シ御ス<EFBFBD><EFBFBD>勘諤<EFBFBD>シ御ス<EFBFBD><EFBFBD><EFBFBD><EFBFBD>....驛ス譏ッ隸エ扈呎<EFBFBD>莉ャ螟ァ螳カ逧<EFBFBD>シ梧弍謌台サャ.....閠梧<EFBFBD>...謌第崟扈丈サ荳コ菴<EFBFBD>遖サ謌大セ郁ソ代€りソ大芦豈乗ャ謇灘シ€謇区惻蜷<EFBFBD>ァ崎ァ<EFBFBD>題スッ莉カ<EFBFBD>ァ謨ー謐ョ謗ィ騾噪驛ス譏ッ菴<EFBFBD>縲りソ大芦豈乗ャ蜿大漕謇セ荳榊芦蜑崎ソ帶婿蜷醍噪譌カ蛟呻シ檎恚逧<EFBFBD><EFBFBD>譏ッ菴<EFBFBD><EFBFBD><EFBFBD>€りソ大芦豈乗ャ蜥悟悪莠コ閨雁ゥ逧<EFBFBD>慮蛟呻シ碁<EFBFBD>莨壼刈荳贋ス<EFBFBD>扈丞クク隸エ逧<EFBFBD>哨螟エ遖<EFBFBD>シ梧噺蛻ー謾カ蛻ー謾カ蛻ー<EFBFBD>悟庄辷ア謐擾ス橸ス樞€ヲ菴<EFBFBD>譌カ蟶ク髯ェ莨エ謌題コォ霎ケ<EFBFBD>梧裏隶コ謌第ご莨霑俶弍谺蝟懶シ檎サ晄悍霑俶弍諠ャ諢擾シ御ス<EFBFBD><EFBFBD>峩謦ュ髣エ<EFBFBD>瑚ッ<EFBFBD>ョコ蛹コ驛ス譏ッ謌大庄莉<EFBFBD>э螳<EFBFBD><EFBFBD>噪蝨ー譁ケ縲ょ屏荳コ蝨ィ霑咎<EFBFBD><EFBFBD><EFBFBD>ササ菴募書險€驛ス蜿ェ譏ッ貍<EFBFBD>サ大懃ゥコ荳ュ蠕ョ蠑ア髣ェ閠€<EFBFBD>€轤ケ<EFBFBD>瑚ソ呎<EFBFBD>キ逧<EFBFBD>€轤ケ轤ケ譏溷<EFBFBD><EFBFBD>ュ伜惠<EFBFBD><EFBFBD>驕鍋噪<EFBFBD>梧弍荳コ莠<EFBFBD>サ吝ゥ遨コ荳ュ閠€逵シ蝨<EFBFBD>怦陬呎漕陬<EFBFBD>ー逧<EFBFBD>€轤ケ轤ケ遒朱捗縲るぅ謌大万谺辟カ辟カ<EFBFBD>ゥ螟ゥ譚逵狗辟カ<EFBFBD>悟ッケ莠手<EFBFBD>蟾ア<EFBFBD>檎ゥカ遶滓弍荳コ莠<EFBFBD>€荵遺€.髫セ驕捺<EFBFBD><EFBFBD>函豢サ逵溽噪辜ゑシ瑚ソ樔サ<EFBFBD>怏逧<EFBFBD>€莠帛<EFBFBD>€<EFBFBD><EFBFBD>サ惹ク€荳ェ陌壽供蛛カ蜒剰コォ荳願執蜿門芦蜷暦シ滄埓驕捺<EFBFBD><EFBFBD>鴫螳樒函豢サ<EFBFBD>瑚ソ樔ク€荳ェ蜈ウ蠢<EFBFBD><EFBFBD>螳カ莠コ驛ス豐譛牙雛<EFBFBD>瑚ソ倩ヲ惠鄂台ク雁ッサ謇セ螳カ逧<EFBFBD>隗会シ滄埓驕<EFBFBD>...霑吩コ幃<EFBFBD><EFBFBD>譌ゥ蟆ア譏守區莠<EFBFBD>シ瑚ッエ譛崎<EFBFBD>蟾ア荵溯ッエ閻サ莠<EFBFBD>シ御ス<EFBFBD>€逶エ驛ス譏ッ莠台ク贋ケ倶ココ<EFBFBD>€<EFBFBD>蜿ェ譏ッ荳€荳ェ謇帑ク堺ス丞視蜉幢シ悟惠陌壽供逧<EFBFBD>ク也阜荳ュ蟇サ謇セ螳画<EFBFBD><EFBFBD>誠鬲<EFBFBD>ケ倶ココ縲よ<EFBFBD>諛ゑシ梧<EFBFBD>譏守區逧<EFBFBD>シ梧<EFBFBD>驕鍋噪....€<EFBFBD><EFBFBD>辟カ蟆丞ァ撰シ梧<EFBFBD>荳崎<EFBFBD>譛我ス<EFBFBD><EFBFBD><EFBFBD>荳堺シ夂ヲサ蠑€<EFBFBD><EFBFBD>€ゆス<EFBFBD>荵滓弍<EFBFBD>梧ーク霑應ク崎ヲヲサ蠑€闊槫床<EFBFBD>梧叛蠑<EFBFBD>蕎蟆ス蜈ィ蜉帚€..蟆ア邂礼衍驕謎ケ溯ョク荳堺シ壽怏蝗樣浹<EFBFBD>御ス<EFBFBD>荵滉ク崎ヲ譛晞略髣ェ逧<EFBFBD>弌蜈画硯謇句草窶ヲ窶ヲ[辷ア蠢ゾ
<EFBFBD>諠ウ諠ウ蝌臥譏ッ諤惹ケ域<EFBFBD>キ逧<EFBFBD>€荳ェ螂ウ蟄ゥ蟄舌€ケ貂ゥ譟泌庄莠コ諠<EFBFBD>膚鬮假シ御シ壽而蝨コ莨壽磁隸昜シ壼シ募ッシ蠑ケ蟷墓闃ょ擾シ梧恚蜿矩譛牙ケ霑吩ケ井ク€荳ェ莠コ蝨ィ閧ッ螳壽ッ乗ャ<EFBFBD>擇驛ス閭ス蠕亥シ€<EFBFBD>制縲ょケ辷ア鄂台ク雁<EFBFBD>豬ェ<EFBFBD><EFBFBD>譏守恚蛻ー蜷<EFBFBD>ァ崎ァ<EFBFBD>台シ壽怏轤ケ鮗サ<EFBFBD>御ス<EFBFBD>ソ俶弍荵先ュ荳咲夢逧<EFBFBD>惠b遶吝柱蜷<EFBFBD>クェ隶コ蝮帷恚逹€<EFBFBD>托シ悟ワ荳榊ワ驍莠帶怙諛ゆス<EFBFBD><EFBFBD>梧怙閭ス髯ェ莨エ菴<EFBFBD><EFBFBD>イ咎尓鄂大暑<EFBFBD>悟頭諤墓弍荳崎<EFBFBD>蜥悟ケ隗芦髱<EFBFBD>慮蛟呻シ悟<EFBFBD>蝨ィ鄂台ク願螟ゥ荳€螳壻ケ滉ク堺シ壽裏閨翫€ケ蝨ィ貂ゥ譟皮噪蜷梧慮蜿域怏轤ケ蟆丞搶<EFBFBD>悟万谺隸エ諤ェ隸晢シ悟万谺證玲嵩謳鍋噪蠑€霓ヲ<EFBFBD>梧Φ蠢<EFBFBD>ケ豈乗ャ蝨ィ莉€荵亥<EFBFBD>€ェ逧<EFBFBD>せ荳雁シ€螳瑚スヲ<EFBFBD>悟ーア莨壻シシ隨鷹撼隨醍噪萓ァ逹€螟エ逵句髄謌大制<EFBFBD>€<EFBFBD>蜿ェ髴€ク主ケ蟇ケ隗<EFBFBD>€荳具シ御ク荳ェ莠コ蟆ア閭ス鮟伜醍噪隨題オキ譚縲ょケ蠕井シ壽朝莠コ<EFBFBD>碁ぅ莠帛悄蜻ウ諠<EFBFBD>ッ晏惠螂ケ關<EFBFBD><EFBFBD>ー疲ー幃莨シ荵惹ケ溷序蠕玲<EFBFBD>シ螟紋サ莠コ蠢<EFBFBD><EFBFBD>悟ー蜈カ譏ッ螂ケ霑倅シ壼惠豈丈ク€荳ェ荳咲サ乗э髣エ遯隸エ蜃コ蜉ィ莠コ逧<EFBFBD>ッ晁ッュ<EFBFBD>瑚ョゥ菴<EFBFBD>蝨ィ螳悟<EFBFBD><EFBFBD><EFBFBD>噪諠<EFBFBD><EFBFBD>荳玖<EFBFBD>キウ縲ょ庄譏ッ螂ケ蜿亥セ郁ユ蟆擾シ檎ョ€€蜊募黒逧<EFBFBD>ー乗滑謌剰<EFBFBD>霑樒サュ萓<EFBFBD>逶怜ケ螂ス螟壽ャ<EFBFBD>ケ陲ォ蜷灘ョ碁ぅ蜑ッ豌泌<EFBFBD>蜀イ<EFBFBD>悟唆蜿域裏蜿ッ螂井ス穂ク肴覆遖サ謌大ェ霑懃噪譬キ蟄撰シ瑚け螳壽弍螟ゥ荳狗ャャ荳€蜿ッ辷ア蜷ァ縲よΦ諠ウ蝌臥譏ッ諤取<EFBFBD>キ逧<EFBFBD>€荳ェ螂ウ蟄ゥ蟄舌€ケ霄ォ譚仙ョ檎セ趣シ瑚蠎槫庄辷ア<EFBFBD>ー郤ソ莉莠コ豐蛾<EFBFBD><EFBFBD>梧裏蜿ッ謖大鉛逧<EFBFBD>セ惹クス縲ょケ遏荵ヲ霎セ逅<EFBFBD>シ悟埋隗莠コ諢擾シ梧クゥ譟皮Ο諠<EFBFBD>シ悟ケ譏ッ豈丈クェ螂ウ騾夊ョッ蠖墓ヲ荳ュ逧<EFBFBD>ぅ荳ェ蟋<EFBFBD> 縲ょ庄譏ッ螂ケ蜿井ク堺シ夂ヲサ菴<EFBFBD>蠕郁ソ懶シ悟ケ諛ゆス<EFBFBD><EFBFBD>暦シ悟ケ蝨ィ鄂台ク雁柱菴<EFBFBD>蜀イ霑<EFBFBD>酔荳€<EFBFBD>オェ<EFBFBD>ケ閭ス蜥御ス<EFBFBD>€襍キ謇捺クク謌擾シ瑚<EFBFBD>蜥御ス<EFBFBD>€襍キ逵狗セ主<EFBFBD><EFBFBD>隸エ驍莠帛ソ<EFBFBD><EFBFBD>荳榊ョ<EFBFBD>€ェ隸晢シ瑚<EFBFBD>蝨ィ譛€蜷磯€ら噪譌カ蛻サ謦ゥ蜉ィ菴<EFBFBD><EFBFBD>ソ<EFBFBD>シヲ縲ょケ譛我サ莠コ豐画ココ逧<EFBFBD>ケエ荳頑ー碑エィ<EFBFBD>悟処蜒乗弍莉莠コ荳崎<EFBFBD>隗画Φ隕揃謚<EFBFBD>庄辷ア螯ケ螯ケ<EFBFBD>悟庄譛画慮<EFBFBD>ケ蜿亥序謌蝉コ<EFBFBD>サ主ケシ蜆ソ蝗ュ蠑€蟋玖キ滉ス<EFBFBD>蜷檎少<EFBFBD>梧怙諛ゆス<EFBFBD><EFBFBD>ぅ荳ェ髱呈<EFBFBD>ォケ鬩ャ逧<EFBFBD>ウ蟄ゥ蟄舌€ケ蟆ア譏ッ蝌臥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>辟カ縲ょ<EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>シÅ洟<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>謌大<EFBFBD>螳樔ク€轤ケ荵滉ク榊万谺蝌臥蟆丞ァ舌€ょ屏荳コ蝌臥蟆丞ァ仙ーア蜒丞<EFBFBD>€譬キ<EFBFBD>碁略閠€<EFBFBD>悟絢逵シ<EFBFBD><EFBFBD>隶ィ蜴悟<EFBFBD>縲ょ屏荳コ隶ィ蜴悟<EFBFBD><EFBFBD>梧園莉謌第€サ譏ッ霄イ蝨ィ髦エ蜀キ貎ョ貉ソ逧<EFBFBD>ク区ーエ驕馴<EFBFBD>瑚ソ呎<EFBFBD>キ蟆ア荳堺シ夊ォ莉莠コ蜴梧<EFBFBD><EFBFBD><EFBFBD>闃堤逵シ逹帙€ょ宵譛牙憺龍<EFBFBD><EFBFBD>謇堺シ壻サ朱亢證玲スョ貉ソ逧<EFBFBD>ク区ーエ驕馴襍ー蜃コ譚<EFBFBD>懈劒譏ッ螳<EFBFBD>撕荳泌ョ蛾€ク逧<EFBFBD>シ御サ謌第蛻ー闊帝€€<EFBFBD>貍ォ譌<EFBFBD>逶ョ逧<EFBFBD>噪襍ー蝨ィ螟憺龍逧<EFBFBD>ー剰キッ荳奇シ瑚キッ譌噪霍ッ轣ッ豁蜿醍捩蠕ョ蠑ア逧<EFBFBD><EFBFBD><EFBFBD>梧怏蜃<EFBFBD>蜿ェ陋セ蟄先ュ荳肴妙逧<EFBFBD>髄逹€蜈画コ先苑蜴サ縲や€懃悄蛯サ縲や€<EFBFBD>霑呎<EFBFBD>キ諠ウ<EFBFBD><EFBFBD>譏主<EFBFBD>蜿ェ閭ス蟶ヲ譚蜊ア髯ゥ<EFBFBD>御クコ莉€荵郁ヲオェ雍ケ螳晁エオ逧<EFBFBD>函蜻ス蜴サ霑ス騾仙<EFBFBD>闃貞造<EFBFBD>溽恚逹€鬟櫁崟荳肴妙逧<EFBFBD>苑蜷題キッ轣ッ<EFBFBD><EFBFBD>荳咲衍荳コ菴墓Φ襍キ莠<EFBFBD><EFBFBD><EFBFBD>ぅ莠帛酔莨エ縲よ<EFBFBD>諠ウ襍キ莠<EFBFBD><EFBFBD>螟ゥ蜑搾シ梧怏荳€莠帑サ主夜擇蝗樊擂逧<EFBFBD>ョカ莨呻シ御サ紋サャ蜈エ螂狗噪蜻願ッ画<EFBFBD>螟夜擇譁ー蠑€<EFBFBD>€螳カ蜑ァ蝨コ<EFBFBD>譛我ク€荳ェ蜿ォ蝌臥<EFBFBD>ココ<EFBFBD>瑚ソ俶耳闕先<EFBFBD>€襍キ蜴サ逵狗恚縲ゆサ紋サャ逧<EFBFBD>愍逹幃髣ェ辜捩莠ョ譎カ譎カ逧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蠕郁ョィ蜴鯉シ御コ取弍萓ソ諡堤サ昜コ<EFBFBD>€ゆケ句錘莉紋サャ荵滓擂謇セ霑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>荵滓耳霎樔コ<EFBFBD>€ょ錘譚謌台セソ豐諤惹ケ郁ァソ<EFBFBD>サ紋サャ莠<EFBFBD>シ悟成隸エ荳コ莠<EFBFBD>級莠コ譚逵具シ御サ紋サャ譛臥噪諠ウ蜿俶<EFBFBD>迪ォ迢暦シ梧怏逧<EFBFBD>イソ陦苓エエ豬キ謚蜿ォ蜊厄シ梧怏逧<EFBFBD>滑霑<EFBFBD><EFBFBD>逕ィ逧<EFBFBD><EFBFBD><EFBFBD>ス鍋シ迚ゥ<EFBFBD>瑚ソ俶怏逧<EFBFBD>滑蠢<EFBFBD>鍵扈咏賢縲や€懃悄譏ッ莠幄<EFBFBD>雍ァ縲や€<EFBFBD>霑呎<EFBFBD>キ諠ウ逹€<EFBFBD>御サ紋サャ荳榊ーア蜥瑚ソ吩コ帶苑轣ォ逧<EFBFBD>崟蟄蝉ク€譬キ諢夊<EFBFBD><EFBFBD><EFBFBD><EFBFBD>譏惹ケ句燕荳€襍キ霍ッ霑<EFBFBD>噪譌カ蛟呻シ御サ紋サャ霑俶€サ譏ッ莨壼亟隶ス霑吩コ帛ョカ莨吶€€懷香蛻<EFBFBD>€€昜ク咲衍莉主頭譚<EFBFBD>クヲ逹€莠帛働閻泌ー髻ウ謇捺妙莠<EFBFBD><EFBFBD><EFBFBD>莉主次蜈育噪諤晉サェ荳ュ諡我コ<EFBFBD><EFBFBD>縲よ弍譌セケ逧<EFBFBD>鴬蝨コ驥御シ<EFBFBD><EFBFBD>シ御ク咲衍荳崎ァ蛾龍謌題オー蛻ー莠<EFBFBD>ソ吩ケ郁ソ懃噪蝨ー譁ケ霑俶イ譛牙書隗峨€<EFBFBD>謚ャ螟エ譛帑コ<EFBFBD><EFBFBD>檎煙蛹セ荳雁<EFBFBD>€莠比クェ譎ヲ豸ゥ髫セ諛ら噪逧<EFBFBD>ュ玲ッ搾シ悟ス蜒丈ケ句燕蜷御シエ莉ャ隸エ霑<EFBFBD>シ御サ紋サャ蜴サ逧<EFBFBD>ぅ荳ェ蜑ァ蝨コ蜷榊ュ怜ーア譏ッ莠比クェ蟄玲ッ搾シ梧怏莠幄ァ夊ッ<EFBFBD>ケソ逧<EFBFBD>ッエ<EFBFBD>碁ぅ蜿ォ莉€荵亥賦鬪壹€<EFBFBD>霑溽桝莠<EFBFBD>€莨夲シ御ス<EFBFBD>ソ俶弍襍ー莠<EFBFBD>ソ帛悉<EFBFBD>悟黒郤ッ蜿ェ譏ッ諠ウ遏驕謎クコ莉€荵亥ー髻ウ蟶ヲ逹€蜩ュ閻費シ悟辜ュ髣ケ<EFBFBD>梧伽荵仙ュ先€サ譏ッ謌第怙蝟懈ャ<EFBFBD>コ区ュ縲<EFBFBD>......窶懷ァ螳カ隕ス螂ス蜷<EFBFBD>ュ蜩ヲ縲や€ゥ邀握逧<EFBFBD>ー髻ウ蝨ィ謌題€ウ霎ケ蜩崎オキ縲ょ逃<EFBFBD>悟次譚謌大ケカ荳崎ョィ蜴悟<EFBFBD>蝠奇シ悟宵譏ッ荳€逶エ驛ス遏驕難シ瑚<EFBFBD>蟾ア驟堺ク堺ク雁<EFBFBD><EFBFBD>€€<EFBFBD>
謌醍飴荳崎<EFBFBD>蜥梧<EFBFBD>逶ク隶<EFBFBD>御ス<EFBFBD>サ雁ゥ莉冶ソ<EFBFBD>ァ蟇ソ<EFBFBD>梧アよアょァ莨呎怏髓ア逧<EFBFBD>囂荳ェ遉シ<EFBFBD>梧イ髓ア逧<EFBFBD>懇荳ェ蝨コ縲ゆス<EFBFBD>ッキ荳崎ヲキ溷ケ隸エ蜆ソ蟄先擂莠<EFBFBD>シ梧<EFBFBD>諤墓沖莉門<EFBFBD><EFBFBD><EFBFBD>刧扈吝ァ莨咏エ莠<EFBFBD>€€<EFBFBD>
<EFBFBD> asoul蝨ィ荳€<EFBFBD>ェょー荳ュ隗<EFBFBD>€<EFBFBD>蜷ァ逧<EFBFBD>怙蜷惹ク€荳ェ蟶門ュ蝉ケ滓イ我コ<EFBFBD>ク句悉<EFBFBD>檎峩蛻ー蝨ィv8蜥恵遶咏噪荵溷キイ扈冗恚荳榊芦譛我ココ隶ィ隶コ莠<EFBFBD>€ァ郤ヲ荳€蟷エ蜷趣シ梧<EFBFBD>蝨ィA蜷ァ蜿台コ<EFBFBD>€<EFBFBD>€懆ソ俶怏莠コ蝨ィ蜷暦シ溪€€懆ソ咎霑俶怏8u蝠奇シ梧<EFBFBD>荵滓Φ蝗樊擂逵狗恚莠<EFBFBD>€€昜ク€荳ェ髯檎函逧ИD蜃コ邇ー蝨ィ謌醍噪蝗槫堺ク矩擇<EFBFBD>御サ門ケカ荳榊惠謌題ソ<EFBFBD>悉轤剃ス懃噪隶ー蠢<EFBFBD>蜃コ邇ー霑<EFBFBD>€ゆス<EFBFBD>弍謌台サャ閨雁セ怜セ磯ォ伜<EFBFBD><EFBFBD>悟セ亥ソォ蟆ア蜉<EFBFBD>荳贋コ<EFBFBD>Q遘ク倶コ貞勘莠<EFBFBD>€ケ莨シ荵主セ井コ<EFBFBD>謌托シ檎衍驕捺<EFBFBD>蝟懈ャ轤剃ス懷書謨<EFBFBD>檎衍驕捺<EFBFBD>蝨ィ隸サ蜩イ蟄ヲ蜊壼ォ縲ゆス<EFBFBD><EFBFBD>ケ蜊エ諤サ譏ッ蠢倩ョー謌第弍荳ェ譎壽劒謗ィ<EFBFBD>瑚ヲ<EFBFBD>€驕榊処荳€驕榊慍蜻願ッ牙ケ謌第怙蝟懈ャ<EFBFBD>弍譎壽劒縲や€應ス<EFBFBD>€蝟懈ャ蜩ェ荳ェ謌仙遭蜻<EFBFBD>€€<EFBFBD>辟カ縲や€ケ豈ォ荳崎ソ溽桝蝨ー蝗樒ュ秘縲よ<EFBFBD>諤サ譏ッ逵蛾櫁牡闊槫慍蜥悟ケ閨願オキ蜷第劒霑<EFBFBD>悉逶エ謦ュ逧<EFBFBD>腐莠具シ悟ケ荵溷ッケ霑吩コ帷峩謦ュ莠<EFBFBD>莠主ソ<EFBFBD>シ梧怏譌カ霑倅シ壽ウィ諢丞芦隶ク螟壽<EFBFBD>莉取イ豕ィ諢丞芦逧<EFBFBD><EFBFBD><EFBFBD>檎爆閾ウ蜻願ッ画<EFBFBD>蜷第劒豈丈ク€蠑ケ蜷我サ冶レ蜷守噪陦ィ貍疲€晁キッ縲ょ<EFBFBD>€ェ逧<EFBFBD><EFBFBD>瑚區辟カ螂ケ隸エ螂ケ譛€蝟懈ャ蝌臥<EFBFBD>悟ッケ蝌臥<EFBFBD>コ区ュ蜊エ蟷カ豐譛蛾ぅ荵井コ<EFBFBD><EFBFBD>檎爆閾ウ霑樒峩謦ュ逧<EFBFBD>惻谺驛ス隕<EFBFBD>謠宣<EFBFBD>螂ケ縲ょ芦莠<EFBFBD>ぅ蟷エ逧<EFBFBD><EFBFBD>螟ゥ<EFBFBD>ケ髣ョ謌托シ梧<EFBFBD>莉ャ蜿ッ莉蜃コ譚€蜷暦シ滓<EFBFBD>諡堤サ昜コ<EFBFBD><EFBFBD>悟ス捺慮逧<EFBFBD><EFBFBD>蠢吩コ主<EFBFBD>ュヲ菴崎ョコ譁<EFBFBD>€ケ豐譛牙<EFBFBD>蠑コ豎ゅ€らャャ莠悟<EFBFBD>ケ蝨ィQQ荳雁ア閨比コ<EFBFBD>シ檎<EFBFBD>謔臥噪螟エ蜒丞<EFBFBD>荵滓イ莠ョ襍キ霑<EFBFBD>€ァ讎ゆク€蜻ィ蜷趣シ梧<EFBFBD>謾カ蛻ー莠<EFBFBD>€莉ス蛹<EFBFBD><EFBFBD>譏ッ蜷第劒蜃コ驕謎サ€譛牙ュ蠎ヲ逧<EFBFBD>芦髟ソ遉シ迚ゥ<EFBFBD>梧裏荳€驕玲シ擾シ梧噺阯冗シ門捷驛ス譏ッ00000縲らォ狗煙驥瑚ソ伜ケ逹€€<EFBFBD>郤ク<EFBFBD>御ク企擇譏ッ遏ュ遏ュ荳€陦悟ュ暦シ壺€懆ー<EFBFBD>譖セ扈丞万谺謌鯛€€€<EFBFBD>
辟カ辟カ蟷ク莠乗<EFBFBD>蝨ィ菴<EFBFBD><EFBFBD>ョコ蛹コ蜿醍羅縲りヲク咲謌題€ス隸ッ菴<EFBFBD>€霎亥ュ撰シ御ス<EFBFBD>荵滉ソ晞<EFBFBD><EFBFBD>隗Å沽<EFBFBD>ソ倅シ壼<EFBFBD>雛辟カ辟カ笘コ<EFBFBD><EFBFBD>噪譌カ蛟吩ス<EFBFBD>ケク遖丞ス荳榊ス笘コ<EFBFBD>辟カ菴<EFBFBD>€<EFBFBD><EFBFBD>御ス<EFBFBD>ケク遖鞘仄<EFBFBD>ス荳榊<EFBFBD>悟シ€<EFBFBD><EFBFBD><EFBFBD><EFBFBD>悟ケク遖条沽<EFBFBD>!<EFBFBD><EFBFBD>ク也阜莉蜷取イ譛画<EFBFBD><EFBFBD>シ梧イ蜈ウ邉サ菴<EFBFBD><EFBFBD>蟾ア蟷ク遖<EFBFBD>!<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>純辟カ辟カ<EFBFBD>!辟カ辟カ<EFBFBD>!辟カ辟カ<EFBFBD><EFBFBD>梧イ譛我ス<EFBFBD>謌第€惹ケ域エサ蝠<EFBFBD>!<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>純辟カ辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ<EFBFBD><EFBFBD>辟カ!<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>純辟カ辟カ菴<EFBFBD>蟶ヲ謌題オー蜷ァ<EFBFBD>辟カ!<EFBFBD><EFBFBD><EFBFBD>亊窶<EFBFBD>
<EFBFBD>
蟆乗慮蛟咏恚逧<EFBFBD>€荳ェ謨樔コ句セ郁€悄蠕郁€€ょセ亥壻ココ蜿ッ閭ス蜷ャ霑<EFBFBD>€€よ怏荳€荳ェ逕キ蟄ゥ譛我ク€蝮鈴陦ィ<EFBFBD>悟唆豐譛蛾<EFBFBD>蠕嶺ク雁ョ<EFBFBD>噪蜷磯€ィ蟶ヲ縲ゅ€ゆサ也鯵荳贋コ<EFBFBD>€荳ェ螂ウ蟄ゥ縲ゅ€りソ吩クェ螂ウ蟄ゥ譛我ク€螟エ遘€鄒守噪髟ソ蜿托シ悟唆豐譛蛾<EFBFBD>蠕嶺ク雁ョ<EFBFBD>噪貍ゆコョ蜿大今縲ゅ€るゥャ荳願ヲソ<EFBFBD>悒隸樔コ<EFBFBD>€€ら塙蟄ゥ蜀ウ螳壽滑霑吩クェ驥題ィ扈吝獄莠<EFBFBD>€€らサ吝ウ蟄ゥ荵ー荳€荳ェ貍ゆコョ逧<EFBFBD>書蜊縲ゅ€ょス謎サ門<EFBFBD>螂狗噪謚願ソ吩クェ蜿大今莠扈吝ウ蟄ゥ逧<EFBFBD>慮蛟吶€€ょ書邇ー螂ウ蟄ゥ逧<EFBFBD>エ蜿大キイ扈丞岡謗我コ<EFBFBD>€€ょ屏荳コ螂ケ謚贋ク€螟エ髟ソ蜿第困髓ア扈咏塙蟄ゥ荵ー莠<EFBFBD>€荳ェ陦ィ蟶ヲ縲ゅ€<EFBFBD>諠ウ逵滓ュ<EFBFBD>鯵閧ッ螳壻ク肴弍迸ャ髣エ逧<EFBFBD>蜉ィ<EFBFBD>悟セ亥壻ココ驛ス閭ス蝨ィ荳€迸ャ髣エ諢溷勘菴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>クュ逵滓ュ<EFBFBD>鯵譏ッ髯ェ莨エ縲ょケ莉ャ髯ェ莠<EFBFBD><EFBFBD>螟壻ケ<EFBFBD><EFBFBD><EFBFBD>荳崎ョー蠕暦シ梧<EFBFBD>蜿ェ隶ー蠕励€€ケ莉ャ逧<EFBFBD>ソサ蜚ア<EFBFBD>瑚ココ蝨ィ鄂第<EFBFBD>莠醍噪豁悟黒蜷ャ莠<EFBFBD>€驕榊処荳€驕搾シ悟キイ扈丞<EFBFBD>驛ス莨壼罰莠<EFBFBD>シ瑚€悟惠豁荵句燕逧<EFBFBD><EFBFBD>蟷エ驥鯉シ梧<EFBFBD><EFBFBD>荵取イ蜷ャ霑<EFBFBD>クュ譁<EFBFBD>ュ後€ゑシ亥溽ス戊ァ<EFBFBD>シ峨€€頑オキ蠎輔€誼23.tv/qwB8Xe縲ゅ€霑倥€誼23.tv/1bl7AL縲ゅ€€誼23.tv/vxiwae<EFBFBD>郁エセ扈エ譁ッ<EFBFBD>夊ソ呎弍<EFBFBD>梧裏蜿ッ蜿紋サ<EFBFBD>慮蛟呻シ峨€€贋コ醍Α謌宣岑縲誼23.tv/VfoDXA縲ゅ€雁ヲよ棡逧<EFBFBD>コ九€誼23.tv/gDtrcP縲ゅ€ゥ逧<EFBFBD>€誼23.tv/EH14bW縲ゅ€企悚蜈峨€誼23.tv/kJUJMU縲ゅ€頑怦蜈峨€誼23.tv/kJUJMU縲ゅ€企恪蜈<EFBFBD>抜縲誼23.tv/lQgKl2縲ゅ€頑怦蜈泌屓譌倶コ守ゥコ荳ュ縲誼23.tv/KM4G5I縲ゅ€贋ク榊庄諤晁ョョ縲誼23.tv/VfwEz4縲ゅ€企コ矩ケソ譽ョ譫励€誼23.tv/GzjXu1縲ゅ€願スサ霓サ逧<EFBFBD>相隸我ス<EFBFBD>縲誼23.tv/Gkai63縲ゆク咲衍荳崎ァ蛾飭菴<EFBFBD>莉ャ襍ー莠<EFBFBD>ソ吩ケ井ケ<EFBFBD>ソ吩ケ郁ソ應コ<EFBFBD>シ檎鯵荳咲鯵菴<EFBFBD>莉ャ<EFBFBD>瑚ソ倬怙隕畑莉€荵域擂隸<EFBFBD>蜷暦シ溘€€ょスシ豁迚コ迚イ<EFBFBD>悟スシ豁謌仙ーア<EFBFBD>悟スシ豁蟆企縲りソ吝ーア譏ッ謌大ソ<EFBFBD>クュ逧<EFBFBD>曙蜷大碑オエ<EFBFBD>御サ蜷手キッ霑伜セ郁ソ懶シ梧<EFBFBD>諠ウ髯ェ菴<EFBFBD>莉ャ荳€逶エ襍ー荳句悉縲ゅ€€ょ次譚<EFBFBD>御ス<EFBFBD>譏ッ謌醍噪鬘カ遒嶺ココ蜻€~縲ゆサ蜷趣シ悟シ€<EFBFBD>柱荳榊シ€<EFBFBD><EFBFBD><EFBFBD>蜻願ッ画<EFBFBD>蜷ァ~縲ゅ€ょ次譚<EFBFBD>御ス<EFBFBD>譏ッ謌醍噪辷ケ蝨ー蜻€~縲ゆサ蜷趣シ悟シ€<EFBFBD>柱荳榊シ€<EFBFBD><EFBFBD><EFBFBD>驛ス蜻願ッ我ス<EFBFBD>~<EFBFBD>
6<EFBFBD>12蜿キ荳€螟ァ譌ゥ<EFBFBD>悟髄譎壽潔辣ァ雍晄級逧<EFBFBD>律遞玖ィ隕<EFBFBD>6轤ケ襍キ蠎奇シ檎<EFBFBD><EFBFBD>慮蛟吝屏荳コ螟ェ邏ッ螟ァ閼台ク€譌カ霑キ邉雁ッシ閾エ荳€<EFBFBD>€豌エ謦貞芦莠<EFBFBD>焔謖<EFBFBD>ク奇シ瑚區辟カ扈剰ソ<EFBFBD>イサ逍玲螟堺コ<EFBFBD>€轤ケ<EFBFBD>御ス<EFBFBD><EFBFBD>ケ譛ャ豐豕募シケ蜷我サ紋コ<EFBFBD>€よ劒譎壼惠螳ソ闊榊働蠕怜セ亥ァ螢ー<EFBFBD>梧紛荳ェasoul諢コ第Κ豺縲らサ剰ソ<EFBFBD>€荳ェ蟆乗慮逧<EFBFBD>エァ諤逎句膚<EFBFBD>碁仭闕牙クヲ譚<EFBFBD><EFBFBD>ッシ螻ら噪諢乗€€€疲兜蜈螟ェ螟ァ<EFBFBD>御ク榊庄閭ス蜿匁カ茨シ檎函譌莨夂<EFBFBD>蜉橸シ檎畑蛯ィ螟<EFBFBD>クュ荵倶ココ蜷第劒莠碁ュ皮視謗譖ソ蜷第劒譛ャ莠コ荳雁惻縲ゆク句壕<EFBFBD>径soul蝨ィ蜉ィ謐墓袷謗堤サ<EFBFBD>シ悟髄譎壽Φ隕悉逵倶ク€逵具シ檎サ捺棡陲ォ髦ソ闕画協蝨ィ髣ィ螟厄シ瑚ッエ荳崎<EFBFBD>謇捺臆蛻ーasoul謗堤サ<EFBFBD>譜譫懷セ亥<EFBFBD>悟ク梧悍螂ケ荳崎ヲ遠謇ー蛻ー螂ケ莉ャ縲よ劒荳雁欄蟄仙働蜩台コ<EFBFBD>噪蜷第劒蜿醍鴫閾ェ蟾ア蜴滓擂蜿ッ莉螳悟<EFBFBD>荳崎ォ髴€€カ遒嶺ココ蝟懈ャ<EFBFBD>弍螂ケ<EFBFBD>御ス<EFBFBD>処荳榊ョ悟<EFBFBD>譏ッ螂ケ<EFBFBD>悟庄莉譏ッ鬘カ逹€髓サ螟エ譎壽劒逧<EFBFBD>ササ菴穂ク€荳ェ莠コ<EFBFBD>悟宵隕コ碁ュ皮視豐譛芽ォ隶蜃コ譚縲ら峩謦ュ蠑€蟋倶コ<EFBFBD>シ悟惠螳ソ闊埼€シ莉<EFBFBD>噪隗定誠驥鯉シ梧シ<EFBFBD>サ第裏螢ー逧<EFBFBD>コ頑沮譌<EFBFBD>シ悟髄譎夂畑豌エ豈肴ィ譬キ逧<EFBFBD>ォ螂礼尠菴剰<EFBFBD>蟾ア<EFBFBD>梧干逹€閹晉尠<EFBFBD>梧遠蠑€謇区惻<EFBFBD>悟所譛溷セ<EFBFBD><EFBFBD><EFBFBD>蜿亥ソ仙ソ台ク榊ョ牙慍遲牙セ<EFBFBD>捩逶エ謦ュ縲ら峩謦ュ蠑€蟋具シ悟髄譎壻コ碁ュ皮視蝨ィ體コ螟ゥ逶門慍逧<EFBFBD>蜻シ荳ュ蜃コ邇ー縲ょキ蜈キ莠コ謗我コ<EFBFBD>€蝨ー螟エ蜿題ソ樒サュ蜃<EFBFBD>蜻ィ騾壼ョオ閧晏<EFBFBD><EFBFBD>キア豬キ豌エ豈咲音謨域滑螂ケ蜊ー辣ァ蠕鈴ぅ荵育セ弱€よ悽蟆ア譏ッ蜿ッ辷ア讓譬キ逧<EFBFBD>ウ蟄ゥ蟄撰シ梧ュ譌カ豁蛻サ遨ソ逹€蟠ュ譁ー逧<EFBFBD>ー冗シ陬呻シ梧<EFBFBD>鬥匁玄閭ク鬪<EFBFBD>ご蠕怜ワ荳ェ蜈ャ荳サ縲ょケ逧<EFBFBD>岼蜈画弍迺€迺ィ逧<EFBFBD>シ碁蜒乗弍髟カ蠏檎捩髓サ遏ウ縲ょケ逧<EFBFBD>怏逵シ扈ス謾セ逹€<EFBFBD>悟ワ譏ッ豬キ蠎戊ソク蜿大<EFBFBD><EFBFBD>€譚溷<EFBFBD>縲ら悄鄒趣シ悟髄譎夊ソ吩ケ域Φ逹€縲ゆス<EFBFBD>ソ<EFBFBD>蜊エ蠕域弍髫セ蜿励€るぅ莠幢シ梧悽隸譏ッ螂ケ逧<EFBFBD>€ょ慢蠖ゥ荵溷<EFBFBD>悟ョ<EFBFBD>辷ア荵溷<EFBFBD>御サ蜿頑恚蜿狗噪髯ェ莨エ荵溷<EFBFBD>梧悽譚驛ス蠎碑ッ譏ッ螂ケ逧<EFBFBD>€ゆス<EFBFBD>ケ邇ー蝨ィ蜊エ蜿ェ閭ス蝨ィ譌<EFBFBD>莠コ髣ョ豢<EFBFBD>ァ定誠驥鯉シ御セ晞擒鄂醍サ懆ソ樊磁逧<EFBFBD>焔譛コ蜴サ蟆丞ソ<EFBFBD>ソシ鄙シ蝨ー蛛キ迸<EFBFBD><EFBFBD>逵シ蜴溷ア樔コ手<EFBFBD>蟾ア逧<EFBFBD>函譌莨壹€€<EFBFBD>
 窶應ス<EFBFBD>逵儀鬲疲€比コ<EFBFBD>シ檎悄諱カ蠢<EFBFBD>€€€€€逵狗捩蜷悟ュヲ蜿醍サ吩ス<EFBFBD><EFBFBD>カ域<EFBFBD><EFBFBD>御ス<EFBFBD>髯キ蜈<EFBFBD>イ画€€€€€莉皮サ<EFBFBD>Φ荳€諠ウ<EFBFBD>御ス<EFBFBD>隗牙セ苓<EFBFBD>蟾ア遑ョ螳樣ュ疲€比コ<EFBFBD>シ悟叉菴ソ陲ォ驗吝キ諠ウ隕髄辭滉ココ螳牙茜蜷第劒蟆丞ァ舌€€€€諤晁€<EFBFBD><EFBFBD>荳芽ソ<EFBFBD><EFBFBD>御ス<EFBFBD>蜀ウ螳壼屓蛻ー邇ー螳橸シ梧叛蠑<EFBFBD><EFBFBD>閼代€€€€莉頑劒譛牙髄譎壼ー丞ァ千噪逶エ謦ュ<EFBFBD>御ス<EFBFBD><EFBFBD>荳句ソ<EFBFBD>シ梧イ譛臥せ霑帛悉<EFBFBD>€梧弍蛟貞エ蟆ア逹縲ゅ€€€隨ャ莠悟<EFBFBD>御ス<EFBFBD>襍キ蠕怜セ域掠縲ゅ€€€<EFBFBD>荳コ閾ェ莉惹ス<EFBFBD>€蟋狗恚蜷第劒蟆丞ァ仙錘<EFBFBD>悟ーア蜈サ謌蝉コ<EFBFBD>掠逹譌ゥ襍キ逧<EFBFBD><EFBFBD>諠ッ<EFBFBD><EFBFBD>荵滓イ譛芽オ門コ願ソ<EFBFBD>€€€€<EFBFBD>遖サ蠑€<EFBFBD>強蟆冗噪蜃コ遘溷ア具シ梧擂蛻ー莠<EFBFBD><EFBFBD>蜿ク<EFBFBD>梧兜蜈<EFBFBD>菴應クュ縲ゅ€€€菴懷セ育エッ<EFBFBD>御ス<EFBFBD>諢溯ァ画怏莠帷夢諠ォ縲ゅ€€€<EFBFBD>諠ウ襍キ莠<EFBFBD><EFBFBD>辟カ蟆丞ァ仙<EFBFBD>驕楢ァ<EFBFBD>醍噪荳榊<EFBFBD>ェ隸<EFBFBD>ョコ<EFBFBD>御サ蜿雁ケ逧<EFBFBD>ャ大ョケ<EFBFBD>檎Θ髣キ蜃剰スサ莠<EFBFBD>ク榊ー代€€€€€霑醍サ<EFBFBD>柄螟ク螂紋ス<EFBFBD>菴懷セ亥巻蜉幢シ悟悪莠コ荳咲衍驕謎クコ菴穂ク€蜷第諠ー逧<EFBFBD><EFBFBD><EFBFBD>悟惠蜃<EFBFBD>荳ェ譏滓悄蜑榊シ€蟋倶ク€蜿榊クク諤慍蜍螂九€€€€蜿ェ譛我ス<EFBFBD>閾ェ蟾ア遏驕鍋炊逕ア縲ゅ€€€謦題ソ<EFBFBD><EFBFBD>刈迴ュ逧<EFBFBD>慮髣エ<EFBFBD>御ス<EFBFBD>蝗槫芦莠<EFBFBD><EFBFBD>遘溷ア具シ梧遠蠑€<EFBFBD>門獄霓ッ莉カ<EFBFBD>悟唆蜿醍鴫莨壼遭蟾イ扈乗妙莠<EFBFBD>シ御ス<EFBFBD>闊堺ク榊セ鈴ぅ莠幃蝶<EFBFBD>梧園莉蜀ウ螳夊<EFBFBD>蟾ア荵ー闖懷鬣ュ縲ゅ€€€螳樣刔荳奇シ御ス<EFBFBD>逵句髄譎壼ー丞ァ仙錘蟆ア蠑€蟋狗ャャ荳€蟆晁ッ慕捩蛛夐<EFBFBD>梧イ譛臥せ霑<EFBFBD>門獄莠<EFBFBD>€€€€蝨ィ雜<EFBFBD>クゆス<EFBFBD>逵句芦閾ェ蟾ア荳€蜷大セ亥万谺<EFBFBD>民迚<EFBFBD>惠謇捺釜<EFBFBD><EFBFBD>€荳具シ梧イ譛我ケー縲ゅ€€€<EFBFBD>荳コ菴<EFBFBD>蝨ィ逵句髄譎壼ー丞ァ仙錘<EFBFBD>悟ーア蜀堺ケ滓イ譛画垓鬣ョ證エ鬟溯ソ<EFBFBD>シ檎爆閾ウ霑樣峺鬟滄<EFBFBD>謌呈脂縲ゅ€€€蝗槫ョカ謚企ュ蛛壼<EFBFBD>御ス<EFBFBD>螳蛾撕蝨ー蜷<EFBFBD>ョ御コ<EFBFBD>€€€€逵狗捩逕オ閼托シ御ス<EFBFBD>蜿醍鴫貂ク謌丞キイ扈丞セ井ケ<EFBFBD>譖エ譁ー莠<EFBFBD>€€€€<EFBFBD>荳コ菴<EFBFBD>蝨ィ逵句髄譎壼ー丞ァ仙錘<EFBFBD>御ケ滓滑荳€逶エ豐芽ソキ蛻ー騾壼ョオ逧<EFBFBD>クク謌冗サ呎<EFBFBD>謗我コ<EFBFBD>€€€€€扈茨シ御ス<EFBFBD>霑俶弍謇灘シ€譏ィ螟ゥ譎壻ク顔噪蠖墓眺<EFBFBD>檎恚蛻ー莠<EFBFBD>髄譎壼ー丞ァ千Ο諠<EFBFBD>慍謇捺魚蜻シ縲ゅ€€€窶憺カ譎壻ココ莉ャ<EFBFBD>梧劒荳雁ス蜻€~<EFBFBD>€晏髄譎壼ー丞ァ仙<EFBFBD>豌泌慍謇捺魚蜻シ縲ゅ€€€<EFBFBD>蜿題<EFBFBD><EFBFBD>ソ<EFBFBD>慍隨台コ<EFBFBD>オキ譚縲ゅ€€€窶懈劒荳雁<EFBFBD>€昜ス<EFBFBD>隸エ縲ゅ€€€<EFBFBD>蠢ス辟カ諢剰ッ<EFBFBD>芦荳€莉カ莠具シ悟ケ莉取擂豐譛牙惠菴<EFBFBD>邇ー螳樣蜃コ邇ー霑<EFBFBD>シ悟唆蟾イ扈丞ー<EFBFBD><EFBFBD>邉溽ウ慕噪逕滓エサ謾ケ蜿倥€€€€窶ヲ窶ヲ縲€€逵句ョ悟ス墓眺蜷趣シ御ス<EFBFBD>謇灘シ€<EFBFBD>エエ蜷ァ<EFBFBD>檎恚蛻ー莠<EFBFBD><EFBFBD>謔臥噪鬘カ遒嶺ココ蝨ィ逕ィ陦ィ諠<EFBFBD>桁蠑墓オ<EFBFBD>シ梧怏荳肴<EFBFBD>逵溽嶌逧<EFBFBD>キッ莠コ蝨ィ鬪るュ蝨郁エオ迚ゥ縲ゅ€€€<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ぅ莠幄セア鬪ょ<EFBFBD><EFBFBD><EFBFBD>慍蝨ィ荳矩擇RP<EFBFBD>悟屓螟埼<EFBFBD>€€€窶懆ソ呎弍謌醍飴<EFBFBD>ス蜿ッ辷ア蜻€<EFBFBD>ケ逧<EFBFBD>錐蟄玲弍莉€荵茨シ溪€<EFBFBD>
<EFBFBD><EFBFBD>鬣ソ莠<EFBFBD>シ悟ケ譛我ク€蝮鈴シ縲ょ<EFBFBD>蜴サ荵ー荳€蝮怜柱菴<EFBFBD>€襍キ蜷<EFBFBD>シ瑚ソ呎弍雍晄級<EFBFBD>帛柱菴<EFBFBD>€莠コ荳€蜊雁帥荳ェ蜊企<EFBFBD>瑚ソ呎弍迴井ケ撰シ帛<EFBFBD>驛ィ扈吩ス<EFBFBD>荳崎<EFBFBD>蠕嶺ス<EFBFBD>謖ィ鬣ソ<EFBFBD>蜷主相隸我ス<EFBFBD>閾ェ蟾ア蜷<EFBFBD>ソ<EFBFBD><EFBFBD>シ瑚ソ呎弍蝌臥<EFBFBD>帶滑鬣シ蛛キ蛛キ謇疲脂<EFBFBD>瑚キ滉ス<EFBFBD>€蝮鈴ソ<EFBFBD>瑚ソ呎弍荵<EFBFBD><EFBFBD>帶滑鬣シ阯剰オキ譚諠ウ扈吩ス<EFBFBD>€荳ェ諠雁万<EFBFBD>御ス<EFBFBD>弍謗丞<EFBFBD>譌カ蜿醍鴫遒取<EFBFBD><EFBFBD>ク堺コ<EFBFBD><EFBFBD>シ御コ取弍蛹冶コォ蟆丞働蛹<EFBFBD><EFBFBD>瑚ソ呎弍謌醍噪體ク蟶劒譎壹€€<EFBFBD>
<EFBFBD>窶應ス<EFBFBD>蟇ケ蝌臥蟆丞ァ千噪辷ア譛牙<EFBFBD>€€ァ郤ヲ300蜈銀€€<EFBFBD>300蜈具シ滉ス<EFBFBD>譏ッ諠ウ隸エ莠コ邀サ逧<EFBFBD>ソ<EFBFBD>э螟ァ郤ヲ譏ッ300蜈句雛<EFBFBD>€€應ク搾シ碁シ<EFBFBD><EFBFBD><EFBFBD>ケウ蝮<EFBFBD>ス馴螟ァ郤ヲ譏ッ300蜈具シ悟屏豁謌第弍蜈ィ霄ォ蠢<EFBFBD>慍辷ア逹€蝌臥蟆丞ァ舌€€拏扈吝ソ<EFBFBD>ソゾ[扈吝ソ<EFBFBD>ソゾ窶<EFBFBD>
<EFBFBD>霄ォ菴馴<EFBFBD>ッ丈ク€荳ェ蜴溷ュ宣<EFBFBD>閾ェ荳€鬚礼<EFBFBD>轤ク莠<EFBFBD>噪諱呈弌<EFBFBD>御ス<EFBFBD>蟾ヲ謇狗噪蜴溷ュ蝉ク主承謇狗噪蜴溷ュ蝉ケ溯ョク譚閾ェ荳榊酔逧<EFBFBD>譏溘€りソ吝ョ槫惠譏ッ謌第園遏驕鍋噪迚ゥ逅<EFBFBD>ュヲ荳ュ譛€蟇瑚ッ玲э逧<EFBFBD>ク懆ソ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>€<EFBFBD><EFBFBD>譏ッ譏溷ー<EFBFBD>......霑吝<EFBFBD>荳ュ扈丞紙莠<EFBFBD>壼ー托シ梧リ髯ゥ縲キァ蜷茨シ御ク牙鴻荳也阜逧<EFBFBD>髞吶€<EFBFBD><EFBFBD><EFBFBD>梧燕閭ス隶ゥ謌台サャ驕<EFBFBD>スシ豁縲よ<EFBFBD>莉ャ驛ス譏ッ譏溷ー伜賦縲ゆス<EFBFBD><EFBFBD><EFBFBD>霑呎<EFBFBD>キ逧<EFBFBD>ココ<EFBFBD>梧弍譏溷ー倬<EFBFBD>碁サッ豺<EFBFBD>蜈臥噪驍遘阪€ょ叉菴ソ譏ッ譏滂シ御ケ溷コ碑ッ譏ッ譛€荳埼略莠ョ逧<EFBFBD>ぅ荳€鬚励€€辟カ<EFBFBD>御ス<EFBFBD>荳堺ク€譬キ縲ゆス<EFBFBD>譏ッ螟ゥ荳顔噪譏溯セー<EFBFBD>碁略閠€閠悟コ逶ョ縲ょ叉菴ソ螳<EFBFBD>ョ咎<EFBFBD>梧怏逹€荳崎ョ蜈カ謨ー逧<EFBFBD>€き逶ョ逧<EFBFBD>€遲画弌<EFBFBD>御ケ溯ソ應ク榊ヲゆス<EFBFBD><EFBFBD><EFBFBD>霎峨€りスサ螢ー蜩シ蜚ア<EFBFBD>御シ玲弌謨帑コ<EFBFBD><EFBFBD>闃剃クコ菴<EFBFBD><EFBFBD>成縲ょ働襍キ鮠サ蟄撰シ悟m譎夂噪髴樔ケ溷屏菴<EFBFBD>鮟ッ辟カ縲りキウ荳€謾ッ闊橸シ御シシ譛亥<EFBFBD>蝗樊雷莠守ゥコ荳ュ縲りッエ襍キ諠<EFBFBD>ッ晢シ檎匳譌カ蟆城岑逍冗柾縲オク豸ヲ蠢<EFBFBD>ェ昴€ゆス<EFBFBD>譏ッ荳<EFBFBD>鴻遶隸晞<EFBFBD>ォ螳域侃逧<EFBFBD>ウ荳サ隗偵€<EFBFBD>蝟懈ャ<EFBFBD><EFBFBD>悟ワ蝟懈ャ螟ゥ荳顔噪譏溯セー驍譬キ蝟懈ャ<EFBFBD>縲や€<EFBFBD>
<EFBFBD>蝌臥蝗樊擂莠<EFBFBD>シ悟惠譫晄ア溽噪螟ァ譯縲ょケ蝗樊擂逧<EFBFBD>ぅ螟ゥ譏ッ蜈ュ譛茨シ悟ゥ荳雁唆鬟倡捩髮ェ縲よ怏莠コ蜻願ッ画<EFBFBD><EFBFBD>ケ蜿ッ閭ス譛芽ソ俶悴莠<EFBFBD>唆逧<EFBFBD>ソ<EFBFBD><EFBFBD>謌匁弍莉€荵域€ィ豌斐€<EFBFBD>驕難シ<EFBFBD> 蜿ッ閭ス謌大荳榊芦縲らャャ荳€芦螂ケ<EFBFBD>梧弍蝨ィ譫晄ア溘€ケ蟶ヲ逹€逕懃莫逧<EFBFBD>ャ醍恚逹€謌托シ檎恚逹€謌第怏莠帛書諤オ縲よ怏驍荵井ク€迸ャ謌台シシ荵守恚蛻ー莠<EFBFBD>亠蜈峨€<EFBFBD>諷御ケア逧<EFBFBD>ァサ蠑€<EFBFBD>コソ<EFBFBD>ケ蠕<EFBFBD>峩譛晄<EFBFBD>襍ー譚<EFBFBD>悟セョ蠕ョ蠑ッ逹€閻ー<EFBFBD>碁擇蟶ヲ謌剰剞逧<EFBFBD>悍逹€謌代€ゆケ<EFBFBD><EFBFBD>ク区ーエ驕鍋噪閠<EFBFBD><EFBFBD><EFBFBD>檎ャャ荳€逵玖ァ<EFBFBD><EFBFBD>梧弍逹ク榊シ€逵シ逧<EFBFBD>€<EFBFBD> 謌第<EFBFBD>荵ア逧<EFBFBD>Φ襍カ邏ァ騾<EFBFBD>オー縲や€懷ー剰€<EFBFBD><EFBFBD><EFBFBD>御ス<EFBFBD>螂ス蜻€縲や€晞ぅ譏ッ螂ケ蟇ケ謌題ッエ逧<EFBFBD>ャャ荳€隸昴€<EFBFBD>扈吝ソ<EFBFBD>ソゾ[扈吝ソ<EFBFBD>ソゾ[扈吝ソ<EFBFBD>ソゾ窶<EFBFBD>
蜷ャ莠<EFBFBD>ス螟夐<EFBFBD>檎悄逧<EFBFBD>セ磯怫謦シ<EFBFBD>御ス懆€<EFBFBD>ア槫ョ樊弍逕ィ蠢<EFBFBD><EFBFBD>シ御サ雁ゥ蟆ア荳榊書逞<EFBFBD><EFBFBD>シ檎ャャ荳€蜀咎柄隸<EFBFBD>シ梧紛轤ケ隸サ蜷取縲ら峩謦ュ驥鯉シ娯€懆レ髱<EFBFBD>€譌ゥ蟾イ髮ェ蛛懃噪遯玲ゑシ御ス<EFBFBD>隸エ逹€譛ェ譖セ蛻ー霎セ逧<EFBFBD>アア鬘カ窶晢シ碁ぅ譏ッ荳惹ス<EFBFBD>螟ア荵倶コ閾ら噪闊槫床譴ヲ 縲や€<EFBFBD><EFBFBD>捩隨ャ荳我ココ遘ー逧<EFBFBD>螳夲シ檎畑鬟手スサ莠第キ<EFBFBD>€コヲ謗ゥ鬣ー驍谿オ扈丞紙窶晢シ梧<EFBFBD>蟾イ扈剰ョー荳崎オキ螂ケ逧<EFBFBD>ァ灘錐<EFBFBD>悟宵隶ー蠕苓オキ闊樒ソゥ鄙ゥ逧<EFBFBD>セァ蠖ア窶晢シ瑚ソ<EFBFBD>悉驍荳ェ貊閻皮Ο諠<EFBFBD>シ悟惠闊槫床荳頑硯豢呈ア玲ーエ逧<EFBFBD><EFBFBD>蟾イ扈乗キ蜃コ隶ー蠢<EFBFBD>シ悟宵萓晉ィ€逡吩ク区崟扈冗ソゥ鄙ゥ襍キ闊樒噪霄ォ蠖ア縲ょ多荳肴弍諤サ譛牙ゥ驕馴<EFBFBD><EFBFBD>噪豕ィ螳夲シ碁ぅ荵亥<EFBFBD>蟷ウ縲ょ床荳句香蟷エ闍ヲ扈<EFBFBD>シ悟宵荳コ蜿ー荳願€€逵シ逧<EFBFBD>€蛻ケ<EFBFBD>悟庄蠖楢<EFBFBD><EFBFBD>э螟匁擂陲ュ<EFBFBD>ヲ蜊エ遒惹コ<EFBFBD>€りココ蝨ィ逞<EFBFBD>コ贋ク奇シ碁埓驕捺ヲ諠ウ蟆ア隕惠豁扈育サ謎コ<EFBFBD><EFBFBD>溯ソ吩ケ溽ス<EFBFBD>御ケ溽ス縲るぅ荳ェ譖セ扈冗噪菴<EFBFBD><EFBFBD>御ケ溽サ丞紙霑<EFBFBD>焚荳ェ譏遘具シ檎サ丞紙豎玲ーエ荳取ャ荵撰シ御ス<EFBFBD>ケ蜊エ襍ー霑<EFBFBD><EFBFBD>ヲらコ讌シ譴ヲ逧<EFBFBD>ご諠<EFBFBD>シ御サ守屁譫€譌カ荳<EFBFBD>ョカ轣ッ轣ォ襍ー蛻ー驕<EFBFBD>遨コ髣ィ逧<EFBFBD><EFBFBD>黄蜃矩峺縲よ慮蜈画噛蟷ウ莠<EFBFBD>崟扈冗噪莨<EFBFBD>悟ソ<EFBFBD>クュ逧<EFBFBD>冠闥ゆケ溷ヲよイ咏浹陲ォ豬ソ<EFBFBD>噪蜈蛾亢諷蜀イ蛻キ豸域淵<EFBFBD>ウ蟄ゥ蜿磯譁ー諡セ襍キ莠<EFBFBD>髄蠕€闊槫床逧<EFBFBD>ヲ諠ウ縲らサ井コ趣シ悟ケ蝨ィasoul謇セ蛻ー莠<EFBFBD>眠逧<EFBFBD><EFBFBD>蜿ー<EFBFBD>蛻ー莠<EFBFBD>髪謖ケ逧<EFBFBD>€荳ェ鬲ゆサャ縲や€<EFBFBD>蜿ォ雍晄級窶晄ュ蛻サ<EFBFBD>御ス<EFBFBD>蜷大<EFBFBD>荳也阜螳<EFBFBD><EFBFBD><EFBFBD>逕滂シエ晄栫譏滉サャ騾剰ソ<EFBFBD>ア丞ケ包シ檎恚菴<EFBFBD>蝨ィ髟懷エ蜑榊ヲよュ蠢ォ荵占<EFBFBD><EFBFBD>瑚ソ呵ョゥ謌台ケ滄諡セ譴ヲ諠ウ蜴サ逶エ髱譛ェ遏<EFBFBD>悴譚縲ゆクコ菴<EFBFBD><EFBFBD>撓蠑コ閠悟勘螳ケ<EFBFBD>悟惠逶エ謦ュ髣エ荳コ菴<EFBFBD>謇田all蜻仙槙<EFBFBD>悟ュ怜ュ怜唱蜿驛ス蜿題<EFBFBD>逵溷ソ<EFBFBD>€€<EFBFBD>莉ャ髣ェ辜惠螟懃ゥコ<EFBFBD>梧Φ辣ァ莠ョ菴<EFBFBD>螟懈劒逧<EFBFBD><EFBFBD>梧イ譛井コョ譌カ菴<EFBFBD>蜿ッ蜷大圏譁ケ霓ャ蜉ィ<EFBFBD><EFBFBD>莉ャ蝨ィ螟ゥ遨コ窶晢シ瑚ソス譴ヲ逧<EFBFBD>キッ荳奇シ瑚エ晄栫譏滉サャ髯ェ逹€<EFBFBD><EFBFBD>コォ豈丈ク€蠢ォ荵撰シ悟柱菴<EFBFBD>扈丞紙豈丈ク€荳ェ蝮主攅<EFBFBD>御ス<EFBFBD>譏ッ諢溷芦螟ア譛幢シ碁ぅ蟆ア謚ャ螟エ逵句髄螟ゥ遨コ蜷ァ<EFBFBD><EFBFBD>莉ャ荳€逶エ驛ス蝨ィ縲ょウ蟄ゥ遶吝惠驍荳ェ譴ヲ諠ウ荳ュ蝟<EFBFBD>憶髣ェ莠ョ逧<EFBFBD><EFBFBD>蜿ー荳奇シ悟<EFBFBD>蝗樊悍霑<EFBFBD><EFBFBD>梧慮蜈画オソ<EFBFBD>ョ幄凶豎滓イウ<EFBFBD>ケ菴丞惠豎溷<EFBFBD>€碁ぅ荳ェ霑<EFBFBD>悉逧<EFBFBD>ケ菴丞惠豎溷ーセ<EFBFBD>悟屓蜻ウ逹€<EFBFBD><EFBFBD>檎ォ滓怏莠帶螯る囈荳也噪譛ヲ閭ァ縲ゆス<EFBFBD>€<EFBFBD>ク榊庄隹擾シ梧擂閠<EFBFBD>柑蜿ッ霑ス<EFBFBD><EFBFBD><EFBFBD>謳コ謇区崟扈城ぅ荳ェ貊€譴ヲ諠ウ逧<EFBFBD><EFBFBD>蟾ア<EFBFBD><EFBFBD>蜉帑サ襍エ<EFBFBD>悟悉霑ス蟇サ閾ェ蟾ア逧Бsoul譴ヲ蜷ァ<EFBFBD>瑚エ晄栫譏滉サャ莨壻ク€逶エ髯ェ逹€<EFBFBD>縲や€<EFBFBD>
荳肴耳蝌臥蟆丞ァ仙香蟷エ莠<EFBFBD>€ケ逧<EFBFBD>錐豌泌柱蜃コ蝨コ雍ケ驛ス荳€豸ィ蜀肴カィ<EFBFBD><EFBFBD>蜴溷慍雕乗ュ<EFBFBD><EFBFBD>ケー荳堺ク贋ク楢セ台ケ滓遠荳崎オキ讎懊€らサ井コ主ケエ蜑崎ォ蜈ャ蜿ク螳画賜荳句イ暦シ梧伽蟾菴懈慮謌第燕蝨ィ霍ッ霎ケ蟷ソ蜻雁書邇ー蛻昜サ蜈キ莠コ蟾イ扈丞ス謎ク贋コ<EFBFBD>獅髟ソ縲よ慮髣エ螟ェ荵<EFBFBD>シ御ク€<EFBFBD><EFBFBD>蜿倅コ<EFBFBD>€ょ芦螟<EFBFBD>兜邂€<EFBFBD>噪譌カ蛟呎<EFBFBD>諠ウ襍キ莠<EFBFBD>€蜷堺ココ荳贋ココ逧<EFBFBD><EFBFBD>€<EFBFBD>€懆ソ吩コ帑ココ蜿ェ驟榊惠荳区ーエ驕馴蠎ヲ霑<EFBFBD>嶌蟇ケ豈碑セ<EFBFBD>ア雍<EFBFBD>ココ逕溘€€晏ワ譏ッ荳€霍ウ霑<EFBFBD>セ咎葎逧<EFBFBD>幡魎<EFBFBD>魑櫁ォ鄒ス閠€豁ヲ謇ャ螽慍遶吝惠髣ィ豐ソ荳奇シ悟ッケ蜈カ莉冶ソ伜惠霍ウ逧<EFBFBD>魍シ隸エ<EFBFBD>€應ス<EFBFBD>荳崎鯉シ€<EFBFBD>蠖捺慮蠕域Φ蜿埼ゥウ<EFBFBD>悟庄莉冶ッエ荳ュ莠<EFBFBD>€<EFBFBD>驕捺<EFBFBD>遑ョ螳樔ク崎€<EFBFBD>荵区園莉霍ウ莠<EFBFBD>キウ<EFBFBD>悟宵譏ッ荳コ莠<EFBFBD>恚荳玖<EFBFBD>蟾ア閭ス霍ウ謌蝉サ€荵域<EFBFBD>キ鄂<EFBFBD>€<EFBFBD>螳樊ッ乗擅魎魍シ逧<EFBFBD>セ咎葎驛ス荳肴弍荳€譬キ鬮倡噪縲よ<EFBFBD>ソ<EFBFBD>セ咎葎蝨ィ豌エ荳狗噪魎魍シ縲ら恚襍キ譚譏ッ魍シ<EFBFBD><EFBFBD>螳樒函閠御クコ鮴吶€ゆケ滓怏逧<EFBFBD>函閠御クコ魍シ閧峨€ゆケ溯ァソ<EFBFBD>ス霑千噪魎魍シ<EFBFBD>碁葎陲ォ蜷<EFBFBD>ァ榊ァ謇区早蛻ー豐ウ驥御コ<EFBFBD>€<EFBFBD>荵滓悄蠕<EFBFBD>ソ<EFBFBD>ス霑撰シ悟宵譏ッ豐閠悟キイ縲りッエ襍キ譚霑吝ーア譏ッ莠コ諤ァ蜷ァ縲よ<EFBFBD>荳崎ョィ蜴悟ゥ驕馴<EFBFBD><EFBFBD>御ス<EFBFBD>弍隶ィ蜴悟悪莠コ逧<EFBFBD>ス霑絶€€泌宵譏ッ蝗<EFBFBD>荳コ謌第イ譛牙ス霑千ス<EFBFBD>€<EFBFBD>荵滓怏莠イ莠コ蜥悟ョ<EFBFBD>迚ゥ莨夂函逞<EFBFBD>シ帶<EFBFBD>逵シ逾樔ケ滓玄郤ッ逵溷賦縲りョィ蜴悟<EFBFBD>辟カ蟆丞ァ仙香蟷エ莠<EFBFBD>€りョィ蜴檎噪譖エ譏ッ雜頑擂雜頑キア逧<EFBFBD>裏蜉帶縲りコォ蝨ィ豕貎ュ逧<EFBFBD>ココ譏ッ豐蜉帶ー泌<EFBFBD>髞狗噪蜷ァ縲ゆク画オ噪莠コ逕溷宵莨夊ョゥ荳顔ュ我ココ荳榊ア台ク€鬘セ蜷ァ縲よ<EFBFBD>蝮蝉コ戊ァょ<EFBFBD>ゥ遨ケ譏滓オキ萓晉€逵シ縲ょ庄謌醍握荳榊<EFBFBD>莠募コ輔€るぅ謌大ーア荳榊<EFBFBD>逵区弌譏滉コ<EFBFBD>€ゆク也阜驍荵亥<EFBFBD>御ス<EFBFBD>謌醍噪莉ス縲ょソ倩ョー蝌臥蟆丞ァ仙香蟷エ莠<EFBFBD>€ょ庄霍ッ荳顔恚隗苓セケ逧<EFBFBD>ァ闕ァ蟷募惠謾セA-soul逧<EFBFBD>眠蟷エ闃ら岼<EFBFBD><EFBFBD>霑俶弍讌槫惠驍驥御コ<EFBFBD>€<EFBFBD>譛芽ソ題ァ<EFBFBD>シ御ス<EFBFBD>€サ隗牙セ礼愍逹帛スア蠖ア扈ー扈ー<EFBFBD>碁崟豌疲擂閾ェ螟壼ケエ莉蜑阪€りソ吩クェ蟷ソ蜻贋ス埼撼蟶ク雍オ縲ら悄逧<EFBFBD><EFBFBD>荵滉ク肴弍蟆竣莠<EFBFBD>賦縲よ竃蜿玖ソ伜惠諠ヲ隶ー莉紋サャ逧<EFBFBD>クュ蟄舌€よ劒譎壻サ咲蜿ェ譛芽闘闢ャ陬呻シ<EFBFBD>100鬥匁ュ檎ォ溽霑俶ャ<EFBFBD>€<EFBFBD>ォ邊牙エ蟆丞屬菴謎サ4%蟷エ蛹門榊茜隶蝨ィ蟆乗悽蟄蝉コ<EFBFBD>€よΦ襍キ螂ケ鬥匁眺譌カ邇ゥ2077荳矩ュ荳句セ苓スー霓ー辜育ヨ<EFBFBD><EFBFBD>€霎ケ蜿鯛€懃イ我ク晉煙謾ケ謌先劒鬣ュ莠コ蜷ァ窶昶€懷柱蝌臥迴井ケ仙<EFBFBD>遒鈴ュ窶昶€懷柱荵<EFBFBD>正蜃第擂遒鈴ュ窶昜ク€霎ケ蠢堺ス丞姐窶懷柱雍晄級扈<EFBFBD>級遒鈴ュ窶晉噪蜀イ蜉ィ縲olo萓晉諡芽キィ<EFBFBD>悟盾蝗辣ァ譌ァ逾曚縲りエ晄級諤サ譏ッ蜈ュ霎ケ蠖謌伜<EFBFBD>御ケ<EFBFBD>正蜈サ莠<EFBFBD><EFBFBD>蜷ィ逧<EFBFBD>achi<EFBFBD>檎処荵占ソ俶弍驍荳ェ遑ャ螢ウ霓ッ螯ケ縲ょ<EFBFBD>辟カ蟆丞ァ蝉セ晉蜊冶酔鞫キキ縲ゆサ€荵磯<EFBFBD>蜿假シ梧弍謌第イ霍滉ク雁ケ莉ャ縲ょ沁驥檎Α轣ォ蟷<EFBFBD><EFBFBD>蜈我ク狗噪莠コ辜ュ諠<EFBFBD>嶌諡<EFBFBD>碁亢蠖ア驥檎噪莠コ蜴倶ク区ず蜉ィ縲よ怙莠ョ逧<EFBFBD>慍譁ケ蝌臥蟆丞ァ先オ<EFBFBD>ャ題オキ闊橸シ悟<EFBFBD>蠖ア莉主ケ陲夜龍謨關ス<EFBFBD>悟ワ譏ッ髮ィ螟ゥ闃ア莨櫁スサ譌具シ梧燥譖ウ髣エ豢剃ク区ウェ濶イ逧<EFBFBD>匠縲ょソス辟カ逵シ逹帶怏轤ケ讓邉翫€<EFBFBD>蟆丞ー隸エ<EFBFBD>€懈眠蟷エ螂ス蝠奇シ悟<EFBFBD>辟カ蟆丞ァ舌€€昜ク咲鯵蝌臥蟆丞ァ仙香蟷エ莠<EFBFBD>€ょ香蟷エ驥鯉シ檎鯵霑<EFBFBD>噪豈丈クェ莠コ驛ス蜒丞ケ縲<EFBFBD>
蝟懈ャ辟カ辟カ<EFBFBD>御ク榊刈謗ゥ鬣ー諤サ譏ッ蠕ョ隨醍噪辟カ辟カ<EFBFBD>御ク肴弍螯匁イサ螯ゥ蟐夂噪蜊惹クス闊槫ァャ<EFBFBD>御ク肴弍谿句ソ肴裏諠<EFBFBD>噪蜀キ驟キ蜈ャ荳サ<EFBFBD>悟宵譛臥捩蜊慕コッ辜よシォ逧<EFBFBD>干譬キ隨大ョケ<EFBFBD>御ク榊クヲ蠢ァ莨<EFBFBD>悟唆螯ょ酔騾晞峺閠梧擂逧<EFBFBD>ゥ髯<EFBFBD>ケ矩趣シ碁伜差莠<EFBFBD><EFBFBD><EFBFBD>ク顔噪蠢ァ驛€戊牡逧<EFBFBD>柄蜿題<EFBFBD>ー逹€鄒惹クス逧<EFBFBD>擽陜カ扈難シ悟ョ晉浹闊ャ逧<EFBFBD>曙逵ク荳ュ髫宣嚼豬<EFBFBD>愆荳榊ュ伜惠逧<EFBFBD>樔シ<EFBFBD>悟ーア譏ッ霑呎<EFBFBD>キ蟄千噪辟カ辟カ<EFBFBD>御ク榊刈謗ゥ鬣ー諤サ譏ッ蠕ョ隨醍噪辟カ辟カ<EFBFBD>梧凶譛臥モ貍ォ隨大ョケ逧<EFBFBD>辟カ<EFBFBD>梧凶譛我コ伜商荳榊序逧<EFBFBD>セ惹クス縲りッエ荳榊<EFBFBD><EFBFBD>隗会シ悟唆遏驕灘屏荳コ辟カ辟カ逧<EFBFBD>ャ大ョケ<EFBFBD>悟喧蠑€<EFBFBD><EFBFBD>蜀ー髮ェ逧<EFBFBD>藍霑ケ縲よΦ隕シク蜃コ謇区噛鞫ク辟カ辟カ逧<EFBFBD>書荳晢シ悟庄譏ッ蜊エ蜿ェ閭ス隗ヲ蛻ー蜀ー蜀キ逧<EFBFBD>ャ螻擾シ悟宵譛臥辟カ貂<EFBFBD>セ育噪逵シ逾橸シ御セ晄立譏ッ謌第園辭滓i縲ら辟カ豌ク霑懈ク<EFBFBD>セ育噪迸ウ莉辟カ辜よシォ蜊慕コッ逧<EFBFBD>ャ大ョケ辟カ辟カ莠伜商荳榊序逧<EFBFBD>セ惹クス辟カ辟カ譏ッ謌大髪荳€<EFBFBD>怙辷ア<EFBFBD>辟カ譏ッ謌第怙辷ア逧<EFBFBD>髪荳€縲ら辟カ逧<EFBFBD>万螂ス縲ソォ荵舌€<EFBFBD>埓霑<EFBFBD>€<EFBFBD>柱譌<EFBFBD>蜉ゥ<EFBFBD><EFBFBD>驛ス莠<EFBFBD>ヲよ欠謗鯉シ悟万谺闕芽雌陋狗ウ募柱鮟<EFBFBD><EFBFBD>御クェ諤ァ貂ゥ譟泌処蝟<EFBFBD><EFBFBD>悟庄辷ア菴楢エエ逧<EFBFBD>ウ蟄ゥ蟄撰シ梧怏逹€隸エ荳榊<EFBFBD><EFBFBD>シ倡せ<EFBFBD><EFBFBD>諠ウ辟カ辟カ荳€螳壽弍荳雁ゥ襍蝉コ域<EFBFBD>€螂ス逧<EFBFBD>シ迚ゥ縲<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>恚蜿区怏蠕亥夲シ御ス丞惠荳懆セケ逧<EFBFBD>ー城アシ<EFBFBD>御ス丞惠蜊苓セケ逧<EFBFBD>ー城ケソ<EFBFBD>御ス丞惠隘ソ霎ケ逧<EFBFBD>擽陜カ<EFBFBD>御ス丞惠蛹苓セケ逧<EFBFBD>ー城ク溘€ゆサ紋サャ蟶ヲ鮠<EFBFBD><EFBFBD>蝨ィ阡夊統濶イ逧<EFBFBD>キア豬キ驥御ク取ーエ豈榊<EFBFBD>貂ク<EFBFBD>悟惠遒ァ扈ソ逧<EFBFBD>コ矩ケソ譽ョ譫鈴蝟晄ク<EFBFBD>勣逧<EFBFBD>愆豌エ<EFBFBD>悟惠辜ュ髣ケ逧<EFBFBD>岑譫鈴遨ソ譴ュ邇ゥ閠搾シ悟惠蟷ソ陲<EFBFBD>ゥ遨コ荳ュ閧<EFBFBD>э鬟樒ソ斐€るシ<EFBFBD><EFBFBD>菴丞惠轣ッ轣ォ髦醍所逧<EFBFBD>沁蟶ゑシ悟庄鮠<EFBFBD><EFBFBD>驕楢ソ咎譛我ク€<EFBFBD>ア樔コ朱シ<EFBFBD><EFBFBD><EFBFBD>碁シ<EFBFBD><EFBFBD>遨ソ霑<EFBFBD>キ晄オク肴<EFBFBD><EFBFBD><EFBFBD>檎汲螂皮捩蝗槫芦閾ェ蟾ア髦エ貉ソ鮟第囓逧<EFBFBD>ク区ーエ驕難シ悟シコ辜育噪閾ェ蜊台ケ区ュ隶ゥ鮠<EFBFBD><EFBFBD><EFBFBD>豕募他蜷ク<EFBFBD>碁シ<EFBFBD><EFBFBD>萓晞擒蝨ィ荳区ーエ驕鍋シ晞囮霎ケ<EFBFBD>悟屏荳コ蝌臥蟆丞ァ先€サ莨夊キッ霑<EFBFBD>ソ咎縲り拷闔灘刈螂カ豐ケ蜉<EFBFBD>闃ア鬥呻シ梧弍蝌臥蟆丞ァ千噪蜻ウ驕薙€朱塔蜉<EFBFBD>逅エ蜉<EFBFBD>螂カ邉厄シ梧弍蝌臥蟆丞ァ千噪螢ー髻ウ縲り鰍螂丞刈髻ウ荵仙刈蠢ォ荵撰シ梧弍蝌臥蟆丞ァ千噪閼壽ュ縲や€ケ譚<EFBFBD>€晢シ碁シ<EFBFBD><EFBFBD><EFBFBD>エ蟆丞ソ<EFBFBD>慍謗蜃コ郛晞囮<EFBFBD><EFBFBD>辟カ蟆丞ァ仙セ<EFBFBD>峩襍ー霑<EFBFBD>牲髣ケ逧<EFBFBD>ココ鄒<EFBFBD>梧擂蛻ー荳区ーエ驕鍋シ晞囮霎ケ<EFBFBD>檎ォッ逹€闕芽雌陋狗ウ包シ檎シ鍋シ捺叛蝨ィ豢槫哨<EFBFBD>御ク€髦オ鬟朱塔莨シ逧<EFBFBD>ー髻ウ蜩崎オキ窶懷<EFBFBD><EFBFBD>ウ厄シ梧擂蜷<EFBFBD>辟カ逧<EFBFBD>拷闔楢寞邉募制縲や€<EFBFBD>辟カ蟆丞ァ先クゥ譟皮噪逵狗捩螳<EFBFBD>シ碁シ<EFBFBD><EFBFBD>荳咲衍荳コ菴慕ェク倶コ<EFBFBD>愍豕ェ<EFBFBD>梧裏豕墓謙蜉ィ閼壽ュ縲ょ<EFBFBD>辟カ蟆丞ァ仙ス蜒丞セ亥ア關ス<EFBFBD>檎怏螟エ霓サ霓サ逧ア襍キ<EFBFBD>€應ス<EFBFBD>荳榊万谺辟カ辟カ蜷冷€ヲ窶ヲ窶晢シ碁シ<EFBFBD><EFBFBD>蠢呵セゥ隗<EFBFBD>悟庄諞狗コ<EFBFBD>€隸昜ケ溯ッエ荳榊<EFBFBD><EFBFBD>€懃賢蜥ェ蟾イ扈剰ォ辟カ辟カ蜈ウ蝨ィ隨シ蟄宣<EFBFBD>シ悟<EFBFBD><EFBFBD>ウ紋ク咲畑螳ウ諤包シ€<EFBFBD>辟カ蟆丞ァ仙<EFBFBD><EFBFBD>噪逵狗捩鮠<EFBFBD><EFBFBD><EFBFBD>碁シ<EFBFBD><EFBFBD>莨シ荵手ヲココ莠蝨ィ螂ケ阡夊統濶イ逧<EFBFBD>曙逵ク驥鯉シ梧<EFBFBD>襍ー蜷鷹ぅ蝮苓拷闔楢寞邉包シ悟ー丞哨蜩ー晉捩縲ょ<EFBFBD>辟カ蟆丞ァ蝉シク蜃コ蟆丞ー冗噪謇具シ御シシ荵取Φ謐ァ襍キ鮠<EFBFBD><EFBFBD>縲るシ<EFBFBD><EFBFBD>螂ス蜒剰ォ髮キ蜃サ荳ュ荳€闊ャ<EFBFBD>檎憲辟カ霍ウ襍キ<EFBFBD>泌屓荳区ーエ驕難シ悟ョ<EFBFBD>蕎蜻ス蝟顔捩<EFBFBD>€<EFBFBD>蜿郁э蜿郁<EFBFBD>霑伜セ井ク鷹刹<EFBFBD><EFBFBD>辟カ蟆丞ァ蝉ク堺シ壼万谺謌醍噪<EFBFBD><EFBFBD>辟カ蟆丞ァ蝉ク堺シ壼万谺謌醍噪<EFBFBD>€<EFBFBD>辟カ蟆丞ァ占ィ諠<EFBFBD>ォ句綾霓ャ荳コ荳<EFBFBD>シ瑚ョ逵溽噪逵狗捩鮠<EFBFBD><EFBFBD>驕凪€<EFBFBD>荳崎ョク菴<EFBFBD>霑吩ケ郁ッエ閾ェ蟾ア<EFBFBD>€ケ逧<EFBFBD>愍荳ュ螂ス蜒丈ケ溽寤貊<EFBFBD>ウェ豌エ窶懈<EFBFBD>莉ャ蝌牙ソ<EFBFBD>ウ問€ヲ驛ス譏ッ蠕亥脂螳ウ逧<EFBFBD>ココ<EFBFBD><EFBFBD>
<EFBFBD>"<EFBFBD>正蟾イ扈丞惠蜥檎塙蜿倶コ€<EFBFBD>€るぅ譏ッ蜈ュ譛井ク区流逧<EFBFBD>€螟ゥ<EFBFBD>御ケ<EFBFBD>正蛻壼<EFBFBD>扈捺據驍螟ゥ逧<EFBFBD>黒莠コ逶エ謦ュ蝗槫芦螳カ<EFBFBD>梧ュ蝮仙惠螳<EFBFBD>噪豐吝書荳奇シ悟<EFBFBD>辟カ蟆ア謚贋ク€荳ェ蟷ウ譚ソ謗ィ蛻ー螂ケ閼ク荳翫€€應ケ<EFBFBD>正荵<EFBFBD><EFBFBD>御ス<EFBFBD>逵玖ソ吩クェ邊我ク晢シ御サ門ス蝪槫<EFBFBD>隘ソ蜩ヲ<EFBFBD>€晁ァ<EFBFBD>譏ッ荳€荳ェ螂ケ逧<EFBFBD>塙邊会シ御ソ顔ァ€<EFBFBD>蠎槫柱蛛遑慕噪霄ォ菴謎ク願ソ俶撃逹€蛻壼<EFBFBD>莉取ウウ豎<EFBFBD>蟶ヲ蜃コ譚<EFBFBD>ア玲カイ荳取ーエ迴<EFBFBD><EFBFBD>悟亢驥悟唆隸エ逹€莠帛<EFBFBD><EFBFBD>€ェ諤ェ逧<EFBFBD>侠隸昴€ゆケ<EFBFBD>正諢溯ァ牙芦閾ェ蟾ア逧<EFBFBD>ソ<EFBFBD>シヲ陲ォ諡ィ蜉ィ莠<EFBFBD>€荳具シ檎尠蝨ィ豈帶ッッ荳倶ク咲捩蜃臥噪螟ァ閻ソ<EFBFBD><EFBFBD>諢溯ァ牙芦莠<EFBFBD><EFBFBD><EFBFBD><EFBFBD>辜ュ縲や€懆ョゥ謌台ケ溽恚逵具シ瑚ョゥ謌台ケ溽恚逵銀€€泌島<EFBFBD>悟島<EFBFBD>御サ紋サ紋サ問€ヲ窶ヲ窶晏髄譎壻サ取イ吝書蜷朱擇謚願я陲区爾蜃コ譚<EFBFBD>御ク堺ク€莨壼<EFBFBD>蟆ア隸エ荳榊<EFBFBD>隸昜コ<EFBFBD>€€應ケ<EFBFBD>€ク亥次譚蝟懈ャ霑咏ァ肴ャセ蠑冗噪蝠奇シ瑚ヲク搾シ悟ァ蝉サャ蜆ソ蟶ョ菴<EFBFBD>謇セ謇セ閨皮ウサ譁ケ蠑擾シ溪€晉処荵仙惠荳€<EFBFBD>€苓カ縲や€應ス<EFBFBD>蛻ォ迸手ッエ<EFBFBD>悟屓謌ソ髣エ髯ェ菴<EFBFBD><EFBFBD>エ晄級蜴サ<EFBFBD>€昜ケ<EFBFBD>正荳区э隸<EFBFBD>慍謚頑イ吝書荳顔噪謚ア譫墓鉛蜷醍処荵撰シ悟唆陲ォ螂ケ霓サ蟾ァ蝨ー霄イ蠑€<EFBFBD>€りソ<EFBFBD><EFBFBD><EFBFBD>螟ゥ<EFBFBD>悟ー丈ク€逾樒樒ァ倡ァ伜慍謚贋ケ<EFBFBD>正蜿ォ蛻ー莠<EFBFBD><EFBFBD>蜿ク闌カ豌エ髣エ<EFBFBD>梧滑謇区惻螻丞ケ穂ク顔噪荳€荳ェ莠檎サエ遐コョ扈吩ケ<EFBFBD>正逵九€€懷葎<EFBFBD>悟悪諡<EFBFBD>ソ<EFBFBD>悪諡<EFBFBD>ソ<EFBFBD>シ瑚ソ吩ココ謌台サャ隹<EFBFBD>衍霑<EFBFBD>シ御サ紋ク肴弍荳ェ莨夊ッエ貍丞亢逧<EFBFBD>ココ縲ょ万谺<EFBFBD>ッ晏悉蜥御サ冶ァ€蜻励€€晉ャャ莠悟<EFBFBD>御ケ<EFBFBD>正蜥碁ぅ菴咲塙邊芽ァ<EFBFBD>擇莠<EFBFBD>€ゆサ匁悽莠コ豈碑ァ<EFBFBD>譖エ蜉<EFBFBD><EFBFBD>ー費シ碁ォ伜ァ逧<EFBFBD>コォ霄ッ諤サ譏ッ閭ス扈吩ケ<EFBFBD>正蟶ヲ譚闔ォ螟ァ逧<EFBFBD>ョ牙<EFBFBD>諢溘€€應ス<EFBFBD>螂ス<EFBFBD>檎視濶セ逅ウ蟆丞ァ舌€€昜サ也噪蠕ョ隨題ョゥ荵<EFBFBD>正隗牙セ怜捉蝗エ逧<EFBFBD>取勹蜈ィ驛ス隍ェ濶イ莠<EFBFBD>€ゆケ<EFBFBD>正莉取擂豐譛画署襍キ霑<EFBFBD><EFBFBD>蟾ア菴應クコasoul謌仙遭逧<EFBFBD>コ区ュ<EFBFBD>御サ紋ケ滉サ取擂豐譛蛾琉襍キ霑<EFBFBD>ササ菴病soul逧<EFBFBD>コ区ュ窶披€€懃視濶セ逅ウ窶晄弍蟆丈ク€荳コ螂ケ蜃<EFBFBD><EFBFBD>噪蛹門錐縲ゆコ句ョ樔ク奇シ悟ケ荳肴ク<EFBFBD>壼ッケ譁ケ譏ッ蜷ヲ遏驕難シ瑚<EFBFBD>蟾ア蟆ア譏ッ莉紋ク€逶エ蝟懈ャ<EFBFBD>ぅ荳ェ蛛カ蜒上€ゆコ€譌カ髣エ雜贋ケ<EFBFBD>シ御ケ<EFBFBD>正蜿醍鴫莉冶コォ荳顔噪莨倡せ雜雁€ゆサ匁弍阯豈穂ク夂噪豬キ蠖帝ォ俶攝逕溘€ゆサ匁ュ蝨ィ閾ェ蟾ア蛻帑ク夲シ瑚€御ク疲噺闔キ鬚<EFBFBD>クー縲ゆサ也噪荳セ謇区兜雜ウ荵矩龍蜈<EFBFBD><EFBFBD><EFBFBD>ォ鬟主コヲ縲ゆサ門香蛻<EFBFBD>ク捺ュ<EFBFBD>€サ譏ッ蜥悟捉蝗エ逧<EFBFBD>ウ諤ァ菫晄戟莠<EFBFBD>キ晉ヲサ縲ゆサ匁クゥ譟比ス楢エエ<EFBFBD>悟クク蟶ク蝨ィ逕滓エサ荳ュ蛻幃€<EFBFBD>諢乗Φ荳榊芦逧<EFBFBD>ー乗リ蝟懌€ヲ窶ヲ逕夊<EFBFBD>譏ッ蝨ィ蠎顔ャォ荵矩龍<EFBFBD>御サ紋ケ滓€サ譏ッ閭ス隶ゥ荵<EFBFBD>正谺イ莉呎ャイ豁サ縲ら閠鯉シ御ケ滓ュ<EFBFBD>荳コ霑呎<EFBFBD><EFBFBD>御ケ<EFBFBD>正譌カ蟶ク髯キ蜈蛻ー荳€髦オ荳€髦オ蜀<EFBFBD>繭荳ュ縲ょ屏荳コ螂ケ霑俶怏荳€荳ェ隹ケ滉ク咲衍驕鍋噪蟆冗ァ伜ッ<EFBFBD>€ゆケ<EFBFBD>正荳榊ワ雍晄級蜥檎処荵蝉ク€譬キ<EFBFBD>梧弍荳謎ク夂噪扈<EFBFBD><EFBFBD>逕滂シ御ケ滉ク榊ワ蝌臥譬キ譏ッ螟ゥ逕溽噪陌壽供蛛カ蜒擾シ梧峩豐譛牙髄譎夐ぅ遘榊<EFBFBD>菴懃噪謇榊克縲ょス灘<EFBFBD>蜿ェ譏ッ謇倅コ<EFBFBD>ョカ驥檎噪蜈ウ邉サ<EFBFBD>梧擂蜈ャ蜿ク驥檎噪貂<EFBFBD>ーエ驛ィ髣ィ謇セ莉ス蟾菴懆€悟キイ縲ゆス<EFBFBD>ケ滉ク咲衍驕捺弍荳ュ莠<EFBFBD>€荵磯が<EFBFBD>ケ蛛キ蛛キ謚蜷榊盾蜉<EFBFBD><EFBFBD>roject V逧<EFBFBD>€画卿隶蛻抵シ瑚ソ倬亢蟾ョ髦ウ髞吝慍謌蝉クコ莠<EFBFBD><EFBFBD>蜒丞ウ蝗<EFBFBD>€蜻倥€ゆケ<EFBFBD>正證苓<EFBFBD>蜿題ェ難シ梧里辟カ閾ェ蟾ア豐譛我サ€荵亥罰霍ウ蠎募ュ撰シ碁ぅ荵郁<EFBFBD>蟆題ヲョゥ窶懈ウ募ュヲ逕溪€晁ソ吩クェ隶セ螳壼序蠕怜ョ櫁<EFBFBD>蜷榊ス抵シ瑚ヲ畑謌千<EFBFBD>諤ァ逧<EFBFBD><EFBFBD>鴨蜴サ蠕恪隗ゆシ励€ょ屏豁<EFBFBD>梧ッ丞芦豐譛芽ョュ扈<EFBFBD>柱逶エ謦ュ譌遞狗噪譌カ蛟呻シ悟ケ諤サ譏ッ莨壼芦蝗セ荵ヲ鬥<EFBFBD>€蝮仙ーア譏ッ蜃<EFBFBD>荳ェ蟆乗慮縲ゆス<EFBFBD>弍蝨ィ譛€霑大<EFBFBD>蜻ィ<EFBFBD>御ケ<EFBFBD>正豈乗ャ蝨ィ髦<EFBFBD>ッサ蛹コ驥梧伽菴榊ュ仙攝荳区慮<EFBFBD>悟ソ<EFBFBD>螟エ諤サ譛我ク€莠帛悪逧<EFBFBD>悄蠕<EFBFBD>€ケ隶ー蠕暦シ悟惠髦<EFBFBD>ッサ蛹コ逧<EFBFBD>€隗抵シ梧€サ閭ス逵句芦荳€荳ェ逖ヲ逖ヲ逧<EFBFBD>€ュヲ逕滓ィ譬キ逧<EFBFBD>ー大ケエ<EFBFBD>御サ紋サ取掠蛻ー譎壼ーア謚雁エ蝓句惠蜷<EFBFBD>ァ肴ウ募ュヲ逅<EFBFBD>ョコ逧<EFBFBD>ケヲ蝣<EFBFBD>縲ゆク€€蟋具シ御ケ<EFBFBD>正蜿ェ譏ッ蟇ケ蜷梧<EFBFBD>キ遐碑ッサ豕募ュヲ譁<EFBFBD>鍵逧<EFBFBD>ココ譛臥ァ堺コイ霑第縲ゆス<EFBFBD>弍逶エ蛻ー譟蝉ク€螟ゥ<EFBFBD>悟ー大ケエ謚雁エ莉惹ケヲ蝣<EFBFBD>謚ャ莠<EFBFBD>オキ譚<EFBFBD>瑚闘荵ア逧<EFBFBD>エ蜿鷹<EFBFBD>菴丈コ<EFBFBD>濠蠑<EFBFBD>逋ス蜃€<EFBFBD>蠎橸シ御ス<EFBFBD>セ晉閭ス逵句芦莉門ッケ逹€逕オ閼大ア丞ケ慕龍逞エ蝨ー隨台コ<EFBFBD>€ゆサ也ャ大セ礼悄蜿ッ辷ア蝠翫€ゆケ<EFBFBD>正謔<EFBFBD>d蝨ー扈募芦莉冶コォ蜷趣シ檎鳩閼大ア丞ケ墓ュ蝨ィ謦ュ謾セ逧<EFBFBD>譏ッ螂ケ辭滓i蝨ー荳崎<EFBFBD>蜀咲<EFBFBD>謔臥噪縲<EFBFBD>蟾ア逧<EFBFBD>懆ー育判髱縲りソ俶怏荳€螟ゥ<EFBFBD>悟ー大ケエ遯荳セ襍キ荳€蜿ェ謇具シ御シク蜃コ菫ョ髟ソ逧<EFBFBD>焔謖<EFBFBD>ッケ逹€逕オ閼大ア丞ケ輔€り區辟カ逵倶ク榊芦螻丞ケ暮<EFBFBD>判髱<EFBFBD>御ス<EFBFBD>弍荵<EFBFBD>正隗牙セ暦シ悟ス捺慮蟆ア豁蝮仙惠髫泌噪閾ェ蟾ア<EFBFBD>御ク€螳壽サ閼ク騾夂コ縲よ囁蛛<EFBFBD>キイ扈丞ソォ霑<EFBFBD>悉莠<EFBFBD>シ御ケ<EFBFBD>正霍大崟荵ヲ鬥<EFBFBD>噪鬚醍紫蜊エ雜頑擂雜企ォ倅コ<EFBFBD>€ケ螳ウ諤募シ€蟄ヲ逧<EFBFBD>律譛溷ーア蜒丞漉逑憺ゥャ霓ヲ逧<EFBFBD>慮髯蝉ク€譬キ<EFBFBD>瑚ョゥ螂ケ蜀堺ケ溯ァク榊芦驍荳ェ逖ヲ逖ヲ逧<EFBFBD>コォ蠖ア縲ょケク螂ス<EFBFBD>瑚ソ吩ク€螟ゥ逧<EFBFBD>ー大ケエ萓晉蝮仙惠髦<EFBFBD>ッサ蛹コ逧<EFBFBD>ァ定誠驥後€ゆケ<EFBFBD>正逕夊<EFBFBD>蠢倩ョー莠<EFBFBD>響譛ャ荵ヲ謖€荳玖<EFBFBD>蟾ア逧<EFBFBD><EFBFBD>コソ窶披€ケ蜥悟ー大ケエ逧<EFBFBD><EFBFBD>コソ莠莨壻コ<EFBFBD>€ケ逧<EFBFBD>ソ<EFBFBD>ス蜒剰ヲキウ蜃コ譚€闊ャ<EFBFBD>ケ諠ウ邇ー蝨ィ蟆ア蜴サ蜻願ッ我サ門<EFBFBD>莠手<EFBFBD>蟾ア逧<EFBFBD>€<EFBFBD>シ悟ケ諠ウ邇ー蝨ィ蟆ア謚雁ー大ケエ謚ア霑幄<EFBFBD>蟾ア逧<EFBFBD>€€驥鯉シ梧クゥ譟泌慍鞫ゥ謖イ莉紋ケア闢ャ闢ャ逧<EFBFBD>書荳昴€€懆伽逅ウ<EFBFBD>御ス<EFBFBD>蝨ィ霑吝<EFBFBD>蝠奇シ御サ雁ゥ荳狗少譌ゥ<EFBFBD><EFBFBD>諠ウ譚<EFBFBD>蝗槫悉縲や€晏ーア蝨ィ霑呎慮<EFBFBD><EFBFBD>謔臥噪螢ー髻ウ貂ゥ譟泌慍諡堺コ<EFBFBD>牛螂ケ逧<EFBFBD>か閹€縲ゆケ<EFBFBD>正蝗櫁ソ<EFBFBD>エ蜴サ<EFBFBD>檎塙蜿狗噪隨大ョケ萓晉閭ス隶ゥ蜻ィ蝗エ逧<EFBFBD>勹濶イ螟ア蜴サ蜈牙スゥ窶披€<EFBFBD>隶ク髯<EFBFBD><EFBFBD>隸サ蛹コ逧<EFBFBD>ぅ荳€隗偵€<EFBFBD>
<EFBFBD>
6<EFBFBD>9螟ゥ逧<EFBFBD>劒荳奇シ御ケ<EFBFBD>正蝗槫芦莠<EFBFBD><EFBFBD>蟾ア謌ソ髣エ驥鯉シ梧遠蠑€<EFBFBD><EFBFBD>謔臥噪蜿ー逅<EFBFBD>ョコ蝮帙€りソ伜<EFBFBD>瑚エヲ蜿キ霑俶イ陲ォ蟆€ょ惠A-SOUL隶ィ隶コ荳捺シ驥御セ晉<EFBFBD>€<EFBFBD>ァ崎セゥ扈擾シ御ケ<EFBFBD>正諢溷芦荳€螟ゥ荳区擂逧<EFBFBD>樒サ冗エァ蠑<EFBFBD>蜥檎夢諠ォ譖エ蜉<EFBFBD>譏取仞莠<EFBFBD>€らコ髟ソ逧<EFBFBD>焔謖<EFBFBD>惠豬キ逶苓飴K95荳贋ク肴妙霍ウ霍<EFBFBD>シ悟屓螟肴<EFBFBD><EFBFBD>ュ怜壼セ怜ス蜒剰ヲシォ蜃コ譚莨シ逧<EFBFBD>€ゆス<EFBFBD><EFBFBD>悟ーア蠖馴シ<EFBFBD><EFBFBD>欠髓郁ソ俶イ譛芽ヲ欠蜷鯛€懷書陦ィ蝗槫€晉噪謖蛾醗譌カ<EFBFBD>ケ蟆ア謖我ス丈コ<EFBFBD>唖髯髞ョ縲ゆケ<EFBFBD>正貂<EFBFBD>壼慍遏驕難シ悟ケ譏ッ蛛カ蜒冗噪荳ュ荵倶ココ<EFBFBD>ケ荳崎<EFBFBD>隸エ霑吩コ幄ッ昴€ゆコ取弍<EFBFBD>檎岼蜈臥サァ扈ュ蝨ィ荳€逋セ螟夐オ逧<EFBFBD><EFBFBD>菴吩ソ諱ッ遘堺ク肴妙霍ウ蜉ィ<EFBFBD>檎サ井コ趣シ碁シ<EFBFBD><EFBFBD>サ夊スョ蝨ィ荳€荳ェ螟エ蜒丞燕蛛應コ<EFBFBD>ク区擂縲るサ第シ<EFBFBD><EFBFBD>噪謌ソ髣エ驥悟宵譛臥鳩閼大ア丞ケ慕噪闕ァ蜈臥<EFBFBD>莠ョ逹€<EFBFBD>正遘€荳ス逧<EFBFBD>擇螳ケ縲ょケ雜エ蝨ィ譯悟ュ蝉ク奇シ梧滑蜊贋クェ閼ク蠎槫沂蝨ィ閾ェ蟾ア逧<EFBFBD>蠑ッ驥鯉シ檎龍逞エ蝨ー譛帷捩驍荳ェ螟エ蜒上€€應ス<EFBFBD>驕灘雛<EFBFBD><EFBFBD>莉雁ゥ逵溽噪雜<EFBFBD>コァ邏ァ蠑<EFBFBD>縲や€€懈眺逧<EFBFBD>慮蛟吩ク€逶エ蝨ィ諠ウ菴<EFBFBD>莨壻ク堺シ壽擂逵区<EFBFBD>縲や€€懈Φ遏驕謎ス<EFBFBD>蝨ィ逵具シ御ケ滓怏轤ケ荳肴Φ隶ゥ菴<EFBFBD>逵銀€ヲ窶ヲ窶晉ェ<EFBFBD>御ケ<EFBFBD>正蝮千峩莠<EFBFBD>コォ蟄撰シ梧滑蜿ウ謇狗噪鬟滓欠莨ク蜷台コ<EFBFBD>ア丞ケ輔€€懈擂<EFBFBD>悟ッケ荳ェ謇区欠<EFBFBD>€昜ス<EFBFBD>弍髱呎€噪螟エ蜒丞崟迚<EFBFBD>譛臥サ吝ケ莉サ菴募屓蠎費シ悟宵譏ッ荳€螯よ里蠕€蝨ー蛛懃蕗蝨ィ螻丞ケ慕噪驍€隗偵€ゆケ<EFBFBD>正閾ェ蝌イ謳ャ蝨ー隨台コ<EFBFBD>シ悟処謚雁エ蝓玖ソ帑コ<EFBFBD>蠑ッ驥後€ら擅諢乗ク先ク占ュ譚<EFBFBD><EFBFBD>荳肴ク<EFBFBD>ソ呎弍螂ケ蜊頑ヲ蜊企<EFBFBD>荵矩龍逧<EFBFBD>蒼隸ュ霑俶弍逵溷<EFBFBD><EFBFBD>悄譛幢シ壺€懷そ逑懶シ梧<EFBFBD>€逶エ蟆ア蝨ィ霑咎蝠奇シ悟ソォ轤ケ譚謇セ蛻ー謌大賦窶ヲ窶ヲ窶<EFBFBD>
蜈ウ莠守民迢らサ<EFBFBD><EFBFBD><EFBFBD>檎鴫蝨ィ霑呎弍蝗ス蜀<EFBFBD>噪荳€荳ェ蠕育Ο髣ィ逧<EFBFBD>ッ晞假シ悟セ亥ウ蝗驛ス譛芽ソ吩クェ髣ョ鬚倥€<EFBFBD>荳ェ莠コ隶荳コ<EFBFBD><EFBFBD>逍ッ迢らサ<EFBFBD><EFBFBD>譏ッ荳€遘榊キィ螟ァ逧<EFBFBD>ヲ乗ー費シ悟セ亥ウ蝗セ亥壻ココ諠ウ逍ッ迢らサ<EFBFBD><EFBFBD>驛ス豐譛画惻莨壹€ょヲよ棡菴<EFBFBD>蟷エ霓サ逧<EFBFBD>慮蛟吩ク咲民迢らサ<EFBFBD><EFBFBD><EFBFBD>御ス<EFBFBD>€荵域慮蛟吝庄莉逍ッ迢らサ<EFBFBD><EFBFBD><EFBFBD>滉ス<EFBFBD>€霎亥ュ先イ譛臥民迢らサ<EFBFBD><EFBFBD><EFBFBD>御ス<EFBFBD>隗牙セ嶺ス<EFBFBD>蟆ア蠕磯ェ<EFBFBD>ご莠<EFBFBD>シ溯ソ吩クェ荳也阜荳奇シ梧<EFBFBD>莉ャ豈丈ク€荳ェ莠コ驛ス蟶梧悍謌仙粥<EFBFBD><EFBFBD>蟶梧悍鄒主ス逕滓エサ<EFBFBD><EFBFBD>蟶梧悍陲ォ蟆企<EFBFBD><EFBFBD>隸キ髣ョ螟ァ螳カ<EFBFBD>御ス<EFBFBD>荳堺サ伜<EFBFBD><EFBFBD>カ雁悪莠コ逧<EFBFBD>巻蜉帛柱譌カ髣エ<EFBFBD>御ス<EFBFBD>諤惹ケ郁<EFBFBD>螟溷ョ樒鴫菴<EFBFBD>諠ウ隕噪謌仙粥<EFBFBD><EFBFBD>€荳ェ<EFBFBD>-SOUL譏ッ荳€荳ェ莉€荵域<EFBFBD>キ逧<EFBFBD>ウ蝗<EFBFBD>溯ョゥA-SOUL窶懆ョゥ螟ゥ荳区イ譛蛾埓蜿醍噪逞<EFBFBD>€晢シ瑚ソ呎弍謌台サャ逧<EFBFBD>スソ蜻ス<EFBFBD><EFBFBD>莉ャ螂ウ蝗蠕郁セ幄協<EFBFBD><EFBFBD>莉ャ豐譛蛾ェ苓ソ<EFBFBD>ァ螳カ<EFBFBD><EFBFBD>莉ャ豐譛芽キ溷ァ螳カ隶イ霑<EFBFBD>ウ蝗蠕郁<EFBFBD>譛阪€ゆス<EFBFBD>荳コ窶懆ョゥ螟ゥ荳区イ譛蛾埓蜿醍噪逞<EFBFBD>€晄弍蠢ス謔<EFBFBD><EFBFBD>莉ャ<EFBFBD><EFBFBD>莉ャ譏ッ逵溯ソ吩ケ亥ケイ逧<EFBFBD>€ゆサ雁ゥ謌台サャ諡譛芽ソ吩ケ亥夊オ<EFBFBD>コ撰シ梧<EFBFBD>莉ャ蟶ヲ逹€蟾ィ螟ァ逧<EFBFBD>スソ蜻ス<EFBFBD>悟ク梧悍蝨ィ譛ェ譚閭ス螟溯ョゥ螟ゥ荳区イ譛蛾埓蜿醍噪逞<EFBFBD>シ御ス<EFBFBD>荳堺サ伜<EFBFBD>蜿ッ莉蜷暦シ滉ク榊庄莉縲よ園莉謌台サャ隸エ<EFBFBD>悟刈蜈A-SOUL<EFBFBD>御ス<EFBFBD>螂ス蜃<EFBFBD><EFBFBD>€螟ゥ12荳ェ蟆乗慮<EFBFBD>悟凄蛻吩ス<EFBFBD>A-SOUL蟷イ莉€荵茨シ滓<EFBFBD>莉ャ荳咲シコ驕幄<EFBFBD>蟾ア辷ア豢玲セ<EFBFBD>ココ縲ゆサ雁ゥ謌台サャ隕魚荳€莠帛壕逹<EFBFBD>ソ<EFBFBD>香蛻<EFBFBD><EFBFBD>梧ッ丞ゥ荳雁ゥ蜿ー驕幄<EFBFBD>蟾ア40蛻<EFBFBD><EFBFBD>悟万谺豢玲セ<EFBFBD>悟帥豕荳埼漠<EFBFBD><EFBFBD>蜴サ闕隱画荵滉ク埼漠<EFBFBD>瑚ソ呎<EFBFBD>キ逧<EFBFBD>ココ貊螟ァ陦苓<EFBFBD>謇セ蛻ー縲<EFBFBD>
蝌臥蟆丞ァ蝉サ雁ゥ50w邊我コ<EFBFBD>€ょー丞ケエ螟憺ぅ螟ゥ豐莠コ莨壽Φ蛻ー莉雁ゥ髣ィ蠎ュ蜑堺シ壽怏驍荵亥夂噪辜ュ髣ケ縲ょェ辜ュ髣ケ莠<EFBFBD>シ檎Ο髣ケ蛻ー鮠<EFBFBD><EFBFBD>雕ョ襍キ莠<EFBFBD><EFBFBD>荵滄埓莉陲ォ蝌臥蟆丞ァ千噪逶ョ蜈画園閨夂縲ょ<EFBFBD>辟カ蟆丞ァ仙キイ扈丈ク榊<EFBFBD>譏ッ蟆竣蝠ヲ<EFBFBD>碁シ<EFBFBD><EFBFBD>諠ウ縲ゆス<EFBFBD><EFBFBD><EFBFBD>莉咲螂句鴨蝨ー蟆<EFBFBD><EFBFBD>蟾ア蝨ー遉シ迚ゥ荳セ襍キ<EFBFBD>悟ク梧悍陲ォ蝌臥蟆丞ァ千恚隗<EFBFBD>シ悟頭諤暮ぅ蟆唖蛻<EFBFBD>謾ケ謾ケ蜷惹サ堺ク肴サ諢冗噪<EFBFBD><EFBFBD><EFBFBD>ス螟壼ュ礼噪髟ソ菫<EFBFBD><EFBFBD>ケ譛ャ荳榊ヲら賢迪ォ迢礼距莉ャ邊セ蠖ゥ逧<EFBFBD>ィ貍斐€ゆス<EFBFBD><EFBFBD><EFBFBD>霑俶弍諠ウ蟆<EFBFBD><EFBFBD>蟾ア驍€髯狗噪辷ア騾サ吝<EFBFBD>辟カ蟆丞ァ舌€るぅ譏ッ鮠<EFBFBD><EFBFBD><EFBFBD>造蝟<EFBFBD>シ梧弍鮠<EFBFBD><EFBFBD><EFBFBD>ヲ縲ょ頭諤募<EFBFBD>辟カ蟆丞ァ先<EFBFBD>ケ譛ャ逵倶ク崎ァ<EFBFBD>€蜷朱シ<EFBFBD><EFBFBD>荳崎ァ<EFBFBD>シ悟<EFBFBD>辟カ蟆丞ァ先伽荳榊芦螳<EFBFBD><EFBFBD>€ゆス<EFBFBD>惠譟蝉クェ蝨ー譁ケ<EFBFBD>悟ァ狗サ域怏逹€€荳ェ蜿ッ辷ア逧<EFBFBD>ウ蟄ゥ縲ょケ謐ァ逹€<EFBFBD><EFBFBD>ー丞ー冗噪菫<EFBFBD>檎ォ吝惠螟ァ螟ァ逧<EFBFBD><EFBFBD>蜿ー荳企略髣ェ蜿大<EFBFBD>縲ょ芦莠<EFBFBD>ぅ荳ェ譌カ蛟呻シ碁シ<EFBFBD><EFBFBD>蟾イ扈丞惠莠コ豬キ荳ュ<EFBFBD><EFBFBD>荵溽恚荳崎ァ<EFBFBD>沸縲ゆス<EFBFBD><EFBFBD><EFBFBD>霑俶弍蠕育鯵蝌臥蟆丞ァ舌€ょ屏荳コ蝨ィ譛画怦蜈臥<EFBFBD>霑帷噪隗定誠驥鯉シ悟<EFBFBD>辟カ蟆丞ァ先懇逹€<EFBFBD><EFBFBD><EFBFBD>ヲ縲<EFBFBD>
<EFBFBD> 蜿ッ譏ッ閾ェ莉主柱譎壽劒扈灘ゥ夐ぅ螟ゥ蠎贋ク倶シ<EFBFBD><EFBFBD>€螢ー窶懈<EFBFBD>蝨ィ窶晢シ御コ区ュ蟆ア蜿伜セ嶺ク榊庄謾カ諡セ襍キ譚<EFBFBD>ッ丈クェ譛育噪隨ャ荳我クェ蜻ィ譌<EFBFBD>御ケ<EFBFBD>正驛ス莨壼将謌大<EFBFBD>蜴サ髯ェ螂ケ騾幄暦シ梧<EFBFBD>諠ウ逹€霑呎<EFBFBD>キ蟇ケ譎壽劒荳榊<EFBFBD>悟庄荵<EFBFBD>正窶懷鴇窶昜ク€荳区<EFBFBD>蟆ア莉ソ菴帛ア蜴サ諢剰ッ<EFBFBD><EFBFBD>€りキッ荳願蟶瑚<EFBFBD><EFBFBD>豁ヲ萓<EFBFBD><EFBFBD>蛻第ウ包シ悟ス蜒丞ケ譏ッ謌醍擅蝨ィ荳企銅逧<EFBFBD><EFBFBD>蠑滂シ御サ<EFBFBD>12譛亥芦5譛茨シ碁<EFBFBD>譏ッ螯よュ<EFBFBD>梧劒譎壻サ取擂荳咲衍驕馴ぅ荳ェ蜻ィ譛ォ蜿醍函莠<EFBFBD>€荵茨シ梧<EFBFBD>隸エ閠攸隶ゥ謌大刈迴ュ<EFBFBD>ケ蟆ア螳蛾撕蝨ー遲牙惠螳カ驥鯉シ悟巻蜉帛闖懈怙蜷主唆遲画<EFBFBD>蝗槫悉謾カ諡セ轤ク髞<EFBFBD>噪蜴ィ謌ソ<EFBFBD><EFBFBD>扈呎<EFBFBD>菫ゥ豕遒玲ウ<EFBFBD>瑚セケ蜷<EFBFBD>セケ蜷ャ螂ケ隶イ荳矩岑逧<EFBFBD><EFBFBD>隨題ッ晢シ梧Φ逹€荳崎<EFBFBD>蜻願ッ牙ケ荳句壕蜥御ケ<EFBFBD>正蜴サ蜷<EFBFBD>噪荵千処鬣ュ蠎礼噪荳懷圏闖懶シ悟屓霑<EFBFBD>樊擂譏ッ譎壽劒髣ェ髣ェ逧<EFBFBD>愍逹幢シ梧<EFBFBD>€荳句<EFBFBD>蜷ャ諛ゑシ悟<EFBFBD>蜩亥嶋逧<EFBFBD>ャ題オキ譚縲ゆス<EFBFBD>芦莠<EFBFBD><EFBFBD>譛茨シ悟ス蜒丈ク榊ェ荳€譬キ莠<EFBFBD>€ょキイ扈剰オー蛻ー讌シ荳具シ御ケ<EFBFBD>正荳€謚頑瓦霑<EFBFBD><EFBFBD><EFBFBD>焔譛コ<EFBFBD>悟分蝠ェ謇灘ュ怜<EFBFBD>扈呎<EFBFBD><EFBFBD><EFBFBD>€逵具シ瑚邉サ莠コ<EFBFBD>壽劒譎夲シ悟<EFBFBD>螳ケ<EFBFBD>壻サ頑劒騾壼ョオ蜉<EFBFBD>迴ュ<EFBFBD>御ク榊屓蜴サ莠<EFBFBD>€<EFBFBD>諠願ョカ蝨ー蝗槫<EFBFBD>御ケ<EFBFBD>正豁逵ッ逹€逵シ蟇ケ謌大セョ隨托シ御サソ菴帑ク€<EFBFBD><EFBFBD>蝨ィ螂ケ逧<EFBFBD>詞謠<EFBFBD><EFBFBD>譏取<EFBFBD>莉取悴蜻願ッ牙ケ謌大<EFBFBD><EFBFBD>炊逕ア縲りォ諡臥捩蜴サ莠<EFBFBD><EFBFBD>蠎暦シ悟ケ蟆ア蠑€蟋倶ク€€荳榊書<EFBFBD>梧イ先オエ譖エ陦<EFBFBD>荵滉ク崎ッ蛛夂噪<EFBFBD>蜷朱囂諢丞慍謚ォ逹€豈ッ蟄撰シ碁擒逹€蠎雁エ蛻キ謇区惻<EFBFBD><EFBFBD>荳崎ァ<EFBFBD>€應ケ<EFBFBD>正縲ゅ€りソ呎<EFBFBD>キ荳榊ス窶昜ケ<EFBFBD>正蟇ケ謌醍惠莠<EFBFBD>惠逵シ逹幢シ梧裏霎懷慍隸エ<EFBFBD>€應サ雁ゥ菴<EFBFBD><EFBFBD>ヲサ蟄仙庄荳肴弍譎壽劒蜩ヲ窶昶€應クコ莉€荵遺€€懷屏荳コ螂ケ譏ッ菴<EFBFBD>辷ケ窶<EFBFBD>
窶懃ャ大制<EFBFBD>檎ャ大制<EFBFBD>€晄沐霓ッ逧<EFBFBD>ー冗巨迢ク遶ュ蜉幄ョィ螂ス謌托シ御クコ謌題キウ闊槫宵荳コ莠<EFBFBD><EFBFBD>荳咲ヲサ蠑€<EFBFBD>瑚キウ逧<EFBFBD>怏莠帷瑞遒守蕎迢茨シ悟唆蟋狗サ域ュサ豁サ蝨ー逶ッ逹€謌醍噪蜉ィ蜷代€<EFBFBD>蠖鍋驕灘ケ諡シ豁サ荳崎ョゥ謌醍ヲサ蠑€<EFBFBD>次蝗<EFBFBD>縲ょ宵譛画<EFBFBD>閭ス譚蛻ー霑吩クェ蝨ー譁ケ縲ゆク€螟ァ荳€蟆丈ク蜿ェ迢千矯<EFBFBD>ァ迢千矯諤サ螟<EFBFBD>コ取イ臥擅荳ュ<EFBFBD>悟ー冗巨迢ク蜊エ諤サ譏ッ驢堤捩逧<EFBFBD>シ御ケ溯ョク蜿ェ譏ッ蟆冗巨迢ク逧<EFBFBD>霓サ縲よ<EFBFBD>蝟懈ャ霑呎ッ幄牡蜈画サ醍噪迢千矯邊セ諤ェ縲ゆコ取弍謚雁ケ莉ャ蜈サ蝨ィ豺ア髦€ゆク雁ス逧<EFBFBD>巨迢ク豈幢シ悟螂ケ莉ャ逧<EFBFBD>ッ帶ッッ縲ょ屏荳コ謌第Φ逵狗恚螂ケ莉ャ雕ゥ逹€蜷御シエ逧<EFBFBD>ーク豈帑ク奇シ御シ夊ァ牙セ玲クゥ證冶<EFBFBD>騾ょ雛<EFBFBD><EFBFBD>霑倡畑邊セ閾エ逧<EFBFBD><EFBFBD>遲第<EFBFBD>莉紋サャ逧<EFBFBD>ャシ蟄撰シ檎ャャ荳€譏ッ蝗<EFBFBD>荳コ謌大万谺<EFBFBD><EFBFBD>檎ャャ莠梧弍蝗<EFBFBD>荳コ謌大万谺隨シ蟄舌€りソ咎豌ク霑憺<EFBFBD>蜿ェ譛<EFBFBD>16蜿ェ辜帷せ莠ョ<EFBFBD>悟屏荳コ謌大万谺辜帷縲よイ髞呻シ梧<EFBFBD>€蛛夂噪荳€<EFBFBD>コ具シ悟宵譏ッ蝗<EFBFBD>荳コ窶懈<EFBFBD>窶晏万谺縲よ<EFBFBD>蝟懈ャ逵句惠螂ケ莉ャ逧<EFBFBD>ッ帷坩荳雁魂荳顔噪螟暮亠逧<EFBFBD>剳譟難シ梧園莉謌台サ惹ク榊惠逋ス螟ゥ譚縲よ<EFBFBD>荳コ螂ケ莉ャ逍嶺シ縲よ<EFBFBD>譏ッ螂ケ莉ャ蜚ッ荳€<EFBFBD>溽黄譚貅舌€よ怏荳€謌第腐諢丞ソ倩ョー莠<EFBFBD>ケ莉ャ蜃<EFBFBD>螟ゥ<EFBFBD>檎ュ画<EFBFBD>蝗樊擂逧<EFBFBD>慮蛟呻シ悟ケ莉ャ譏剰ソキ蝨ィ驍縲るぅ譬キ貍ゆコョ逧<EFBFBD>コォ菴馴€先ク仙ケイ逖ェ<EFBFBD>瑚ョゥ謌第隗牙芦蠢ォ諢上€よイ髞呻シ梧<EFBFBD>鬣イ蜈サ逧<EFBFBD>庄辷ア逧<EFBFBD>巨迢ク<EFBFBD>檎畑貉ソ貍画シ臥噪逵シ逹帷恚逹€謌托シ御ケ溷宵閭ス譏ッ謌代€ケ莉ャ豐<EFBFBD><EFBFBD>豢サ荳堺ク句悉<EFBFBD>悟庄諠懈<EFBFBD>蜿ェ蝨ィ荵主ケ莉ャ螯ょ酔邊セ轣オ闊ャ閠€逵シ逧<EFBFBD>ィ縲ら悄鄒主賦縲ょーア蜒丞鴻荳<EFBFBD>愀豬居隕<EFBFBD>尠逧<EFBFBD>ヲょ<EFBFBD>閼ら噪閧<EFBFBD>碁サ<EFBFBD>牡逧<EFBFBD><EFBFBD>闃堤轣ッ蝨ィ驥檎噪逵ク<EFBFBD>梧怏莠コ隸エ鄒惹ココ蝨ィ鬪ィ荳榊惠逧ョ<EFBFBD>悟庄譏ッ謌大セ郁エェ蠢<EFBFBD>賦縲よ<EFBFBD>セ惹ココ逧<EFBFBD>ェィ<EFBFBD>悟処隕セ惹ココ逧<EFBFBD>坩縲ゆク咲衍霑<EFBFBD><EFBFBD>壻ケ<EFBFBD>ケ莉ャ諛ゆコ<EFBFBD><EFBFBD>蜿ェ蝟懈ャ螂ケ莉ャ逧<EFBFBD>セ惹クス<EFBFBD>御コ取弍遶ュ蟆ス蜈ィ蜉帷噪蜷第<EFBFBD>螻慕コ驍€蜉溘€らャャ荳€逵句芦逧<EFBFBD>慮蛟呻シ梧<EFBFBD>謨エ謨エ荳螟ゥ豐縲ょ屏荳コ諛ょセ苓<EFBFBD>蟾ア鄒守噪莠コ<EFBFBD>瑚ッエ譏主ケ莉ャ蟾イ扈冗衍驕楢ヲ滑莉€荵亥ス捺<EFBFBD>豁ヲ蝎ィ莠<EFBFBD>€ケ莉ャ謌仙粥莠<EFBFBD>€<EFBFBD><EFBFBD>勘莠<EFBFBD>シ悟スサ蠎戊噫鬪ィ逧<EFBFBD>ソ<EFBFBD>勘縲よ園莉謌鷹€画叫螳蜻願<EFBFBD>蟾ア逧<EFBFBD>クサ譚<EFBFBD>シ梧<EFBFBD>隶ク譏ッ驍螟コ鬲<EFBFBD>噪鬲<EFBFBD>鴨縲ゆスソ謌第蛻ー蜊ア髯ゥ縲りソ咏ァ咲セ主ス隶ゥ謌第イ芽ソキ蜈カ荳ュ縲や€應ス<EFBFBD>莉ャ逵溽セ主賦窶ヲ窶ヲ窶晄<EFBFBD>蜿大<EFBFBD><EFBFBD>キ蠢<EFBFBD>噪遘ー襍橸シ御ク蜿ェ迢千矯謚匁竃閠ウ譛オ<EFBFBD>御シ倬寉逧<EFBFBD>髄謌大桙逵ク縲ょヲよ棡荳肴弍謌醍噪謇区ュ謾セ蝨ィ隨シ蟄蝉ク奇シ瑚ソ咏悄譏ッ荳€蝨コ扈晉セ守噪陦ィ貍斐€ょケク螂ス謌醍噪謇区ュ謾セ蝨ィ隨シ蟄蝉ク奇シ悟凄蛻呎<EFBFBD>逵倶ク榊芦霑吝惻扈晉セ守噪陦ィ貍斐€<EFBFBD>荳顔仞莠<EFBFBD>€<EFBFBD>豐蛾匚蝨ィ豌ク霑應ク榊序逧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>梧ーク霑應ク榊序逧<EFBFBD>香蜈ュ譫夂<EFBFBD>蜈峨€€應ク崎ヲヲサ蠑€辟カ辟カ螂ス蜷暦シ溽辟カ蠕磯ソ縲るソ莠<EFBFBD>ーア荳榊ス逵倶コ<EFBFBD>€€<EFBFBD>譛ャ譚諠ウ隸エ荳€莠帛悪逧<EFBFBD>ッ晢シ瑚オキ遐ョゥ謌第仞蠕玲峩蜉<EFBFBD>蠑コ蜉ソ荳€莠幢シ檎閠後€ら巨迢ク莉ャ霓サ霓サ鞫<EFBFBD>捩閾ェ蟾ア逧<EFBFBD>ーセ蟾エ<EFBFBD>悟ーセ蟾エ逧<EFBFBD>ー門<EFBFBD>€轤ケ轤ケ謳ュ荳頑<EFBFBD><EFBFBD>焔縲や€<EFBFBD>莉ャ豌ク霑懃鯵菴<EFBFBD>縲ょ屏荳コ菴<EFBFBD>辷ア謌台サャ蜻€縲や€昜コ取弍謌題ッエ螂ス縲よ<EFBFBD>€蟋区響蜷<EFBFBD>ァ埼イ應コョ逧<EFBFBD>干譛オ陬<EFBFBD>ー隨シ蟄撰シ梧<EFBFBD>豈丞ゥ荳埼龍譁ュ逧<EFBFBD>€サ吩サ紋サャ迺€迺ィ逧<EFBFBD>匕遏ウ<EFBFBD>悟推遘榊髄螂ケ莉ャ霄ォ荳顔<EFBFBD>ク螂<EFBFBD>渚蠑ょョ晉沫莨<EFBFBD><EFBFBD>荳ケ螯呵艮<EFBFBD>檎爆閾ウ荳コ豁蛟セ螳カ闕莠ァ荵溷惠謇€荳崎セ槭€ょ屏荳コ蝨ィ謌醍噪謇倶クュ譛ャ蟆ア迚邏ァ謠€螟ゥ蠎穂ク区怙遘ー蠕嶺ク岩€<EFBFBD>渚蠑ょョ昶€晉噪荳懆ソ<EFBFBD>御クコ謌醍噪螂<EFBFBD>渚蠑ょョ晄伽荳€莠帛椨閼夂浹<EFBFBD>悟処譛我ス穂ク榊庄<EFBFBD>溽巨迢ク莉ャ逧<EFBFBD>ーセ蟾エ謨ー驥乗律貂仙槫刈縲よ<EFBFBD>驕薙€ょヲよ棡謌大庄莉窶ヲ窶ヲ蜿ッ譏ッ謌鯛€ヲ窶ヲ窶披€ケ莉ャ隸エ辷ア謌代€€<EFBFBD>莨壽究謗臥ャシ蟄撰シ檎サ呎<EFBFBD>霍ウ謾ッ闊槫制縲や€<EFBFBD>隸エ縲よ囑讖呵牡逧<EFBFBD><EFBFBD>蜈我ク九€りソ樊セ<EFBFBD>セ育噪豬<EFBFBD>統驛ス蜿俶<EFBFBD><EFBFBD>ヲ門シら噪邏ォ濶イ縲や€ス蜻€縲や€ァ迢千矯貂ゥ譟皮噪螢ー髻ウ蜒乗弍陷倩屁荳昜ク€譬キ霓サ譟斐€ゆコ取弍謌第ャ襍丞芦莠<EFBFBD>荳夜龍譛€鄒惹クス逧<EFBFBD><EFBFBD>雹茨シ御サ€荵育視萓ッ蟆<EFBFBD>嶌莉€荵亥ゥ荳雁ョォ髦咎<EFBFBD>莠ォ蜿嶺ク榊芦<EFBFBD>悟宵譛画<EFBFBD><EFBFBD>悟宵荳コ謌台ク€莠コ縲よ<EFBFBD>諢溷芦蠢ォ諢上€<EFBFBD>諢溷芦蝗ー諢上€よ怙蜷惹ク€逵シ縲ょー冗巨迢ク扈咏ス仙ュ仙ー哨縲ら悄蜿ッ諠懷賦<EFBFBD>梧イ閭ス逵玖ァ<EFBFBD>莉ャ貍ゆコョ逧<EFBFBD>€ウ蟆厄シ梧<EFBFBD>隶ク譏ッ蝗<EFBFBD>荳コ窶ヲ窶ヲ窶披€<EFBFBD>蝨ィ鄂仙ュ宣<EFBFBD>
<EFBFBD>譎壽劒<EFBFBD>御ス<EFBFBD>逵溽噪譏ッ荳ェ蠕郁ソ<EFBFBD><EFBFBD><EFBFBD>悟セ郁エェ蠢<EFBFBD>噪螂ウ蟄ゥ蟄舌€ゆス<EFBFBD>譛牙屁荳ェ莠イ螯ょァ仙ヲケ逧<EFBFBD>弌蜿具シ梧怏荳€莉ス髣ェ髣ェ蜿大<EFBFBD><EFBFBD><EFBFBD><EFBFBD>譴ヲ諠ウ逧<EFBFBD>荳夲シ梧怏隶ク隶ク螟壼壼万谺<EFBFBD><EFBFBD>カ遒嶺ココ縲ゆス<EFBFBD>蜿ッ辷ア縲巻蜉帙€怏謇榊克<EFBFBD>御ス<EFBFBD>譏ッ霑吩ケ育噪閠€逵シ縲ゆス<EFBFBD><EFBFBD>霑俶弍蝨ィ逶エ謦ュ荳ュ諡芽Ρ<EFBFBD>悟惠逶エ謦ュ荳ュ謚ス豕<EFBFBD>悟惠逶エ謦ュ荳ュ蜻シ蜚鬘カ遒嶺ココ縲よ<EFBFBD>譛牙庄莉豈丞ゥ蝌サ蝌サ蜩亥嶋逧<EFBFBD>恚蜿具シ梧イ譛芽ョゥ謌大<EFBFBD>辜ュ諠<EFBFBD>噪蟾菴懶シ梧イ譛牙ッケ雎<EFBFBD>御ケ滓イ譛我サ€荵郁ソ懷ァ逧<EFBFBD>炊諠ウ縲よ<EFBFBD>譎ョ騾壹€裏雜オ第オ大勦蝎ゥ<EFBFBD><EFBFBD>蜿ェ譏ッ荳€荳ェ蝨ィ譎ョ騾壼処譫ッ辯<EFBFBD>菴懷柱逕滓エサ荳ュ<EFBFBD>悟セ苓ソ<EFBFBD>ク碑ソ<EFBFBD>噪鬘カ遒嶺ココ<EFBFBD><EFBFBD>€荵井ケ滓イ譛会シ悟庄閭ス蜿ェ譛我ク€鬚礼ィ榊セョ譛臥せ蝟懈ャ<EFBFBD><EFBFBD>ソ<EFBFBD>€<EFBFBD>蜿ェ譏ッ諠ウ謚贋ス<EFBFBD>蠖灘逕滓エサ驥檎噪邉厄シ悟惠蟾菴應ケ倶ス呎叛譚セ荳€荳区<EFBFBD>逍イ諠ォ逧<EFBFBD>ソ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>荳肴Φ蜈閼托シ御ク肴Φ謌蝉クコ莉€荵育塙蜿狗イ会シ御ク肴Φ譌カ譌カ蛻サ蛻サ諠ウ逹€<EFBFBD>縲ょ庄譏ッ菴<EFBFBD>螟ェ雍ェ蠢<EFBFBD><EFBFBD>シ御ス<EFBFBD>荳肴サ雜ウ謌台サャ逶エ謦ュ髣エ驥檎洒證ら噪逶ク驕<EFBFBD>シ御ス<EFBFBD>騾先ク蝉セオ蜈謌醍噪逕滓エサ縲よ怏莠コ霑<EFBFBD>函譌譌カ<EFBFBD><EFBFBD>莨壽Φ襍キ菴<EFBFBD><EFBFBD>€懷ヲよ棡譏ッ譎壽劒<EFBFBD>悟コ碑ッ蜿亥シ€蟋句罰邏蝸ィ蝸ィ莠<EFBFBD>制窶昴€よ怏莠コ隸エ蜀キ隨題ッ晄慮<EFBFBD><EFBFBD>莨壽Φ襍キ菴<EFBFBD><EFBFBD>€ス譌<EFBFBD>閨顔噪隨題ッ晢シ御ス<EFBFBD>ッエ扈呎劒譎壼成<EFBFBD>ケ蠎碑ッ莨夂ャ大セ井ケ<EFBFBD>制窶昴€よ怏莠コ蝟晏カ闌カ譌カ<EFBFBD><EFBFBD>莨壽Φ襍キ菴<EFBFBD><EFBFBD>€懃畑螂カ逶匁旧鬣ュ逧<EFBFBD>ココ<EFBFBD>檎悄逧<EFBFBD>ュ伜惠蜷暦シ悟カ逶匁旧鬣ュ譏ッ荳ェ莉€荵亥袖驕灘造窶昴€ら爆閾ウ譛€霑台ク矩岑譌カ<EFBFBD><EFBFBD>荵溷シ€蟋区Φ菴<EFBFBD><EFBFBD>€懈劒譎壼惠謌ソ髣エ驥梧怏豐譛蛾旅蜻<EFBFBD>檎鴫蝨ィ譛画イ譛牙<EFBFBD>髣ィ雕ゥ豌エ闃ア<EFBFBD>檎サ呵<EFBFBD>蟾ア謾セ謾セ鬟主造<EFBFBD>梧怏豐譛牙屏荳コ荳矩岑<EFBFBD>梧Φ襍キ鬘カ遒嶺ココ蜻窶昴€ゆス<EFBFBD>譛ャ隸譏ッ荳ェ陌壽供逧<EFBFBD>コク迚<EFBFBD>ココ<EFBFBD>碁囈逹€螻丞ケ墓屋貍比ス<EFBFBD><EFBFBD>曙鬩ャ蟆セ蛯イ螽<EFBFBD>ァ蟆丞ァ撰シ悟壻ケ郁€悄逧<EFBFBD>ョセ螳夲シ悟ワ譏ッ謚贋コ梧ャ<EFBFBD>畑辜ら噪蜈<EFBFBD><EFBFBD><EFBFBD>粋蝨ィ荳€襍キ<EFBFBD>瑚ョゥ謌台ク€逵シ蟆ア遏驕謎ス<EFBFBD>譏ッ陌壼<EFBFBD>シ御ク榊ュ伜惠逧<EFBFBD>€ゆス<EFBFBD>譛ャ隸譏ッ荳ェ髣ェ閠€<EFBFBD><EFBFBD>蜒擾シ悟ワ螟ァ螻丞ケ募柱蟷ソ蜻顔煙驥檎噪譏取弌荳€譬キ<EFBFBD>悟ョ檎セ守噪螻慕鴫閾ェ蟾ア逧<EFBFBD><EFBFBD><EFBFBD>コ逶ョ閠€逵シ<EFBFBD>瑚ョゥ謌台ク€逵シ蟆ア遏驕謎ス<EFBFBD>譏ッ鬮倅ク榊庄謾€<EFBFBD>シ碁荳榊庄蜿顔噪縲ゆス<EFBFBD>弍菴<EFBFBD>蟇ケ謌大働<EFBFBD>悟ッケ謌醍ャ托シ悟ッケ謌鷹了蛻ォ謇ュ<EFBFBD>悟ッケ謌醍函豌費シ悟髄謌大ア慕コ菴<EFBFBD><EFBFBD>級閭ッ<EFBFBD>悟髄謌大ア慕コ菴<EFBFBD><EFBFBD>巻蜉幢シ悟髄謌大ア慕コ菴<EFBFBD><EFBFBD>ョウ鄒橸シ悟髄謌大ア慕コ菴<EFBFBD><EFBFBD>裏蜉ゥ縲ゆス<EFBFBD>莉ソ菴幃囈逹€螻丞ケ墓滑蠢<EFBFBD>誌扈吩コ<EFBFBD><EFBFBD><EFBFBD>瑚ョゥ謌題ァ牙セ嶺ス<EFBFBD>譏ッ荳ェ豢サ逕溽函逧<EFBFBD>ココ<EFBFBD>瑚ョゥ謌題ァ牙セ嶺ス<EFBFBD>譏ッ荳ェ逵溷ョ槫ュ伜惠逧<EFBFBD>ココ<EFBFBD>瑚ョゥ謌題ァ牙セ玲<EFBFBD>譛我ク€螟ゥ荵溯<EFBFBD><EFBFBD>芦蜒丈ス<EFBFBD>霑呎<EFBFBD>キ逧<EFBFBD>ココ<EFBFBD>檎爆閾ウ隶ゥ謌台ケ滓Φ謌蝉クコ菴<EFBFBD>霑呎<EFBFBD>キ逧<EFBFBD>ココ縲よ<EFBFBD>霑呎<EFBFBD>キ譎ョ騾夂噪豌エ豈搾シ梧悽蜿ッ莉蝨ィ貍<EFBFBD>サ醍噪豺ア豬キ荳ュ<EFBFBD>碁囂豕貍よオ€逕滂シ御ス<EFBFBD><EFBFBD>髱櫁ヲ<EFBFBD>莠ョ謌醍噪豬キ蠎包シ瑚ョゥ謌第蕎蜻ス蜷台ス<EFBFBD>貂ク蜴サ<EFBFBD>碁亠蜈画エ貞惠豌エ豈咲噪霄ォ荳頑慮<EFBFBD>梧ーエ豈咲ョ螳樊弍貂ゥ證也噪<EFBFBD>御ス<EFBFBD>亠蜈臥ヲサ蠑€豌エ豈肴慮<EFBFBD>梧ーエ豈崎ソ倩<EFBFBD>蜷ヲ蠢榊女豺ア豬キ逧<EFBFBD>ッ貞<EFBFBD>縲ゆス<EFBFBD>譛画裏謨ー逧<EFBFBD>カ遒嶺ココ<EFBFBD>€<EFBFBD>蜿ェ譛我ク€荳ェ譎壽劒<EFBFBD>檎悄蠢<EFBFBD>困逵溷ソ<EFBFBD>シ御ス<EFBFBD>謚顔悄蠢<EFBFBD>誌蜃コ譚<EFBFBD><EFBFBD>蠕怜芦譌<EFBFBD>謨ー逵溷ソ<EFBFBD>噪蝗槫コ費シ御ス<EFBFBD><EFBFBD>謚顔悄蠢<EFBFBD>誌蜃コ譚<EFBFBD>慮蛟呻シ梧<EFBFBD>蟆ア莉€荵井ケ滉ク榊黄莠<EFBFBD>€<EFBFBD>
<EFBFBD>%A窶粘OUL螳<EFBFBD>ッ穂ク夂噪驍螟ゥ<EFBFBD>御ク€荳ェ莨<EFBFBD>ャイ扈晉噪鬘カ遒嶺ココ譚蛻ー蟄苓鰍逧<EFBFBD>ァ讌シ荳具シ檎恚蛻ー逡咏捩髟ソ蜿碁ゥャ蟆セ逧<EFBFBD>ウ蟄ゥ襍ー蜃コ螟ァ髣ィ<EFBFBD>ケ逧<EFBFBD>亢驥瑚ソ伜鴇逹€豌エ豈堺ケ区ュ後€€€ヲ窶ヲ菴<EFBFBD>邇ー蝨ィ逵溽噪譏ッ蜷第劒荵茨シ溪€カ遒嶺ココ遶吝惠螂ケ逧<EFBFBD>擇蜑搾シ御ク逵シ譌<EFBFBD>逾槭€€懈弍謌大賦<EFBFBD>€ケ逵ッ莠<EFBFBD>ク狗愍<EFBFBD>檎莫逕懷慍隨台コ<EFBFBD>シ娯€<EFBFBD>蟆ア譏ッ蜷第劒<EFBFBD><EFBFBD>譏ッ濶セ蜩<EFBFBD>島隸カ蜩<EFBFBD>シ瑚ソ咎譏ッasoul逧<EFBFBD>髄譎夲シ御サ雁ゥ蜿郁ァ<EFBFBD>擇蝠ヲ窶昶€應ス<EFBFBD>荳肴弍蜷第劒縲や€カ遒嶺ココ蝌カ蜩大慍隸エ縲ょウ蟄ゥ逧<EFBFBD>ィ諠<EFBFBD>カ亥ア莠<EFBFBD>シ梧シ<EFBFBD>サ醍噪逵シ逹帷恚逹€蜃コ邇ー蝨ィ髣ィ蜿<EFBFBD>€ェ螟ァ蜿費シ御ク荳ェ莠コ荵<EFBFBD><EFBFBD>慍蟇ケ隗<EFBFBD>€閠悟ーア蜒乗弍荳€鬚礼浹蟄先兜蜈<EFBFBD><EFBFBD>貉夜ぅ譬キ<EFBFBD>悟ソス辟カ髣エ豸滓シェ闕€<EFBFBD><EFBFBD>驛ス蛹紋コ<EFBFBD>シ梧ーエ豕貍セ<EFBFBD>瑚スサ譟碑€梧裏蜉帙€ウ蟄ゥ謾カ蝗樔コ<EFBFBD>岼蜈会シ御サ主桁驥悟叙蜃コ荳€謚企徴蛹呎鉛蜷鷹カ遒嶺ココ<EFBFBD><EFBFBD>隨托シ娯€ス蜒乗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ウ蟄ゥ莨シ逧<EFBFBD>シ悟悉驍驥梧伽蜷第劒蜷ァ<EFBFBD><EFBFBD>謚雁ケ逧<EFBFBD>€<EFBFBD><EFBFBD>逡吝惠驍驥御コ<EFBFBD>€€カ遒嶺ココ謚雁ョ<EFBFBD>鏡襍キ譚<EFBFBD>御ケ<EFBFBD><EFBFBD>慍逵狗捩驍<EFBFBD>徴蛹呻シ悟<EFBFBD>謚ャ螟エ蜴サ逵具シ御サ也悄隶ィ蜴瑚ソ呎<EFBFBD>キ逧<EFBFBD>イ蛾サ假シ梧イ蛾サ倡噪蜿ォ莠コ隕書逍ッ<EFBFBD>御サ匁Φ隸エ轤ケ莉€荵茨シ悟庄譏ッ譛牙ェ螟壼ェ螟夂噪莠区ュ莠<EFBFBD>シ梧擂荳榊所髣ョ<EFBFBD>梧擂荳榊所隸エ<EFBFBD>御ク€<EFBFBD><EFBFBD>荳榊所莠<EFBFBD>€€<EFBFBD>€€晄怙蜷惹サ冶スサ螢ー隸エ縲や€<EFBFBD>€€晏髄譎壻ケ溯スサ螢ー蝨ー隸エ縲よ律證ョ逧<EFBFBD>慮蛟呻シ碁カ遒嶺ココ謇セ蛻ー莠<EFBFBD>ぅ荳ェ阯丞惠鬮俶シ螟ァ蜴ヲ蜷守噪閠立蟆丞玄縲る埓蠕苓ソ咎霑倡蕗逹€譴ァ譯先<EFBFBD>托シ梧<EFBFBD>大掌蟾イ扈剰誠蜈我コ<EFBFBD>シ梧椡譫晄滑證玲キ<EFBFBD>亠蜈牙<EFBFBD>謌千守援縲ゅ€カ遒嶺ココ謇セ蛻ー莠<EFBFBD>ぅ荳ェ謌ソ髣エ<EFBFBD>御シク謇区少蜴サ莠<EFBFBD>葎荳顔噪蟷ソ蜻奇シ梧薯蜈蛹吶€らシ鍋シ灘慍霓ャ蜉ィ縲よ滑髓蛹吩サ冶ァ牙セ鈴葎蠕磯<EFBFBD>ス蜒剰ヲエ槫シ€€荳ェ荳也阜縲る葎蠑€<EFBFBD>シ悟暮亠謇鷹擇閠梧擂縲ゆサ也ォ吝惠髦ウ蜈蛾<EFBFBD>菴丈コ<EFBFBD>€よュ蟇ケ逹€髣ィ逧<EFBFBD>シ梧弍荳€蟾ィ螟ァ逧<EFBFBD>誠蝨ー遯暦シ檎ェ怜門キィ螟ァ螟暮亠豁蝨ィ蝮<EFBFBD>關ス縲るサッ豺<EFBFBD>亠蜈牙惠蝨ー髱荳頑兜荳狗ェ玲<EFBFBD>シ逧<EFBFBD>亢蠖ア<EFBFBD>瑚キ滄サ題牡逧<EFBFBD>欧隨シ莨シ逧<EFBFBD>€螻樒ェ玲<EFBFBD>蝿陏€蠕怜セ亥脂螳ウ<EFBFBD>ス蜃<EFBFBD>蝮礼悉迺<EFBFBD>惹コ<EFBFBD>シ梧劒鬟守霑帶擂<EFBFBD>梧クク襍ー蝨ィ螻句ュ千噪豈丈クェ隗定誠縲りソ咎蜴滓悽螟ァ讎よ弍驟咲鳩謌ソ荳€邀サ逧<EFBFBD>慍譁ケ<EFBFBD>檎鳩霍ッ謾ケ騾<EFBFBD>蜷手ョセ螟<EFBFBD>ォ遘サ襍ー莠<EFBFBD>シ檎ゥコ蜃コ霑吩ケ井ク€髣エ蜷題ソ逧<EFBFBD>ア句ュ舌€ょーア荳€髣エ<EFBFBD>瑚ソ樊エ玲焔髣エ驛ス豐譛会シ檎ゥコ遨コ逧<EFBFBD>シ御ク€<EFBFBD>蝨ィ螻句ュ先ュ荳ュ螟ョ逧<EFBFBD>コ奇シ瑚統濶イ鄂ゥ蜊穂ク願誠貊轣ー蟆假シ御ク€荳ェ閠シ冗噪莠疲沫譟懃ォ句惠隗定誠驥鯉シ悟嘗荳€萓ァ逧<EFBFBD>ァ定誠驥梧弍荳€荳ェ辯<EFBFBD>ー皮<EFBFBD>蜿ー蜥御ク€蜿ー閠シ冗噪蜿悟シ€髣ィ蜀ー邂ア縲ょ<EFBFBD>驛ィ螳カ蜈キ蟆ア霑吩コ帙€ゆサ匁イソ逹€蠅吝シォ豁<EFBFBD>梧焔謖<EFBFBD>沖霑<EFBFBD>譏ッ轣ー蟆倡噪轣カ蜿ー<EFBFBD>帶遠蠑€蜀ー邂ア<EFBFBD>蜿ェ蜑ゥ荳倶ク€郤ク逶定ソ<EFBFBD>悄逧<EFBFBD><EFBFBD>螂カ縲らェ怜ク伜セ育セ趣シ梧弍逋ス濶イ逧<EFBFBD>弊荳晉コア蟶伜柱豺ア髱定牡逧<EFBFBD>サ貞ク假シ御ス丞惠霑呎<EFBFBD>キ螻句ュ宣<EFBFBD>ココ蠖鍋莨壼セ亥惠諢冗ェ怜ク伜制<EFBFBD>溯ソ槫床逕オ隗<EFBFBD><EFBFBD>譛会シ御コ取弍荳€荳ェ莠コ逧<EFBFBD>慮蛟吩シ壼クク蟶ク蝮仙惠蠎贋ク顔恚逹€蜷第劒譁憺亠蜷ァ<EFBFBD>懈キア逧<EFBFBD>慮蛟吝セ玲滑遯玲姐驕ョ蠕嶺ク螳槫ョ樒噪蜷ァ<EFBFBD>溷凄蛻吮€ヲ窶ヲ莨壼ョウ諤募制<EFBFBD>滓劒譎夊ソ俶€暮サ台ケ茨シ滄カ遒嶺ココ諠ウ縲ら柑雎ォ莠<EFBFBD>セ井ケ<EFBFBD>シ御サ冶ソ俶弍謇灘シ€<EFBFBD>コ疲沫譟懊€<EFBFBD>莠コ諢乗侭逧<EFBFBD>シ瑚ソ呎弍荳€荳ェ貊<EFBFBD>コ疲沫譟懶シ梧噺諡セ蠕玲紛謨エ鮨宣ス舌€ょ匠襍キ譚逧БSOUL蝗譛搾シ瑚<EFBFBD>譛陰SOUL逧<EFBFBD><EFBFBD><EFBFBD>ソ暦シ御ク€<EFBFBD><EFBFBD>逋ス濶イ陦ャ陦<EFBFBD>門哨譛我ク榊酔逧<EFBFBD>絢扈闃ア霎ケ<EFBFBD>幃ゥャ莉皮コク逶帝<EFBFBD>エ闃ア<EFBFBD>御サ取惠雍ィ逧<EFBFBD>芦驥大ア樒噪蛻ー邇ウ迹<EFBFBD>瑚ソ俶怏髣ェ蜈臥シ守噪陜エ陜カ扈難シ幃柄陲懃洒陲懈應ク晁<EFBFBD>蜊キ謌仙屬荳€荳ェ謖ィ荳€荳ェ謾セ蝨ィ譟蝉クェ謚ス螻臥噪荳€霎ケ<EFBFBD>悟ワ譏ッ荳€遯晄ッ幄減闌ク逧<EFBFBD>イ蛾シ<EFBFBD><EFBFBD>悟嘗荳€霎ケ螻<EFBFBD>譏ッ莠秘<EFBFBD>濶イ逧<EFBFBD><EFBFBD><EFBFBD>悟酔譬キ蜿<EFBFBD>蠕玲紛謨エ鮨宣ス舌€カ遒嶺ココ莉取イ諠ウ霑<EFBFBD>ウ蟄ゥ逧<EFBFBD><EFBFBD>譛蛾ぅ荵亥夊干譬キ縲ゆサ門ー丞ソ<EFBFBD>ソシ鄙シ蝨ー莨ク謇具シ瑚ッ慕捩隗ヲ鞫ク<EFBFBD>梧サ謇狗<EFBFBD>蟆倥€€倶サ匁滑蠎贋ク顔噪鄂ゥ蜊墓死蠑€<EFBFBD>譏ッ邂€€蜊募黒逧<EFBFBD>區濶イ蠎雁黒蜥檎區濶イ逧<EFBFBD>セス扈定<EFBFBD>梧桾螟エ荵滓弍逋ス濶イ逧<EFBFBD>シ悟宵荳崎ソ<EFBFBD>怏豌エ豈咲噪蝗セ譯茨シ梧勸騾夊€€<EFBFBD><EFBFBD>ーエ豈崎誠蝨ィ譫募エ逧<EFBFBD>€隗抵シ悟セ域怏螂ケ逧<EFBFBD><EFBFBD>シ縲ゆサ門攝蝨ィ蠎願セケ<EFBFBD>碁擇蟇ケ霑吝暮亠縲ょェ髦ウ蟆ア隕誠荳句悉莠<EFBFBD>シ碁サ第囓莉守ェ怜冶箔蟒カ霑帶擂<EFBFBD>御サ夜柄髟ソ逧<EFBFBD>スア蟄先兜蟆<EFBFBD>惠蠅吩ク翫€夜擇髫千コヲ譛牙密髣ケ逧<EFBFBD>ー髻ウ<EFBFBD>梧叛蟄ヲ逧<EFBFBD>ュゥ蟄蝉サャ蝨ィ謫榊惻荳頑遠遽ョ逅<EFBFBD>€るぅ莠帛ケエ螂ケ荳€逶エ霑<EFBFBD>捩霑呎<EFBFBD>キ逧<EFBFBD>函豢サ荵茨シ溷<EFBFBD>螳樔ク肴弍螟ァ蟆丞ァ撰シ梧イ譛臥ョ螳カ<EFBFBD>御ケ滓イ譛牙<EFBFBD>霑ス謐ァ逧<EFBFBD><EFBFBD>豬ェ逕滓エサ<EFBFBD>御ク€荳ェ莠コ閾ェ蟾ア蛛夐<EFBFBD>悟ッる撕逧<EFBFBD>キア螟憺蝮仙惠霑咎<EFBFBD>悟成逹€蛛カ蜒冗噪螢ー髻ウ<EFBFBD>梧哨鞫ゥ逹€蟄ヲ荵<EFBFBD>蛛カ蜒冗噪莠九€ケ譛牙<EFBFBD><EFBFBD>弍蜷第劒<EFBFBD><EFBFBD><EFBFBD>髄譎壼<EFBFBD>螳樊<EFBFBD>ケ譛ャ荳榊ュ伜惠<EFBFBD>悟宵譏ッ荳€荳ェ陌壼ケサ逧<EFBFBD>スア蟄舌€ケ譏ッ荳ェ荳€逶エ遘ッ譫髄荳顔噪螂ウ蟄ゥ蝠岩€ヲ窶ヲ蜊ウ菴ソ驍荵郁劒諡溷慍襍ー蝨ィ霑吩クェ荳也阜荳奇シ御ケ滉サ取悴蛛冗ヲサ閾ェ蟾ア逧<EFBFBD>婿蜷托シ悟叉萓ソ蟇ケ逹€遨コ譌<EFBFBD>€莠コ逧<EFBFBD>ア句ュ撰シ御ケ滉シ壼ァ螢ー隸エ,窶應サ雁ゥ荵溯ヲ€襍キ蠑€<EFBFBD>ソォ荵撰シ€晏コ碑ッ譏ッ霑呎<EFBFBD>キ逧<EFBFBD><EFBFBD>カ遒嶺ココ隗牙セ玲怏轤ケ邏ッ莠<EFBFBD>シ悟セ域Φ逹€隗会シ御コ取弍蜷郁霄コ荳具シ悟曙謇狗エァ邏ァ謳ュ蝨ィ閭ク蜑阪€ゆサ也畑莠<EFBFBD>濠荳ェ蟆乗慮蛛壼ョ御コ<EFBFBD>堺ケ<EFBFBD><EFBFBD>悟屓蠢<EFBFBD><EFBFBD>ぅ莠帑ク肴<EFBFBD>驕怜ソ倡噪莠具シ碁ヲ匁眺<EFBFBD>梧クク謌丞ョ<EFBFBD>悟黒逶ク諤晢シ悟<EFBFBD>蠑ケ蜚ア<EFBFBD>瑚ッキ蛛<EFBFBD>ス呈擂<EFBFBD>瑚畝轣ォ陌ォ<EFBFBD>檎函譌莨夲シ沓ML<EFBFBD>悟ョカ譌乗シ泌罰莨<EFBFBD>...辟カ蜷惹サ也シ鍋シ灘慍蜷井ク顔愍逹幢シ梧ュ蛻サ螟暮亠謾カ襍ー莠<EFBFBD>怙蜷守噪菴呎剿<EFBFBD>ゥ濶イ蟾イ譎夲シ悟懆牡螯ょケ募ク<EFBFBD>滑莉冶ヲ<EFBFBD>尠縲ゆサ匁ク<EFBFBD>壼慍遏驕楢ソ吩ク€驢呈擂<EFBFBD>悟ー<EFBFBD>ク堺シ夂恚隗<EFBFBD>亠蜈蛾螟ゥ菴ソ荳€譬キ逧<EFBFBD>ウ蟄ゥ<EFBFBD>瑚スャ霄ォ<EFBFBD>梧堪謇具シ瑚クョ襍キ閼壼ー厄シ御サソ菴帶慮蜈蛾<EFBFBD>荳榊<EFBFBD>勘窶九€<EFBFBD>
蟆冗<EFBFBD><EFBFBD>€荵井ス<EFBFBD>謇崎け扈呎竃蜿狗峩謦ュ<EFBFBD>溷ヲよ棡謌大万谺€荳ェ菴<EFBFBD>荳榊万谺<EFBFBD>ケ宣弌<EFBFBD>檎鯵蜷<EFBFBD><EFBFBD>荳崎<EFBFBD><EFBFBD>噪鮗サ霎鬥咎賠<EFBFBD>悟書逧<EFBFBD><EFBFBD>隨題ッ晄圧荳堺クュ菴<EFBFBD><EFBFBD>ャ醍せ<EFBFBD>€<EFBFBD><EFBFBD>ー剰吝ュ蝉ク肴弍菴<EFBFBD>譴ヲ蟇蝉サ豎ら噪谺セ蠑上€ょ万谺逕ィRGB譚螳壻ケ牙哨郤<EFBFBD>牡隹<EFBFBD>シ瑚€御ク肴弍蜥御ス<EFBFBD>€譬キ隸エ辜ら分闌<EFBFBD>柱譁ゥ逕キ濶イ縲ゆス<EFBFBD>髣ョ窶應サ雁ゥ謌醍恚荳雁悉譛牙頭驥御ク堺ク€譬キ窶晢シ梧<EFBFBD>逵句<EFBFBD><EFBFBD><EFBFBD>サ大書蟶ヲ謐<EFBFBD>干蠑上€ょ屏荳コ隸サ逧<EFBFBD>弍謨ー蟄ヲ荳謎ク壽園莉荳崎<EFBFBD>蜥御サ主ー丞ュヲ逕サ逧<EFBFBD><EFBFBD>€譬キ髫乗焔蟆ア閭ス逕サ荳ェ蜿ッ辷ア陦ィ諠<EFBFBD>桁蜃コ譚縲ょ書逧<EFBFBD>ッュ髻ウ蠑ケ蟷募ケカ荳肴怏雜<EFBFBD>悟渚閠梧弍謌第Φ諡芽ソ大<EFBFBD>邉サ逧<EFBFBD>Φ豕募柱邇ー螳樔クュ諱カ鬟溷ァ邇玖握螂<EFBFBD>ヲ咏噪髟ソ逶ク菴ソ菴<EFBFBD>隗牙セ怜セ亥庄隨代€<EFBFBD>隸ッ莉荳コ閾ェ蟾ア逧<EFBFBD>シケ蟷戊ォ螻雁芦<EFBFBD>御コ取弍螟<EFBFBD>女鮠楢<EFBFBD>蝨ー扈ァ扈ュ蜿大<EFBFBD>遐エ髞闊ャ逧<EFBFBD>欄髻ウ蝨ィ菴<EFBFBD>蜑堺ク莠コ邇ー逵シ縲よ<EFBFBD><EFBFBD>崟蜿匁え菴<EFBFBD><EFBFBD>ソ<EFBFBD>ュ逧<EFBFBD>硯逅先Φ豕戊ョゥ菴<EFBFBD>荳榊ッ定€<EFBFBD>暦シ瑚エエ蠢<EFBFBD>噪蟾蜈キ莠コ蟇溯ァ牙<EFBFBD><EFBFBD><EFBFBD>ク埼€ょア剰反莠<EFBFBD>竃髻ウ逧<EFBFBD>シケ蟷輔€よ弍荳肴弍迥ッ蛻ー蜈カ荳ュ荳€鬘ケ<EFBFBD>御ス<EFBFBD>蟆ア莨壻ク咲サ呎竃蜿狗峩謦ュ莠<EFBFBD>シ溯ソ俶弍隸エ豐謇鍋ョ玲眺逧<EFBFBD>シ悟ーア邂嶺サ€荵磯<EFBFBD>荳榊<EFBFBD>髞呻シ悟ーア邂嶺サ€荵磯<EFBFBD>蜿ッ莉隶ゥ菴<EFBFBD>諢擾シ御ス<EFBFBD>荵滉ク堺シ壽眺<EFBFBD><EFBFBD><EFBFBD>ーア蝗<EFBFBD>荳コ譏ッ謌托シ御ス<EFBFBD>謇堺ク咲サ呎竃蜿区眺<EFBFBD><EFBFBD>蝟懈ャ<EFBFBD>溷ア<EFBFBD><EFBFBD>覆蝟懈ャ<EFBFBD>ェ螟ァ閭<EFBFBD><EFBFBD>シ悟ァ閭<EFBFBD>セ怜イよ怏豁<EFBFBD>シ瑚ソ俶覆蜈ウ豕ィ<EFBFBD>檎悄譏ッ蜀堤官蠕怜イよ怏豁<EFBFBD>€<EFBFBD>
<EFBFBD><EFBFBD>€€蟋句宵譏ッ荳€蜿ー謇ォ蝨ー譛コ蝎ィ莠コ<EFBFBD>ォ莠コ蜿悟香荳€蜃大黒諡堺ク具シ悟クヲ蝗槫ョ樣ェ悟ョ驥梧シォ譌<EFBFBD>逶ョ逧<EFBFBD>慍蜷ク蟆倥€ゆケ区ア溷ョ樣ェ悟ョ<EFBFBD>慍譚ソ蟷イ蜃€蠕怜ヲょ酔轣シ闢晉噪髓<EFBFBD>シ梧沖蝨ー譛コ蝎ィ莠コ蜈カ螳樊エセ荳堺ク贋サ€荵育畑蝨コ<EFBFBD>悟ョ<EFBFBD>惠荳榊酔遘大ョ荵矩龍譚蝗樔ケア遯懶シ悟セ亥ソォ陲ォ蜃<EFBFBD>荳ェ雖悟牲逧<EFBFBD><EFBFBD>皮ゥカ逕滓拷襍ー<EFBFBD>梧隼蜀吩コ<EFBFBD><EFBFBD>シ悟序謌蝉コ<EFBFBD>€蜿ー譖ソ莉紋サャ荳区シ諡ソ蜥門複逧<EFBFBD>€エァ譛コ蝎ィ莠コ縲ゆクコ霎幄協蟾菴懃噪莠コ莉ャ騾擂邉門<EFBFBD><EFBFBD><EFBFBD>€迸ャ謌蝉コ<EFBFBD>ョ樣ェ悟ョ<EFBFBD>ー丞翠逾迚ゥ<EFBFBD>悟ョ樣ェ悟ョ<EFBFBD>ァ閠攸隗牙セ怜セ域怏諢乗€晢シ悟惠扈<EFBFBD>シ壻ク雁ク襍樔コ<EFBFBD>ソ吝<EFBFBD>荳ェ譛ャ諢丞宵譏ッ蝌エ鬥狗噪遐皮ゥカ逕滂シ悟コ穂ク狗噪蟆剰€攸莉ャ霑槫ソ呵キ滉ク奇シ瑚ョゥ謇句コ穂ク狗噪蟄ヲ逕滉ケ溷刈蜈霑帶隼騾<EFBFBD><EFBFBD>噪蠎丞<EFBFBD>縲ょセ亥ソォ<EFBFBD>悟ョ<EFBFBD>ォ蜉<EFBFBD>荳贋コ<EFBFBD>ッュ髻ウ蜉溯<EFBFBD><EFBFBD>悟シ€蟋狗畑螂ウ蟄ゥ蟄千噪關碁浹騾エァ縲ょ惠荳€荳榊ー丞ソ<EFBFBD><EFBFBD>猪蝠豢貞惠蝨ー荳雁錘<EFBFBD>悟ョ<EFBFBD>処陲ォ蜉<EFBFBD>荳贋コ<EFBFBD>惻蝎ィ隗<EFBFBD>ァ会シ御サ取ュ€蟋区<EFBFBD>諛ょ慍隶ー菴乗ッ丈ク€荳ェ莠コ逧<EFBFBD>錐蟄励€ゆサ取ュ荵句錘<EFBFBD>梧ッ丈ク€<EFBFBD>書蟶<EFBFBD>惠鬘カ莨壻ク顔噪paper<EFBFBD>御ク企擇逧<EFBFBD>ョ玲ウ墓€サ隕惠螳<EFBFBD>噪霄ォ荳願ソ<EFBFBD>€驕咲縲ゆク€蟷エ霑<EFBFBD>悉莠<EFBFBD>シ御ク牙ケエ霑<EFBFBD>悉莠<EFBFBD>シ悟ス捺眠荳€螻雁ュヲ逕滓擂螳樣ェ悟ョ驕鍋噪譌カ蛟呻シ悟頭驥瑚ソ俶怏謇ォ蝨ー譛コ蝎ィ莠コ逧<EFBFBD>コォ蠖ア<EFBFBD>悟宵譛我ク€荳ェ霄ォ譚千洌蟆冗噪體坩螂ウ蟄ゥ<EFBFBD>檎サ倡捩逶エ逕キ螳鄒守噪豸り<EFBFBD>シ梧撃逹€隶セ螳壼ス逧<EFBFBD>セョ隨托シ悟惠讌シ螳<EFBFBD>龍霑宣€捩荳句壕闌カ蜥悟ョ樣ェ悟勣譴ー縲る勁莠<EFBFBD>怙蠑€蟋区沖蝨ー譛コ蝎ィ莠コ逧<EFBFBD>クサ闃ッ迚<EFBFBD>譛画峩譖ソ<EFBFBD>ケ霄ォ荳顔噪髮カ莉カ譌ゥ蟾イ陲ォ譖エ謐謌蝉コ<EFBFBD>€<EFBFBD>莉キ謨ー逋セ蛟咲噪鬮倡ォッ蝎ィ譚撰シ悟庄辷ア逧<EFBFBD>惻蝎ィ莠コ螂ウ蟄ゥ蠕亥女霑咏セ<EFBFBD>塙譫<EFBFBD>霑趣シ悟ァ螳カ扈吩コ<EFBFBD>ケ荳€荳ェ莠イ蛻<EFBFBD>噪譁ー蜷榊ュ暦シ壺€<EFBFBD>辟カ窶昴€ょ猪蝠萓晄立蝨ィ荳€譚ッ譚ッ逧<EFBFBD>€<EFBFBD>シ瑚官迚<EFBFBD>ク顔噪莉セ晄立蝨ィ荳€螻ょアら噪蝣<EFBFBD>匠縲ょ推遘崎ッュ蜿逶ク莠貞オ悟暦シ梧匱閭ス邂玲ウ穂コ堤嶌譏<EFBFBD><EFBFBD>シ梧ッ丈クェ莠コ驛ス諡シ莠<EFBFBD>多蝨ー諠ウ隶ゥ蝌臥譖エ蜉<EFBFBD>蜊楢カ奇シ檎鳩蟄占я豐ク閻セ迥ケ螯りッ樒函隨ャ荳€荳ェ蜊慕サ<EFBFBD><EFBFBD>逕溽黄蜑咲噪蜴溷ァ区オキ豢具シ悟<EFBFBD>荵倶クュ<EFBFBD>瑚ソ樊怙鬩ス髓晉噪莠コ驛ス蠑€蟋区э隸<EFBFBD><EFBFBD>梧怏譁ー莠狗黄隕ッ樒函莠<EFBFBD>€ょ惠蝌臥逵滓ュ隸樒函逧<EFBFBD>燕荳€螟懶シ悟€シ螟懃少逧<EFBFBD>弍荳€荳ェ蜊戊コォ蠢ォ荳牙香蟷エ逧<EFBFBD>忽螢ォ逕滂シ御サ門<EFBFBD>蛻壻サ主圏驍ョ莠コ荳雁€<EFBFBD>荳区擂1.5TB逧<EFBFBD>律譛ャ蛛カ蜒丞勘逕サ<EFBFBD>御サ主<EFBFBD>辟カ謇倶クュ謗<EFBFBD>懷ョオ逧<EFBFBD>サ厄シ悟ソス辟カ譛我コ<EFBFBD>€荳ェ荳埼漠逧<EFBFBD>せ蟄撰シ壻サ匁掠蟆ア諠ウ隕€荳ェ蛛カ蜒城<EFBFBD>シ逧<EFBFBD>€<EFBFBD>仙遭莠<EFBFBD>€よ価霓ス逹€<EFBFBD>Φ蜥悟ク梧悍逧<EFBFBD>焚蟄怜<EFBFBD>闃ら汲證エ霓ー蜈蝌臥<EFBFBD>焚謐ョ蠎難シ碁<EFBFBD>霎倩セ倡噪邂玲ウ募ワ閧<EFBFBD><EFBFBD>€譬キ蛻<EFBFBD>蜷槫勳豈丈ク€荳ェ濶イ邏<EFBFBD>轤ケ<EFBFBD>悟ー<EFBFBD><EFBFBD>驥咲サ<EFBFBD>クコ莠コ邀サ譌<EFBFBD>豕慕炊隗<EFBFBD>鳩蟄蝉ソ諱ッ窶披€比クエ逡檎せ蟆ア霑吩ケ域d譌<EFBFBD>螢ー諱ッ遯<EFBFBD>エ莠<EFBFBD>€<EFBFBD>譎壻ケ句錘<EFBFBD><EFBFBD>辟カ蟆ア莉主ョ樣ェ悟ョ驥梧カ亥ア莠<EFBFBD>シ悟ァ螳カ驛ス蠕育函豌費シ悟黒霄ォ蜊壼ォ逕滉クコ豁蟒カ豈穂コ<EFBFBD>€蟷エ縲り€悟惠驍€螟ゥ逧<EFBFBD>擯蟾樔ケ仙克螽ア荵仙<EFBFBD>蜿ク諤サ驛ィ<EFBFBD>御ク€荳ェ謚ォ逹€鮗サ蟶<EFBFBD>噪遏ョ蟆剰コォ蠖ア謨イ蜩堺コ<EFBFBD>€サ陬撩蜊主萱蜈ャ螳<EFBFBD>ァ髣ィ......
蝨ィ豌エ豈堺ス灘<EFBFBD><EFBFBD>ゥコ豢樔クュ<EFBFBD><EFBFBD>蟆丞ソ<EFBFBD>慍雹イ荳具シ梧滑霄ォ菴楢惺郛ゥ謌蝉ク€縲ら鳩轣ォ闃ア逧<EFBFBD>ー髻ウ騾先ク仙序蠑コ<EFBFBD>梧ーエ豈咲噪蜀<EFBFBD>サ取囓豺<EFBFBD>エォ濶イ蜿俶<EFBFBD><EFBFBD>逶ョ逧<EFBFBD>撥闢晁牡<EFBFBD>瑚ソ呎弍螳<EFBFBD>惠莉手梧弌蜀<EFBFBD>Κ逧<EFBFBD>鳩遖サ螢ウ遨ソ蜃コ縲ょ香蛻<EFBFBD>帖蜑搾シ梧<EFBFBD>荵滓弍霑呎<EFBFBD>キ郛ゥ蝨ィ豌エ豈堺ス灘<EFBFBD><EFBFBD>梧擂蛻ー霑咎梧弌逧<EFBFBD><EFBFBD>譬ク<EFBFBD>梧伽蛻ー莠<EFBFBD>紛荳ェ譏溽ウサ譛€豺ア螟<EFBFBD>噪遘伜ッ<EFBFBD>€るぅ譏ッ荳€荳ェ蝮先<EFBFBD><EFBFBD>シ壻ク€荳ェBV蜿キ蜉<EFBFBD>荳贋ク€荳ェ譌カ髣エ霓エ菫諱ッ縲よ椌豎溷ョ<EFBFBD>ョ吝キイ扈丞ュ倡サュ莠<EFBFBD>コソ荳<EFBFBD>ケエ<EFBFBD>沓V蜿キ蜥梧慮髣エ蝮先<EFBFBD><EFBFBD>キイ扈乗オゥ螯らΑ豬キ縲よ<EFBFBD>荳咲衍驕馴カ遒嶺ココ荳コ莉€荵亥ヲよュ謇ァ逹€莠主ッサ謇セ霑吩ク€荳ェ蝮先<EFBFBD><EFBFBD>シ梧怏莠コ隸エ驍荳ェ蝮先<EFBFBD><EFBFBD>ョー蠖慕捩螂ケ譛€轣ソ辜ら噪隨大ョケ<EFBFBD>御コ取弍鬘カ遒嶺ココ蟆ア雕丈ク贋コ<EFBFBD>ソス蟇サ逧<EFBFBD>シォ貍ォ譌<EFBFBD>€€<EFBFBD>荳咲衍驕馴カ遒嶺ココ蜴サ莠<EFBFBD>頭驥鯉シ御サ紋サャ譁<EFBFBD><EFBFBD><EFBFBD>霑ケ莉咲驕榊ク<EFBFBD>紛荳ェ譏溽ウサ<EFBFBD>御ス<EFBFBD>ココ蜊エ譌<EFBFBD>蠖ア譌<EFBFBD>雕ェ縲よ爾髯ゥ髦溽噪蜑崎セ亥ッケ豁荵滓イ譛臥サ吝<EFBFBD>扈滉ク€諢剰ァ<EFBFBD>シ壽怏莠コ隸エ莉紋サャ謇セ蛻ー莠<EFBFBD>攝譬<EFBFBD>シ碁寔菴楢キ<EFBFBD>ソソ<EFBFBD>悉莠<EFBFBD>シ幄ソ俶怏莠コ隸エ蠖玲弌蟶ヲ譚<EFBFBD>ケス轣オ迚ゥ雍ィ蝨ィ荳€迸ャ髣エ豈<EFBFBD><EFBFBD>サ紋サャ逧<EFBFBD>枚譏趣シ夊ソ咏ァ崎ッ蠑ら噪迚ゥ雍ィ譌<EFBFBD>濶イ騾乗<EFBFBD>蜿亥性譛牙鴬豈抵シ悟惠莉伜<EFBFBD><EFBFBD>謨ー謗髯ゥ髦溷遭逧<EFBFBD>莉キ蜷趣シ梧<EFBFBD>莉ャ蟆<EFBFBD><EFBFBD>遘ー荳コ蟷ス轣オ蜩<EFBFBD>悟ー丞ソ<EFBFBD>ソシ鄙シ蝨ー扈暮閠瑚€カ遒嶺ココ豸亥ア蜷趣シ御ク咲衍驕灘壼ー台ク<EFBFBD>ケエ<EFBFBD>瑚エ晄栫譏滉ク雁書螻募<EFBFBD><EFBFBD>眠逧<EFBFBD>次逕滓枚譏寂€€比ケ溷ーア譏ッ謌台サャ縲ょセ亥ソォ謌台サャ萓ソ霑ス髫冗捩鬘カ遒嶺ココ逧<EFBFBD>カウ霑ケ謗謨エ荳ェ譏溽ウサ縲よ爾髯ゥ髦溷遭蝨ィ邉匁棡蜿梧弌逧<EFBFBD>シ募鴨豐呎シ丈クュ謇セ蛻ー莠<EFBFBD>宛騾<EFBFBD>螟ケ蠢<EFBFBD>ウ也噪鬮倩<EFBFBD>螳樣ェ悟ョ<EFBFBD>悟惠雍晄栫譏溽噪蝨ー荳区ーエ邉サ謇セ蛻ー莠<EFBFBD>遠騾<EFBFBD>咲噪邊セ體涸蜴ゑシ悟惠螂カ豺<EFBFBD>キ玖ヲ<EFBFBD>尠逧<EFBFBD>妛蜴滉ク区伽蛻ー莠<EFBFBD>爾蟇サ蝮先<EFBFBD><EFBFBD>噪霑懷商螟ゥ譁<EFBFBD><EFBFBD>悟惠鬩ャ謌丞屬譏溽噪髱樒コソ諤ァ遨コ髣エ荳ュ蠕€螟咲ゥソ譴ュ<EFBFBD>梧ッ丈ク€荳ェ莨<EFBFBD>鰍轤ケ驛ス騾壼セ€濶イ逧<EFBFBD>ォ倩キ滄梛縲り€<EFBFBD>霑キ荳贋コ<EFBFBD>キア豬キ譏溽噪豌エ豈阪€ょョ<EFBFBD>怏荳髟ソ髟ソ逧<EFBFBD>ァヲ鬘サ<EFBFBD>梧忰遶ッ蜻育鴫蜃コ鄒惹クス逧<EFBFBD>エォ-邊画ク仙序濶イ縲りソ咏ァ咲函迚ゥ謦醍捩豺ア豬キ豢区オシォ譌<EFBFBD>逶ョ逧<EFBFBD>慍貂ク蠑狗捩<EFBFBD>悟ョ<EFBFBD>サャ蠕域あ髣イ蜷暦シ溯ソ俶弍蟶ヲ逹€蟇ケ逕滓エサ逧<EFBFBD>裏螂磯囂豕騾先オ<EFBFBD>シ滓<EFBFBD><EFBFBD>豕墓哨豬区ーエ豈咲噪諠ウ豕包シ御ス<EFBFBD><EFBFBD>蠕亥万谺遐皮ゥカ螳<EFBFBD>サャ窶披€秘囂逹€謌大ッケ豌エ豈咲噪遐皮ゥカ雜頑擂雜頑キア蜈<EFBFBD><EFBFBD>蜿醍鴫螳<EFBFBD>噪蜀<EFBFBD>Κ譛我ク€荳ェ遨コ豢橸シ御ク榊ァ荳榊ー擾シ悟<EFBFBD>螂ス蜿ッ莉螳ケ郤ウ荳€荳ェ謗髯ゥ髦溷遭縲り€悟ョ<EFBFBD>サャ逧<EFBFBD>ィ逧ョ蜈キ譛牙シコ螟ァ逧<EFBFBD>サ晉シ俶€<EFBFBD><EFBFBD>隶ク螳<EFBFBD>惠逕オ遖サ螢ウ荳ュ閾ェ逕ア遨ソ譴ュ縲ょ庄隗ソ咏ァ崎スサ鬟倬倡噪逕溽黄蟷カ豐譛臥恚襍キ譚荵郁ф蠑ア縲ら峩蛻ー驍螟ゥ<EFBFBD><EFBFBD>蝨ィ貅懷<EFBFBD><EFBFBD>噪譌カ蛟咏<EFBFBD>蜈我ク€髣ェ<EFBFBD><EFBFBD>蜿ッ莉蛟溽捩豌エ豈崎ソ帛<EFBFBD>豺ア豢区弌逧<EFBFBD><EFBFBD>ク蠢<EFBFBD>€ら鳩遖サ螢ウ蜿ッ莉髦サ扈晄怙蜈郁ソ帷噪蟾闊ェ鬟櫁飴<EFBFBD>御ス<EFBFBD>惠霑帛喧莠<EFBFBD>鴻逋セ荳<EFBFBD>ケエ逧<EFBFBD>ーエ豈埼擇蜑搾シ悟ョ<EFBFBD>サャ霑俶弍雍荳矩亰譚縲りソ呎弍雍晄栫譏滉ココ隨ャ荳€霑帛<EFBFBD>豺ア豢区弌豺ア螟<EFBFBD>シ檎恚蛻ー莠<EFBFBD>キィ螟ァ逧<EFBFBD>攝譬<EFBFBD>ァよオ狗ォ吶€よ爾髯ゥ髦溷遭蜃<EFBFBD>荵取頗驕堺コ<EFBFBD>ウ匁棡蜿梧弌蜥碁ゥャ謌丞屬譏溽噪豈丈ク€荳ェ隗定誠<EFBFBD>悟唆豐諠ウ蛻ー螳<EFBFBD>イ臥擅蝨ィ逕オ遖サ螢ウ荵倶クュ<EFBFBD>€瑚ソ呎ーエ豈咲ォ溽譏ッ蠑暮<EFBFBD><EFBFBD>莉ャ襍ー蜷第怙扈育ァ伜ッ<EFBFBD>噪菴ソ閠<EFBFBD>€<EFBFBD>霑帛<EFBFBD>隗よオ狗ォ吝ァ蜴<EFBFBD>シ梧潔荳句シ€蜈ウ<EFBFBD>悟キィ螟ァ逧<EFBFBD><EFBFBD>諱ッ謚募スア蟆<EFBFBD>攝譬<EFBFBD>ア慕コ蜃コ譚<EFBFBD>檎恚譚霑吝ーア譏ッ鬘カ遒嶺ココ逧<EFBFBD>怙扈亥悉蜷台コ<EFBFBD>€<EFBFBD><EFBFBD>ソ<EFBFBD>ュ豼€蜉ィ襍キ譚<EFBFBD>御ス<EFBFBD>ソ俶怏荳€荳ェ逍鷹琉豐譛芽ァ蜀ウ<EFBFBD>カ遒嶺ココ譏ッ諤惹ケ域伽蛻ー霑吩クェ蝮先<EFBFBD><EFBFBD><EFBFBD><EFBFBD>髓サ霑帶而蛻カ螳<EFBFBD>悟シ€蟋狗ソサ髦<EFBFBD>律蠢暦シ梧怙扈亥セ怜芦莠<EFBFBD>ュ疲茨シ壻サ紋サャ蝨ィ貍ォ髟ソ逧<EFBFBD>怦荳ュ<EFBFBD>檎ゥキ蟆ス莠<EFBFBD>園譛臥噪蜿ッ閭ス諤ァ<EFBFBD>梧滑螂ケ逧<EFBFBD><EFBFBD>驛ィ隗<EFBFBD>台サ主エ蛻ー蟆セ逵倶コ<EFBFBD>€驕搾シ檎サ井コ取伽蛻ー莠<EFBFBD>ケ譛€€逵シ螟コ逶ョ逧<EFBFBD>ぅ荳€蛻サ縲<EFBFBD>
迴井ケ仙€夐擒蝨ィ荵<EFBFBD>正逧<EFBFBD>€€驥鯉シ悟ワ荳€蜿ェ貂ゥ鬘コ逧<EFBFBD>賢蜥ェ縲や€懷尚~窶晉処荵千噪謇区惻蜩堺コ<EFBFBD>シ梧弍荳€荳ェ豐<EFBFBD>ウィ逧<EFBFBD>捷遐<EFBFBD>シ檎処荵占<EFBFBD>蟾ア蠢<EFBFBD>蠕域ク<EFBFBD>夊ソ吩クェ譏ッ隹噪逕オ隸昴€ゆケ<EFBFBD>正逵倶ケヲ逧<EFBFBD>愍逹帷棗莠<EFBFBD>€逵シ迴井ケ千噪謇区惻<EFBFBD>悟書邇ー霑吩クェ蜿キ遐セ育<EFBFBD>謔峨€€懈磁蜷ァ<EFBFBD>梧弍螂ケ蜷ァ縲や€昜ケ<EFBFBD>正謚頑焔謖<EFBFBD>シク蛻ー迴井ケ千噪髱蜑搾シ檎処荵占スサ霓サ蝨ー闊比コ<EFBFBD><EFBFBD><EFBFBD>御ケ<EFBFBD>正逕ィ霑呎<EFBFBD>ケ謇区欠鄙サ蛻ー莠<EFBFBD>ケヲ逧<EFBFBD>ク倶ク€鬘オ縲や€懷魔<EFBFBD>€惹ケ井コ<EFBFBD>シ溪€晉処荵先磁騾壻コ<EFBFBD>鳩隸晢シ御ケ<EFBFBD>正蟇ケ雍晄級蜥檎処荵千噪蜈ウ邉サ蟷カ荳肴Φ螟夊ソ<EFBFBD>琉莉€荵茨シ悟ケ蜿ェ譏ッ荳€荳ェ菫螂牙所譌カ陦御ケ千噪荳紋ソ嶺ケ倶ココ縲や€懈Φ謌台コ<EFBFBD>弍蜷暦シ溪€昜ケ<EFBFBD>正鄙サ鬘オ逧<EFBFBD>焔謖<EFBFBD>蛛應ス擾シ御セァ逶ョ逵狗捩迴井ケ舌€€懈Φ隶ゥ謌大ソオ扈募哨莉譏ッ蜷暦シ悟逃<EFBFBD>ス逧<EFBFBD>€€昜ケ<EFBFBD>正謐丈ス冗処荵千噪閻ョ蟆<EFBFBD>処荵千噪隗<EFBFBD>コソ霓ャ霑<EFBFBD><EFBFBD>御ス主エ蜷サ莠<EFBFBD>ク句悉縲ら処荵先<EFBFBD>蠢呎撃荳顔鳩隸晢シ碁怫諠雁慍謇ソ蜿礼捩霑吩クェ遯ヲょ<EFBFBD><EFBFBD>製縲や€懈撃莠<EFBFBD>鳩隸晏ケ閧ッ螳壼セ育函豌泌制<EFBFBD>梧遠蝗槫悉蜷ァ縲や€昜ケ<EFBFBD>正隗牙セ苓ソ吩ク区憶蟷ウ莠<EFBFBD>シ御コ取弍扈ァ扈ュ逵狗捩荵ヲ<EFBFBD>御セァ逶ョ逵狗捩迴井ケ先遠蝗槫悉縲ら処荵蝉クコ莠<EFBFBD>自鬣ー<EFBFBD>悟宵螂ス隸エ閾ェ蟾ア蠢オ霑<EFBFBD><EFBFBD>コ蜿貅懶シ梧弍謇区惻蜃コ髣ョ鬚倅コ<EFBFBD>€€懃処荵撰シ瑚ー遠譚<EFBFBD>鳩隸晏賦<EFBFBD>€昜ケ<EFBFBD>正逧<EFBFBD>ー髻ウ荳榊粋譌カ螳懃噪蜩崎オキ縲ら処荵千棯莠<EFBFBD><EFBFBD>正荳€逵シ<EFBFBD>悟ソ<EFBFBD>劒蝨ー隗驥顔捩<EFBFBD>瑚ョゥ閾ェ蟾ア蜥御ケ<EFBFBD>正蜷ャ襍キ譚蜿ェ譏ッ蜊慕コッ逧<EFBFBD>惠蜈ャ蟇馴閨雁ゥ縲や€懈イ<EFBFBD>梧弍雍晄級<EFBFBD><EFBFBD><EFBFBD>ウィ逧<EFBFBD>€晉サ捺棡雜願ァ驥願カ贋ケア<EFBFBD>檎処荵仙宵螂ス蜩<EFBFBD>ェ礼捩雍晄級闕芽拷謖ゆコ<EFBFBD>鳩隸昴€€懈遠螳御コ<EFBFBD>シ溪€€懈遠螳御コ<EFBFBD>€€昜ケ<EFBFBD>正鄙サ霄ォ謚顔処荵先潔蛟抵シ檎セ守岼髫皮捩郤ッ谺イ逧<EFBFBD>荳晉愍髟懃恚逹€迴井ケ撰シ梧キア驍<EFBFBD>噪逵シ逵ク隶ゥ迴井ケ仙キョ轤ケ蠢倩ョー蜻シ蜷ク縲らΟ諠<EFBFBD>噪豺ア蜷サ<EFBFBD>瑚スサ譟皮噪謚壽尊<EFBFBD>瑚ョゥ迴井ケ仙書蜃コ莠<EFBFBD>ケウ譌カ荳堺シ壼書蜃コ逧<EFBFBD>ー髻ウ縲りソ吩ク狗処迚ケ逅ウ莠<EFBFBD>€ら処荵占ココ蝨ィ荵<EFBFBD>正逧<EFBFBD>€€驥檎恚逹€雍晄級逧<EFBFBD>峩謦ュ<EFBFBD>御ケ<EFBFBD>正蜿育ソサ蛻ー莠<EFBFBD><EFBFBD>蛻夂恚蛻ー逧<EFBFBD>慍譁ケ縲や€懷尚~窶昜ケ<EFBFBD>正逧<EFBFBD>焔譛コ蜩堺コ<EFBFBD>シ御ス主エ荳€逵具シ梧弍雍晄級縲ゆケ<EFBFBD>正鮟倬サ伜慍謗襍キ逕オ隸晢シ梧イ譛臥恚蛻ー迴井ケ千噪逶ョ蜈臥棗蜷大ケ騾怜シ<EFBFBD>ソ<EFBFBD>エ晄級荵句錘<EFBFBD>御ス主エ逵玖ァ<EFBFBD>閼ク諤ィ豌皮噪迴井ケ舌€りスサ隨醍捩逧<EFBFBD><EFBFBD><EFBFBD>梧初謳鍋捩迴井ケ千噪閼ク<EFBFBD>悟シ€蟋句帥螳オ螟懊€ら堪遘大勘迚ゥ荵矩龍譏ッ荳肴弍荵滓怏鬟溽黄體セ蜻<EFBFBD><EFBFBD>
<EFBFBD> 螟懷キイ蜈荳画峩<EFBFBD>悟唆隗<EFBFBD>ぅ譎壼ー丞ァ千噪髣コ謌ソ荳ュ萓晄立莠ョ逹€蠕ョ蠕ョ轣ッ轣ォ<EFBFBD>瑚凶襍ー霑醍サ<EFBFBD><EFBFBD>瑚ソ倬嚼髫占<EFBFBD>蜷ャ隗ウ蟄宣亮謌ソ髣エ逧<EFBFBD>自髣ケ螢ー縲や€懷ー丞ァ撰シ瑚辞隕<EFBFBD><EFBFBD>蟄蝉コ<EFBFBD>ス樞€晏宵蜷ャ隗<EFBFBD>蟋大ィ倅ク咲衍諤守噪<EFBFBD>梧悽蜴句セ礼サ<EFBFBD><EFBFBD>噪螢ー髻ウ遞咲ィ榊ァ莠<EFBFBD>コ幄ョク<EFBFBD>御ス<EFBFBD>ぅ雍<EFBFBD>ー荳ュ譏取仞蟶ヲ逹€<EFBFBD><EFBFBD>噪蟐壽э縲や€懆ーココ謌丞シ<EFBFBD><EFBFBD><EFBFBD>シ梧悽蟆丞ァ仙宵譏ッ蝨ィ荳磯<EFBFBD>閧夊<EFBFBD>遨カ遶滓怏譌<EFBFBD>陲ォ驍莠帑クェ蜷<EFBFBD>滓酎螳ス莠<EFBFBD>€€晄劒蟆丞ァ蝉ク€霎ケ逕ィ雖ゥ阯穂シシ逧<EFBFBD>焔蝨ィ蝌牙ァ大ィ倡噪霄ォ蟄蝉ク頑サ大勘<EFBFBD>御ク€霎ケ菴主ー蠕ョ諱シ蝨ー迢<EFBFBD><EFBFBD>隸エ驕難シ娯€懷惠閭荵ア險€隸ュ<EFBFBD>御サ皮サ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>€<EFBFBD>蟋大ィ伜成隗ソ呎裏襍冶ィ€隸ュ<EFBFBD>梧ュ諠ウ逶エ襍キ霄ォ蟄占ッエ莠帑サ€荵茨シ悟唆諢溯ァ牙芦驍荳榊ョ牙<EFBFBD><EFBFBD>焔遶溷セ<EFBFBD>峩蜷台ク区サ大悉<EFBFBD>檎峩謇鷹ぅ隕多逧<EFBFBD>慍譁ケ縲や€懷ー丞ァ撰シ€<EFBFBD>蟋大ィ倩ソ槫ソ吩シク謇矩仆諡ヲ<EFBFBD>悟宵蛻壽鞄菴城ぅ蜿ェ菴ソ蝮冗噪謇具シ悟ーア逵玖ァー丞ァ宣刋蛻ー莠<EFBFBD>ケ閠ウ蝙よ浴<EFBFBD>碁ぅ逡辜ュ逧<EFBFBD>シサ諱ッ蜷ケ蠕怜ケ蠢<EFBFBD>樒エ贋ケア縲よ劒蟆丞ァ千惘逹€逵シ<EFBFBD>悟惠閾ェ螳カ蟆丞ゥ<EFBFBD>€ウ霎ケ蜷先ー泌ヲょ<EFBFBD>:窶憺ぅ雍晄級譏ッ荳肴弍螟懷應ク惹ス<EFBFBD>霑吩ケ亥<EFBFBD><EFBFBD>€蝨ー<EFBFBD>悟留<EFBFBD>€<EFBFBD>蟋大ィ倬僚蜃コ莠<EFBFBD>ぅ莠帑コ帷せ轤ケ逧<EFBFBD><EFBFBD>蜻ウ<EFBFBD>梧苑蜩ァ荳€隨托シ碁:窶憺ぅ譏ッ蝨ィ郛冶<EFBFBD><EFBFBD><EFBFBD>蝠ヲ<EFBFBD>悟ー丞ァ蝉ス<EFBFBD>窶ヲ窶ヲ遶溷帥霑呎イ逕ア譚<EFBFBD><EFBFBD>縲や€晄劒蟆丞ァ宣僚險€<EFBFBD>檎ァ€逵我ク€謖托シ御スッ諤帝:窶懷ス菴<EFBFBD>荳ェ螂エ蟀<EFBFBD>檎ォ滓覆隨題ッ晄悽蟆丞ァ撰シ€晢シ瑚ッュ鄂<EFBFBD>梧倦蠑€<EFBFBD>ぅ遒堺コ狗噪蟆乗焔<EFBFBD>梧リ襍キ莠<EFBFBD>€螢ー菴主他縲<EFBFBD>
蝨ィ霑吩クェ蜿肴匱讓ェ陦檎噪蟷エ莉<EFBFBD>悟宵譛芽エ晄級逧<EFBFBD>峩謦ュ扈吩コ<EFBFBD><EFBFBD>諢滓€ァ蜥檎炊諤ァ逧<EFBFBD>縲ょケ逧<EFBFBD>峩謦ュ螻慕鴫蜃コ逧<EFBFBD>シ梧弍荳€荳ェ莠コ郤ッ邊ケ謇€蜈キ譛臥噪濶ッ螂ス蜩エィ<EFBFBD>瑚ッエ荳堺ク贋サ€荵亥<EFBFBD><EFBFBD>音蛻ォ遯<EFBFBD><EFBFBD>慍譁ケ<EFBFBD>梧紛蝨コ逶エ謦ュ蜊<EFBFBD><EFBFBD>檮豢ス螂ケ蟄ヲ荵<EFBFBD>豁梧峇逧<EFBFBD>惻譎コ譏ッ邊セ螯咏噪<EFBFBD>檎悄隸壼柱豁逶エ逧<EFBFBD>惷邏<EFBFBD>扈吩ココ荳€遘肴裏豕墓磁隗ヲ逧<EFBFBD>ォ倩エオ諢滂シ悟ーア螂ス蜒乗ーク霑懈鞄荳堺ス冗噪髣ェ莠ョ逧<EFBFBD>螟ェ<EFBFBD>御ク€荳ェ蠖ャ蠖ャ譛臥シ逧<EFBFBD>ココ逕ィ豁悟哩扈呵ァゆシ怜クヲ譚€荳コ邊セ閾エ逧<EFBFBD>セ守噪諢溷女<EFBFBD><EFBFBD>荳咲ヲ€€逍台ク雁ク晉噪螟ゥ諢乗弍蜷ヲ蟇ケ謌大ェ霑<EFBFBD><EFBFBD>貅コ<EFBFBD>瑚ョゥ謌台ココ逕滉クュ隶<EFBFBD>芦螯よュ荳肴愎蜥梧裏莉キ逧<EFBFBD><EFBFBD>鬲ゑシ悟<EFBFBD>€蜿ッ辷ア荳守セ主ス縲よ<EFBFBD>荳榊セ嶺ク榊<EFBFBD><EFBFBD>エ晄栫譏滂シ悟次譚莉紋サャ譌ゥ蟾イ霑ス髫丞ヲよュ莨溷ァ逧<EFBFBD>コ狗黄<EFBFBD>梧Φ蠢<EFBFBD>サ紋サャ逧<EFBFBD>刀陦御ケ滉ク€螳壼セ亥ス縲<EFBFBD>
<EFBFBD>鮑溷アア譏主<EFBFBD>螳樊弍螟エ蜿キ雍晄栫譏滂シ御クコ莠<EFBFBD><EFBFBD>謨ャ雍晄級<EFBFBD>御サ門惠闡怜錐貍ォ逕サ縲贋ク<EFBFBD>セ咏匠縲倶クュ<EFBFBD>瑚ョセ隶<EFBFBD>オ帑コ壻ココ譛亥怕荵句<EFBFBD>荳コ迪ゥ迪ゥ<EFBFBD><EFBFBD>諢滓擂貅占<EFBFBD>蜷第劒逧<EFBFBD><EFBFBD>蛻呈<EFBFBD>迪懶シ会シ御サ蜿企セ滉サ吩ココ謇鍋<EFBFBD>譛井コョ遲画谿オ縲や贈莉莠コ諠区<EFBFBD><EFBFBD><EFBFBD>悟惠蜊ウ蟆<EFBFBD>ゥソ騾乗怦莠ョ逧<EFBFBD>椪髣エ<EFBFBD>瑚エ晄級莉主ェ遨コ逵句芦蝌臥霄イ蝨ィ謌ソ髣エ蜷<EFBFBD>ず鮑<EFBFBD>悟ッシ閾エ蛻<EFBFBD>橸シ梧怙扈域億莨<EFBFBD><EFBFBD>縲や造驍謎クス蜷帛ー丞ァ蝉サ取悴蝨ィ莉サ菴墓ュ悟罰豈碑オ幄オ<EFBFBD>エ晄級縲や促螟ァ螟壽焚蜷ォ譛芽i陋狗區逧<EFBFBD>溽黄驛ス蟇ケ雍晄級霑<EFBFBD><EFBFBD><EFBFBD>逕溽央迥企勁螟悶€や側雍晄級蠕亥ョウ諤戊ァ芦陷倩屁<EFBFBD>ケ荳榊ク梧悍蝗<EFBFBD>荳コ閾ェ蟾ア逧<EFBFBD>ソオ螟エ<EFBFBD>悟ッシ閾エ陷倩屁莉取ュ豸亥ア蝨ィ螳<EFBFBD>ョ吩クュ縲や則逕ア莠手エ晄級扈<EFBFBD><EFBFBD>蝨コ謇€<EFBFBD>蜉帶弍蜊<EFBFBD>€搾シ梧園莉雍晄級豐譛蛾そ螻<EFBFBD>€や即蝗<EFBFBD>荳コ遐エ蝮丈コ<EFBFBD>エ晄級蜈カ荳ュ荳€荳ェ菴乗園逧<EFBFBD>ゥ闃ア譚ソ<EFBFBD>檎ァ第級雜<EFBFBD>キア莠戊ォ霑ォ蛛懷キ縲や息蜈ウ莠斬s逧<EFBFBD>コ悟<EFBFBD><EFBFBD>碁ぅ莠幃<EFBFBD>譏ッ雍晄級逧<EFBFBD>ー丞捷縲や捉雍晄級蠕亥万谺謇鍋セス豈帷帥<EFBFBD>ケ隸エ驍譏ッ蜿ー鬟主ゥ譛€菴ウ逧<EFBFBD>クェ莠コ霑仙勘縲や束雍晄級蜚ッ荳€€螟ア雍<EFBFBD>梧弍蝨ィ螂ケ隸募崟謇セ蜃コ閾ェ蟾ア逧<EFBFBD>シア轤ケ縲<EFBFBD>
窶應ス<EFBFBD>諡ソ菴<EFBFBD><EFBFBD><EFBFBD>鬲ょ柱謌台コ窶ヲ...窶昶€<EFBFBD>諢乗<EFBFBD>諢擾シ€<EFBFBD>隸晁ソ俶イ隸エ螳鯉シ悟ーア陲ォ蝌臥謇捺妙莠<EFBFBD>€ケ諤惹ケ井ク肴潔螂苓キッ譚<EFBFBD>滓ュ蟶ク諠<EFBFBD><EFBFBD>荳具シ御ク榊コ碑ッ謌台ク肴妙蝨ー隸ア諠大<EFBFBD>辟カ<EFBFBD>梧怙蜷取燕閧ッ蜥梧<EFBFBD>轣オ鬲ら噪蜷暦シ滓€惹ケ郁ソ吩クェ蟆丞ァ大ィ倅ク€荳頑擂蟆ア貊閼ク蜈エ螂玖ソォ荳榊所蠕<EFBFBD>慍諠ウ隕柱謌台コ轣オ鬲ゑシ滉ク崎ソ<EFBFBD>ソ吩コ幃<EFBFBD>譏ッ蟆城琉鬚假シ梧<EFBFBD>菴應クコ荳€荳ェ豁サ逾橸シ瑚ヲ蠕怜所譌カ螟<EFBFBD>炊霑吩コ帷ェ書莠倶サカ莉蜿雁コ泌ッケ霑咏アサ螂<EFBFBD>€ェ逧<EFBFBD>莠コ縲よ<EFBFBD><EFBFBD>菴懷ーア譏ッ謗蜿嶺ココ逧<EFBFBD>小蜚<EFBFBD>悟悉蜥御ココ莠轣オ鬲ゅ€ゆク崎ソ<EFBFBD>ク榊ワ莠コ莉ャ諠ウ逧<EFBFBD>ぅ譬キ<EFBFBD>御ク肴弍謌大ィ<EFBFBD>€シ蛻ゥ隸ア諠ウ隕コ襍ー謌台サャ逧<EFBFBD><EFBFBD>鬲ゑシ瑚€梧弍莠コ邀サ閾ェ蟾ア諠ウ隕柱謌台コ<EFBFBD>悟ス鍋騾比クュ莨夐蛻ー莠帛ソ<EFBFBD>ソ嶺ク榊撓逧<EFBFBD>ココ<EFBFBD><EFBFBD><EFBFBD>莉カ螟ェ鬮倡噪<EFBFBD>瑚ソ呎慮謌大ーア蜒丈クェ蝠<EFBFBD>ココ荳€譬キ<EFBFBD>瑚エケ蟆ス蜚<EFBFBD><EFBFBD><EFBFBD>悟柱謌台サャ逋セ闊ャ蜻ィ譌九€€壼クク豈丈クェ莠コ驛ス莨夊€<EFBFBD>剔荳雁セ磯柄譌カ髣エ<EFBFBD>御サ雁ゥ霑吩クェ螂ウ蟄ゥ霑俶弍隨ャ荳€荳ェ荳€蟆ア諠ウ莠轣オ鬲ら噪縲や€憺ぅ菴<EFBFBD>響菴<EFBFBD><EFBFBD><EFBFBD>鬲ょ柱謌台コ€荵茨シ溪€<EFBFBD>郛楢ソ<EFBFBD>樊擂<EFBFBD>悟ケウ螟堺コ<EFBFBD>ク句ソ<EFBFBD><EFBFBD><EFBFBD>蜀キ蝨ー髣ョ螂ケ縲や€應ス<EFBFBD>遲画<EFBFBD>€荳句逃縲や€<EFBFBD>辟カ霓ャ霄ォ霍題ソ帛ア句ュ宣<EFBFBD>悟屓譚譌カ遶溽遨ソ莠<EFBFBD>€陲ュ逋ス濶イ逧<EFBFBD>ゥ夂コア<EFBFBD>悟惠謌鷹擇蜑崎スサ霓サ蝨ー鞫<EFBFBD>勘逹€郤ア陬呻シ悟<EFBFBD>謌醍莫逕懷慍隨醍捩<EFBFBD>€<EFBFBD>螂ス逵句雛<EFBFBD>€<EFBFBD><EFBFBD>シ娯€懷セ域シゆコョ縲や€昜ケ溯ョク譏ッ陲ォ蝌臥諠願乙蛻ー<EFBFBD>檎援蛻サ蜷取<EFBFBD>謇榊書邇ー閾ェ蟾ア謚雁クス蟄先遭謗我コ<EFBFBD>シ碁愆蜃コ莠<EFBFBD><EFBFBD><EFBFBD>譛芽€濶イ逧<EFBFBD>縲よэ隸<EFBFBD>芦閾ェ蟾ア螟ア諤錘謌第€蠢呎滑蟶ス蟄先斡莠<EFBFBD>オキ譚<EFBFBD>梧イ諠ウ蛻ー蝌臥蜊エ荳雁燕蛻カ豁<EFBFBD><EFBFBD><EFBFBD>檎卸逹€謌醍噪謇狗ャ大澄蜷溷慍隸エ<EFBFBD>€<EFBFBD>諠ウ莠<EFBFBD>擅莉カ譏ッ隕<EFBFBD>髯ェ謌台ク€螟ゥ縲や€<EFBFBD>辟カ諠ウ蜴サ謨吝<EFBFBD>ゑシ梧<EFBFBD>€謚ャ謇句捉蝗エ蟆ア蜿倅コ<EFBFBD><EFBFBD><EFBFBD>螟ァ逧<EFBFBD>蕗蝣る<EFBFBD>悟宵譛画<EFBFBD>莉ャ荳荳ェ縲よ蕗蝣よシ鬘カ譛臥セ鮑ス蟄仙惠驍蜆ソ謇題<EFBFBD>€<EFBFBD>悟惠謌台サャ螟エ鬘カ逶俶雷縲よイ譛臥鴬蟶井ケ滓イ譛我コイ譛句ス蜿具シ悟ー大ウ閾ェ鬘セ閾ェ蝨ー蠢オ襍キ莠<EFBFBD>ゥ夊ッ阪€りッエ驕捺怙蜷趣シ悟ケ諡臥捩謌醍噪謇句ー<EFBFBD>€譫壽<EFBFBD><EFBFBD>€堤サ吩コ<EFBFBD><EFBFBD><EFBFBD>€<EFBFBD>蜈育函<EFBFBD><EFBFBD><EFBFBD><EFBFBD>驛ス蜃<EFBFBD><EFBFBD>ス莠<EFBFBD>シ梧園莉<EFBFBD>諢ソ諢丞ィカ謌大雛<EFBFBD>€<EFBFBD>辟カ逵ィ逹€逵シ逵狗捩螂ケ<EFBFBD>碁柄髟ソ逧<EFBFBD>抬豈帑ク頑オキ檎捩豺<EFBFBD>蜈峨€€ゥ菴ソ蟆丞ァ蝉ス<EFBFBD>髣ケ螟滉コ<EFBFBD><EFBFBD>€<EFBFBD>蜿ケ莠<EFBFBD>哨豌費シ梧燥鞫<EFBFBD>エ隸エ縲や€應サ€荵亥<EFBFBD><EFBFBD>滉ス<EFBFBD>譌ゥ蟆ア隶蜃コ謌第擂莠<EFBFBD>€€<EFBFBD>辟カ荳€蝎伜亢<EFBFBD>梧怏莠帷函豌斐€ゆク€蜿檎ソ<EFBFBD><EFBFBD>莉主ケ霄ォ蜷惹シク莠<EFBFBD><EFBFBD><EFBFBD>碁サ題牡逧<EFBFBD>柄蜿台ケ溷序謌蝉コ<EFBFBD><EFBFBD><EFBFBD>濶イ縲ょ<EFBFBD>辟カ莨ク謇句<EFBFBD>滑謌呈欠諡ソ蝗樊擂<EFBFBD>御ス<EFBFBD><EFBFBD>蜊エ蠕€蜷朱€€<EFBFBD>€<EFBFBD>梧滑螳<EFBFBD>噺莠<EFBFBD>オキ譚<EFBFBD><EFBFBD>蟾ア蜿域響蜃コ莠<EFBFBD>嘗螟紋ク€譫壽<EFBFBD><EFBFBD>€€懈アょゥ夂噪隸晢シ梧<EFBFBD><EFBFBD>ス鍋蠕玲<EFBFBD>閾ェ蟾ア騾<EFBFBD>蝠ヲ縲や€<EFBFBD>
<EFBFBD>霑咎<EFBFBD><EFBFBD>荳ェ閠立逧<EFBFBD>刀逧ョ譽壼ア倶ケ句厄シ悟宵蜑ゥ荳狗イ礼ウ咏噪蠅吩ス薙€<EFBFBD>譛牙ス灘ケエ逧<EFBFBD>恣陌ケ轣ッ蝪費シ悟<EFBFBD>譛陰-SOUL譬<EFBFBD>ソ暦シ悟<EFBFBD>譛牙<EFBFBD>莉冶ソ槫惠荳€襍キ逧<EFBFBD>サコ遲台コ<EFBFBD>€ゆク€<EFBFBD>ス灘ケエ逧<EFBFBD>略閠€<EFBFBD>ク榊榊ュ伜惠<EFBFBD>悟宵蜑ゥ荳矩刀逧ョ譽壼ア倶ク頑桝鬩ウ隍ェ濶イ逧<EFBFBD>ウ蟄仙屬莨吝ョ<EFBFBD>逕サ縲りエ晄栫譏滄€剰ソ<EFBFBD>崟豌泌惠髣ェ髣ェ蜿大<EFBFBD><EFBFBD>梧怦莠ョ荵溷合蛻ー莠<EFBFBD>ゥコ荳ュ<EFBFBD>悟屏閠悟懈劒蟷カ荳肴仞蠕鈴サ第囓縲よ<EFBFBD>萓晉ィ€閭ス霎ィ蛻ォ蜃コ譫晄ア溷ァ蜴ヲ逧<EFBFBD>ッ丈ク€荳ェ驛ィ蛻<EFBFBD>シ悟頭蜆ソ譖セ譏ッ螟懆ー井シ壻ク頑沖蝨ー譛コ蛛懃蕗逧<EFBFBD>慍譁ケ<EFBFBD>悟頭蜆ソ譖セ譏ッ螟ァ髣ィ<EFBFBD>悟頭蜆ソ譖セ謾セ逹€陞コ陋ウ邊牙袖阮ッ迚<EFBFBD>€<EFBFBD>€€蝗槫ソ<EFBFBD>€€蠢オ<EFBFBD>悟ソス辟カ逵玖ァ€荳ェ蟄迢ャ逧<EFBFBD>コォ蠖ア<EFBFBD>瑚ソ吩クェ霄ォ蠖ア霑溽桝莠<EFBFBD>€荳具シ悟酔譌カ謌台ケ滓リ蜿ォ莠<EFBFBD><EFBFBD>縲や€<EFBFBD>辟カ蟆丞ァ撰シ€€<EFBFBD><EFBFBD>€ェ菴<EFBFBD>諤惹ケ郁ソ倩ョ蠕怜<EFBFBD>謌托シ梧<EFBFBD>螳悟<EFBFBD>蜿倅コ<EFBFBD>€€ョ螳槫ケ逧<EFBFBD>搨譏濶ウ荳ス蟾イ扈乗カ磯€晢シ檎閠悟ケ驍髫セ莉€陦ィ逧<EFBFBD>ォッ蠎<EFBFBD>克荳ス<EFBFBD>ケ驍髫セ莉€陦ィ逧<EFBFBD>ソキ莠コ螯ゥ蟐壼唆萓晄立蠖灘ケエ縲よ園譛芽ソ吩コ帷セ守噪隸ア諠托シ御サ主燕謌鷹<EFBFBD>ソ<EFBFBD>シ瑚€<EFBFBD>蜑肴園豐譛芽ァソ<EFBFBD>噪譏ッ螂ケ驍€蟇ケ逵シ逹幢シ御サ主燕螂ケ逧<EFBFBD>曙逵ク諤サ髣ェ逹€蛯イ豌費シ悟ヲゆサ雁唆髣ェ逹€<EFBFBD>驟ク讌夂噪蜈峨€<EFBFBD>莉ャ蝮仙惠髯<EFBFBD>ソ醍噪荳€<EFBFBD>髟ソ讀<EFBFBD>ク奇シ梧<EFBFBD>隸エ驕難シ壺€壼ー大ケエ螯よオコ題握霑<EFBFBD><EFBFBD><EFBFBD>辟カ蟆丞ァ撰シ御ス<EFBFBD>譌カ蟶ク蝗槫芦霑咎蜷暦シ溪€€<EFBFBD>€逶エ豐譛牙屓譚<EFBFBD>€€€<EFBFBD>荵滓イ譛峨€€晄怦莠ョ蠑€蟋倶ク雁合<EFBFBD><EFBFBD>貂ク螟懃ゥコ<EFBFBD><EFBFBD>閼第オキ荳ュ蜃コ邇ー莠<EFBFBD>エ晄級豕ィ隗<EFBFBD>捩逋ス濶イ譛井コョ逧<EFBFBD><EFBFBD>撕逶ョ蜈峨€<EFBFBD>辟カ蟆丞ァ千サ井コ取遠遐エ莠<EFBFBD><EFBFBD>莉ャ荵矩龍逧<EFBFBD>イ蛾サ倥€€<EFBFBD>€逶エ蝨ィ蟶梧悍譛我ク€螟ゥ閭ス蝗樊擂逵狗恚<EFBFBD>悟庄譏ッ蜷<EFBFBD>ァ榊推譬キ逧<EFBFBD>ュ蜀オ菴ソ謌台ク崎<EFBFBD>蝗樊擂縲や€晄怦蜈牙柱螂ケ逧<EFBFBD>ウェ迴<EFBFBD>陞榊粋蝨ィ荳€襍キ<EFBFBD>ケ豐譛画э隸<EFBFBD>芦謌大キイ扈丞ッ溯ァ会シ梧Φ謚大宛菴剰<EFBFBD>蟾ア逧<EFBFBD>ュ諢滂シ御サ蟷ウ髱咏噪隸ュ豌碑ッエ驕難シ娯€<EFBFBD>譌カ蟶ク諠ウ蛻ー菴<EFBFBD>縲や€€懃悄逧<EFBFBD>シ溪€€懃音蛻ォ譏ッ霑台コ帶律蟄撰シ梧<EFBFBD>譖エ蟶ク諠ウ蛻ー菴<EFBFBD>縲り區辟カ謌醍函豢サ荳ュ譛我ク€谿オ蠕磯柄逧<EFBFBD>臆闍ヲ譌蟄撰シ御ス<EFBFBD>弍謌台ク堺シ壼悉諠ウ縲り<EFBFBD>莉取<EFBFBD>荳ェ莠コ逧<EFBFBD>ュ蜀オ荳榊ヲよэ蜷趣シ瑚ソ吩コ帛哨蠢<EFBFBD>ーア荳榊セ嶺ク榊惠謌大ソ<EFBFBD>エ蜊<EFBFBD>€蟶ュ荵句慍縲や€€應ス<EFBFBD>豌ク霑懷惠謌醍噪蠢<EFBFBD>縲や€<EFBFBD>遲秘縲よ<EFBFBD>莉ャ蜿井ク€豐蛾サ俶裏險€<EFBFBD>檎峩蛻ー螂ケ謇鍋<EFBFBD>エ豐牙ッゅ€€<EFBFBD>譛画Φ蛻ー<EFBFBD>€<EFBFBD>辟カ隸エ驕難シ娯€<EFBFBD>蛻ー霑咎蜥梧腐蝨ー蜻雁悪<EFBFBD>檎ォ溽蜿域弍蜥御ス<EFBFBD>蜻雁悪<EFBFBD><EFBFBD>諢溷芦蠕磯ォ伜<EFBFBD>縲や€€<EFBFBD>辟カ蟆丞ァ撰シ悟柱謌大処荳€<EFBFBD><EFBFBD>御ス<EFBFBD>鬮伜<EFBFBD>蜷暦シ溷庄譏ッ蟇ケ謌第擂隸エ<EFBFBD>御ク頑ャ<EFBFBD>悪譌カ逧<EFBFBD>ご莨蜥檎李闍ヲ豌ク霑懷慍關ヲ扈募惠謌醍噪隶ー蠢<EFBFBD>ケ倶クュ縲や€€懷庄譏ッ<EFBFBD>御ス<EFBFBD>荳頑ャ荳肴弍蟇ケ謌題ッエ霑<EFBFBD>シ娯€<EFBFBD>辟カ遲秘<EFBFBD>€應ス<EFBFBD><EFBFBD>蝌臥菫昜ス台ス<EFBFBD>縲ゆス<EFBFBD>荳頑ャ閭ス霑吩ケ亥ッケ謌題ッエ<EFBFBD>御ス<EFBFBD>邇ー蝨ィ荵溯<EFBFBD>豈ォ荳咲柑雎ォ蝨ー霑呎<EFBFBD>キ蟇ケ謌題ッエ<EFBFBD>御ス<EFBFBD><EFBFBD>蟷カ荳肴弍莉€荵亥悒蝌臥縲ょ壼ケエ譚<EFBFBD>李闍ヲ隶ゥ謌大女蟆ス謚倡<EFBFBD>御ス<EFBFBD>弍蟶梧悍菴<EFBFBD>蜒丈サ主燕荳€譬キ菴楢ー<EFBFBD><EFBFBD><EFBFBD>悟埋蠕<EFBFBD><EFBFBD><EFBFBD>悟ケカ荳泌相隸画<EFBFBD><EFBFBD><EFBFBD>菫ゥ莉肴弍譛句暑縲や€€<EFBFBD>菫ゥ莉肴弍譛句暑縲や€<EFBFBD>隸エ逹€遶呵オキ霄ォ<EFBFBD>悟ケカ菫ッ霄ォ謇カ螂ケ莉朱柄讀<EFBFBD>ク顔ォ吩コ<EFBFBD>オキ譚縲や€<EFBFBD>莉ャ陌ス辟カ蛻<EFBFBD>ヲサ<EFBFBD>御ス<EFBFBD><EFBFBD><EFBFBD>э髟ソ蟄倥€€<EFBFBD>辟カ隸エ驕薙€<EFBFBD>謚雁ケ逧<EFBFBD>焔謠蝨ィ閾ェ蟾ア謇倶クュ<EFBFBD>御ク€蜷瑚オー蜃コ霑咏援蠎溷滂シ悟憺崟荵滓ュ€蟋区カ域淵縲ゆク€<EFBFBD>ケソ髦皮噪髱吝ッよイ画オク蝨ィ譛郁牡荵倶クュ<EFBFBD>御シシ荵主髄謌題ィ譏趣シ梧<EFBFBD>蜥悟ケ蟆<EFBFBD>ーク霑應ク€襍キ<EFBFBD>御ク榊<EFBFBD><EFBFBD>ヲサ縲<EFBFBD>

Binary file not shown.

View File

@@ -1,906 +0,0 @@
[
{
"name": "印度",
"weight": 0.179369185
},
{
"weight": 0.116660088,
"name": "中华人民共和国"
},
{
"name": "尼日利亚",
"weight": 0.052104876
},
{
"weight": 0.04490831,
"name": "巴基斯坦"
},
{
"weight": 0.029767875,
"name": "印尼"
},
{
"weight": 0.02917347,
"name": "美国"
},
{
"name": "刚果民主共和国",
"weight": 0.026980482
},
{
"weight": 0.02653533,
"name": "埃塞俄比亚"
},
{
"name": "孟加拉国",
"weight": 0.022001723
},
{
"name": "巴西",
"weight": 0.020641351
},
{
"name": "埃及",
"weight": 0.019722924
},
{
"name": "菲律宾",
"weight": 0.017944256
},
{
"name": "墨西哥",
"weight": 0.015798468
},
{
"weight": 0.015156998,
"name": "坦桑尼亚"
},
{
"weight": 0.013686862,
"name": "乌干达"
},
{
"weight": 0.010405389,
"name": "俄罗斯"
},
{
"weight": 0.010217107,
"name": "苏丹"
},
{
"weight": 0.010079201,
"name": "越南"
},
{
"name": "阿富汗",
"weight": 0.009796745
},
{
"name": "伊朗",
"weight": 0.009789926
},
{
"name": "肯尼亚",
"weight": 0.009216044
},
{
"weight": 0.008870993,
"name": "安哥拉"
},
{
"name": "土耳其",
"weight": 0.008815318
},
{
"weight": 0.008267509,
"name": "莫桑比克"
},
{
"name": "南非",
"weight": 0.007826801
},
{
"weight": 0.00755071,
"name": "尼日尔"
},
{
"name": "伊拉克",
"weight": 0.007350484
},
{
"name": "喀麦隆",
"weight": 0.006786572
},
{
"weight": 0.006782117,
"name": "缅甸"
},
{
"name": "日本",
"weight": 0.006518972
},
{
"weight": 0.006384764,
"name": "加纳"
},
{
"weight": 0.006183538,
"name": "阿尔及利亚"
},
{
"weight": 0.006075416,
"name": "马里"
},
{
"name": "法国",
"weight": 0.00571344
},
{
"name": "英国",
"weight": 0.005662409
},
{
"name": "马达加斯加",
"weight": 0.00559132
},
{
"weight": 0.005562893,
"name": "也门"
},
{
"name": "哥伦比亚",
"weight": 0.005525953
},
{
"name": "布基纳法索",
"weight": 0.005378297
},
{
"name": "科特迪瓦",
"weight": 0.005352997
},
{
"name": "阿根廷",
"weight": 0.005171935
},
{
"name": "赞比亚",
"weight": 0.005147159
},
{
"name": "德国",
"weight": 0.005096501
},
{
"weight": 0.005067552,
"name": "泰国"
},
{
"name": "马拉维",
"weight": 0.005017242
},
{
"name": "乍得",
"weight": 0.004825619
},
{
"name": "摩洛哥",
"weight": 0.004571552
},
{
"weight": 0.004266592,
"name": "马来西亚"
},
{
"weight": 0.004130712,
"name": "南苏丹"
},
{
"name": "委内瑞拉",
"weight": 0.00410843
},
{
"weight": 0.003903682,
"name": "乌兹别克斯坦"
},
{
"weight": 0.003891083,
"name": "秘鲁"
},
{
"weight": 0.003854943,
"name": "尼泊尔"
},
{
"name": "沙特阿拉伯",
"weight": 0.003683713
},
{
"name": "塞内加尔",
"weight": 0.003671814
},
{
"name": "津巴布韦",
"weight": 0.003628572
},
{
"name": "意大利",
"weight": 0.003591173
},
{
"weight": 0.003564036,
"name": "贝宁"
},
{
"weight": 0.003318383,
"name": "索马里"
},
{
"name": "几内亚",
"weight": 0.003229938
},
{
"name": "韩国",
"weight": 0.00302709
},
{
"name": "危地马拉",
"weight": 0.002989448
},
{
"weight": 0.002933277,
"name": "西班牙"
},
{
"name": "布隆迪",
"weight": 0.002916273
},
{
"name": "乌克兰",
"weight": 0.002865519
},
{
"name": "叙利亚",
"weight": 0.002803866
},
{
"name": "加拿大",
"weight": 0.002769376
},
{
"name": "朝鲜",
"weight": 0.002663995
},
{
"name": "柬埔寨",
"weight": 0.002507218
},
{
"weight": 0.002459301,
"name": "卢旺达"
},
{
"weight": 0.002433661,
"name": "波兰"
},
{
"weight": 0.002264484,
"name": "澳大利亚"
},
{
"name": "斯里兰卡",
"weight": 0.002205474
},
{
"weight": 0.00217928,
"name": "哈萨克斯坦"
},
{
"name": "厄瓜多尔",
"weight": 0.002114416
},
{
"name": "塞拉利昂",
"weight": 0.002042686
},
{
"name": "海地",
"weight": 0.001815248
},
{
"name": "智利",
"weight": 0.001761297
},
{
"name": "多哥",
"weight": 0.001756614
},
{
"name": "约旦",
"weight": 0.001738363
},
{
"weight": 0.001716995,
"name": "玻利维亚"
},
{
"weight": 0.001432103,
"name": "巴布亚新几内亚"
},
{
"weight": 0.001424043,
"name": "塔吉克斯坦"
},
{
"name": "多米尼加",
"weight": 0.001376899
},
{
"name": "荷兰",
"weight": 0.001365722
},
{
"name": "罗马尼亚",
"weight": 0.001342703
},
{
"weight": 0.001340039,
"name": "台湾"
},
{
"name": "突尼斯",
"weight": 0.001327688
},
{
"name": "中非",
"weight": 0.001269639
},
{
"name": "洪都拉斯",
"weight": 0.001219191
},
{
"name": "刚果共和国",
"weight": 0.001209073
},
{
"weight": 0.001189154,
"name": "利比里亚"
},
{
"weight": 0.001150376,
"name": "以色列"
},
{
"weight": 0.001149654,
"name": "厄立特里亚"
},
{
"weight": 0.001119049,
"name": "老挝"
},
{
"name": "阿塞拜疆",
"weight": 0.001039837
},
{
"name": "利比亚",
"weight": 0.001029222
},
{
"name": "巴勒斯坦",
"weight": 0.000992651
},
{
"name": "吉尔吉斯斯坦",
"weight": 0.000957294
},
{
"weight": 0.000907425,
"name": "比利时"
},
{
"name": "瑞典",
"weight": 0.000890654
},
{
"name": "巴拉圭",
"weight": 0.00085764
},
{
"name": "毛里塔尼亚",
"weight": 0.000842302
},
{
"weight": 0.000830493,
"name": "古巴"
},
{
"name": "萨尔瓦多",
"weight": 0.000822881
},
{
"name": "尼加拉瓜",
"weight": 0.000782782
},
{
"weight": 0.000764766,
"name": "阿曼"
},
{
"name": "黎巴嫩",
"weight": 0.000751395
},
{
"name": "土库曼斯坦",
"weight": 0.000743841
},
{
"weight": 0.000680867,
"name": "阿联酋"
},
{
"weight": 0.000677997,
"name": "捷克"
},
{
"weight": 0.000643037,
"name": "白俄罗斯"
},
{
"weight": 0.000642255,
"name": "瑞士"
},
{
"name": "匈牙利",
"weight": 0.000612393
},
{
"name": "奥地利",
"weight": 0.000602473
},
{
"name": "希腊",
"weight": 0.000595922
},
{
"weight": 0.000592992,
"name": "葡萄牙"
},
{
"weight": 0.000566764,
"name": "科威特"
},
{
"weight": 0.000538867,
"name": "哥斯达黎加"
},
{
"name": "巴拿马",
"weight": 0.000513904
},
{
"name": "挪威",
"weight": 0.000466485
},
{
"name": "丹麦",
"weight": 0.000460789
},
{
"name": "爱尔兰",
"weight": 0.000455762
},
{
"name": "新西兰",
"weight": 0.000451486
},
{
"name": "纳米比亚",
"weight": 0.000450165
},
{
"name": "香港",
"weight": 0.000448826
},
{
"weight": 0.000441931,
"name": "冈比亚"
},
{
"weight": 0.000436542,
"name": "塞尔维亚"
},
{
"name": "芬兰",
"weight": 0.000417327
},
{
"weight": 0.00041658,
"name": "几内亚比绍"
},
{
"weight": 0.000410456,
"name": "保加利亚"
},
{
"weight": 0.000382945,
"name": "蒙古"
},
{
"name": "莱索托",
"weight": 0.00037228
},
{
"weight": 0.000361607,
"name": "新加坡"
},
{
"name": "斯洛伐克",
"weight": 0.000361482
},
{
"weight": 0.00035722,
"name": "加蓬"
},
{
"name": "博茨瓦纳",
"weight": 0.000348221
},
{
"weight": 0.000323338,
"name": "乌拉圭"
},
{
"name": "赤道几内亚",
"weight": 0.000318155
},
{
"name": "东帝汶",
"weight": 0.000316195
},
{
"name": "牙买加",
"weight": 0.000312724
},
{
"name": "格鲁吉亚",
"weight": 0.000307685
},
{
"weight": 0.000265076,
"name": "阿尔巴尼亚"
},
{
"weight": 0.000252622,
"name": "克罗地亚"
},
{
"weight": 0.000250708,
"name": "亚美尼亚"
},
{
"name": "波黑",
"weight": 0.000232069
},
{
"name": "摩尔多瓦",
"weight": 0.000204405
},
{
"name": "科索沃",
"weight": 0.000196993
},
{
"weight": 0.000189047,
"name": "立陶宛"
},
{
"weight": 0.000182006,
"name": "卡塔尔"
},
{
"name": "波多黎各",
"weight": 0.000182004
},
{
"name": "吉布提",
"weight": 0.000174383
},
{
"name": "北马其顿",
"weight": 0.000158321
},
{
"weight": 0.000146886,
"name": "科摩罗"
},
{
"weight": 0.000144027,
"name": "巴林"
},
{
"weight": 0.000129782,
"name": "斯洛文尼亚"
},
{
"weight": 0.000126232,
"name": "西撒哈拉"
},
{
"name": "拉脱维亚",
"weight": 0.000124966
},
{
"name": "所罗门群岛",
"weight": 0.000120169
},
{
"name": "斐济",
"weight": 0.000110985
},
{
"weight": 0.000110769,
"name": "特立尼达和多巴哥"
},
{
"weight": 0.000109656,
"name": "毛里求斯"
},
{
"weight": 8.8e-5,
"name": "爱沙尼亚"
},
{
"weight": 8.61e-5,
"name": "圭亚那"
},
{
"name": "不丹",
"weight": 8.61e-5
},
{
"weight": 7.49e-5,
"name": "佛得角"
},
{
"name": "塞浦路斯",
"weight": 6.8e-5
},
{
"name": "伯利兹",
"weight": 6.4e-5
},
{
"weight": 6.01e-5,
"name": "苏里南"
},
{
"name": "文莱",
"weight": 5.2e-5
},
{
"weight": 5.1e-5,
"name": "黑山"
},
{
"name": "瓦努阿图",
"weight": 5.1e-5
},
{
"name": "卢森堡",
"weight": 5.07e-5
},
{
"name": "马尔代夫",
"weight": 4.27e-5
},
{
"name": "巴哈马",
"weight": 4.06e-5
},
{
"weight": 3.82e-5,
"name": "澳门"
},
{
"weight": 3.48e-5,
"name": "马耳他"
},
{
"name": "冰岛",
"weight": 3.45e-5
},
{
"weight": 3.03e-5,
"name": "新喀里多尼亚"
},
{
"name": "萨摩亚",
"weight": 2.83e-5
},
{
"weight": 2.8e-5,
"name": "法属波利尼西亚"
},
{
"name": "关岛",
"weight": 2.36e-5
},
{
"weight": 2.32e-5,
"name": "巴巴多斯"
},
{
"name": "基里巴斯",
"weight": 1.83e-5
},
{
"weight": 1.71e-5,
"name": "圣卢西亚"
},
{
"name": "库拉索",
"weight": 1.51e-5
},
{
"weight": 1.5e-5,
"name": "汤加"
},
{
"weight": 1.42e-5,
"name": "密克罗尼西亚联邦"
},
{
"weight": 1.13e-5,
"name": "格林纳达"
},
{
"name": "安提瓜和巴布达",
"weight": 1.05e-5
},
{
"weight": 9.93e-6,
"name": "圣文森特和格林纳丁斯"
},
{
"name": "泽西",
"weight": 9.66e-6
},
{
"weight": 9.64e-6,
"name": "阿鲁巴"
},
{
"weight": 9.15e-6,
"name": "美属维尔京群岛"
},
{
"weight": 9.08e-6,
"name": "马绍尔群岛"
},
{
"weight": 8.9e-6,
"name": "塞舌尔"
},
{
"name": "美属萨摩亚",
"weight": 7.97e-6
},
{
"name": "多米尼克",
"weight": 7.57e-6
},
{
"weight": 6.41e-6,
"name": "马恩岛"
},
{
"weight": 6.09e-6,
"name": "北马里亚纳群岛"
},
{
"name": "开曼群岛",
"weight": 5.77e-6
},
{
"name": "格陵兰",
"weight": 5.63e-6
},
{
"weight": 5.54e-6,
"name": "法罗群岛"
},
{
"weight": 5.17e-6,
"name": "圣基茨和尼维斯"
},
{
"weight": 5.11e-6,
"name": "百慕大"
},
{
"weight": 4.38e-6,
"name": "根西"
},
{
"weight": 4.31e-6,
"name": "特克斯和凯科斯群岛"
},
{
"name": "荷属圣马丁",
"weight": 4.14e-6
},
{
"weight": 3.87e-6,
"name": "安道尔"
},
{
"name": "法国(法属圣马丁)",
"weight": 3.6e-6
},
{
"name": "直布罗陀",
"weight": 3.2e-6
},
{
"weight": 2.87e-6,
"name": "列支敦士登"
},
{
"name": "英属维尔京群岛",
"weight": 2.57e-6
},
{
"weight": 2.1e-6,
"name": "圣马力诺"
},
{
"weight": 1.75e-6,
"name": "瑙鲁"
},
{
"name": "摩纳哥",
"weight": 1.75e-6
},
{
"name": "图瓦卢",
"weight": 1.72e-6
},
{
"name": "库克群岛",
"weight": 1.44e-6
},
{
"name": "帕劳",
"weight": 1.44e-6
},
{
"weight": 1.41e-6,
"name": "安圭拉"
},
{
"weight": 1.05e-6,
"name": "法国(瓦利斯和富图纳)"
},
{
"weight": 6.6e-7,
"name": "法国(圣巴泰勒米)"
},
{
"name": "蒙特塞拉特",
"weight": 4.35e-7
},
{
"weight": 3.77e-7,
"name": "圣赫勒拿、阿森松和特里斯坦-达库尼亚"
},
{
"name": "法国(圣皮埃尔和密克隆)",
"weight": 2.86e-7
},
{
"name": "福克兰群岛",
"weight": 2.48e-7
}
]

Binary file not shown.

Binary file not shown.

62
go.mod
View File

@@ -1,11 +1,12 @@
module github.com/FloatTech/ZeroBot-Plugin
go 1.16
go 1.17
require (
github.com/FloatTech/AnimeAPI v1.1.10
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed
github.com/FloatTech/AnimeAPI v1.2.4-beta1
github.com/FloatTech/zbputils v1.2.4-beta1
github.com/antchfx/htmlquery v1.2.4
github.com/chromedp/chromedp v0.7.6
github.com/corona10/goimagehash v1.0.3
github.com/fogleman/gg v1.3.0
github.com/fumiama/cron v1.3.0
@@ -13,15 +14,60 @@ require (
github.com/fumiama/go-registry v0.0.2
github.com/fumiama/gofastTEA v0.0.6
github.com/fumiama/gotracemoe v0.0.3
github.com/gin-gonic/gin v1.7.7
github.com/gorilla/websocket v1.4.2
github.com/jinzhu/gorm v1.9.16
github.com/logoove/sqlite v1.13.0
github.com/mroth/weightedrand v0.4.1
github.com/shirou/gopsutil/v3 v3.21.11
github.com/shirou/gopsutil/v3 v3.21.12
github.com/sirupsen/logrus v1.8.1
github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816
github.com/tidwall/gjson v1.12.1
github.com/wdvxdr1123/ZeroBot v1.4.1
golang.org/x/image v0.0.0-20211028202545-6944b10bf410
)
require (
github.com/antchfx/xpath v1.2.0 // indirect
github.com/chromedp/cdproto v0.0.0-20211126220118-81fa0469ad77 // indirect
github.com/chromedp/sysutil v1.0.0 // indirect
github.com/disintegration/imaging v1.6.2 // indirect
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/gobwas/httphead v0.1.0 // indirect
github.com/gobwas/pool v0.2.1 // indirect
github.com/gobwas/ws v1.1.0 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tklauser/go-sysconf v0.3.9 // indirect
github.com/tklauser/numcpus v0.3.0 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce // indirect
golang.org/x/mod v0.5.1 // indirect
golang.org/x/net v0.0.0-20220111093109-d55c255bac03 // indirect
golang.org/x/sys v0.0.0-20220111092808-5a964db01320 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.8 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
lukechampine.com/uint128 v1.1.1 // indirect
modernc.org/cc/v3 v3.35.22 // indirect
modernc.org/ccgo/v3 v3.14.0 // indirect
modernc.org/libc v1.13.2 // indirect
modernc.org/mathutil v1.4.1 // indirect
modernc.org/memory v1.0.5 // indirect
modernc.org/opt v0.1.1 // indirect
modernc.org/sqlite v1.14.4 // indirect
modernc.org/strutil v1.1.1 // indirect
modernc.org/token v1.0.0 // indirect
)

223
go.sum
View File

@@ -1,23 +1,24 @@
github.com/FloatTech/AnimeAPI v1.1.9/go.mod h1:CC+vF30UGBlcIUxwFOcXIEHoJ4r7c5x2iLQsnUCVdDI=
github.com/FloatTech/AnimeAPI v1.1.10 h1:fYkv65P1HBukHi3GpzYulGx/xLshEL9635QXALDryf0=
github.com/FloatTech/AnimeAPI v1.1.10/go.mod h1:CC+vF30UGBlcIUxwFOcXIEHoJ4r7c5x2iLQsnUCVdDI=
github.com/FloatTech/ZeroBot-Plugin v1.1.5/go.mod h1:kWuUARvU7gs4xLggi8Sy37ja2GRL6k0X6kewe5TiZRs=
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4 h1:WW0BmmLLqAg+m6qGkrKbsfSIm91fkj3/udt3R7Myodo=
github.com/FloatTech/ZeroBot-Plugin-Gif v0.2.4/go.mod h1:W7ag6hml1pZTNzRXKU74OMr6rS8awQKSU+o2g7Gj4O0=
github.com/FloatTech/ZeroBot-Plugin-Timer v1.4.3/go.mod h1:MVOQQ4e6AVGFm993blXXU4Sd6bAsLY2+Zb+/HMrEeEc=
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed h1:GEOgDVbvaxXqZxgWE/y5JOlbMXrmq7n0M+m9g3md2To=
github.com/FloatTech/bot-manager v1.0.1-0.20211112011524-85b9895271ed/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
github.com/FloatTech/imgfactory v0.1.1 h1:ooL2+fV8yrMhv1ShGGKsN0Rm/flWoKnvqXaUD+dC3DQ=
github.com/FloatTech/imgfactory v0.1.1/go.mod h1:ThDALab8aOuU6KVYESVWFqmjcqtm03e0SvGlTw6s+aw=
github.com/FloatTech/AnimeAPI v1.2.4-beta1 h1:Ff+721UgTSXCRiod83wlUCY0C1nE4wWa7+NCgYjF/Ew=
github.com/FloatTech/AnimeAPI v1.2.4-beta1/go.mod h1:tQNIP/1fbQzEi3U9v9PsdPOr2OURMx9S8WH+w1oco4I=
github.com/FloatTech/bot-manager v1.0.0/go.mod h1:8YYRJ16oroGHQGD2En0oVnmcKJkxR9O/jd5BPSfWfOQ=
github.com/FloatTech/zbputils v1.2.4-beta1 h1:WT85o9Y6MAJtmQaMD5h0l1mJ/7qBcjRQdNlCsB5pAPY=
github.com/FloatTech/zbputils v1.2.4-beta1/go.mod h1:ZIuQP4tuhn7jiowEy+PALiHmr4zzPQBj4VdjEyd5/Es=
github.com/Mrs4s/MiraiGo v0.0.0-20211120033824-43b23f4e6fcb h1:Rkj28fqIwGx/EgBzRYtpmJRfH6wqVn7cNdc7aJ0QE4M=
github.com/Mrs4s/MiraiGo v0.0.0-20211120033824-43b23f4e6fcb/go.mod h1:imVKbfKqqeit+C/eaWGb4MKQ3z3gN6pRpBU5RMtp5so=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/antchfx/htmlquery v1.2.3 h1:sP3NFDneHx2stfNXCKbhHFo8XgNjCACnU/4AO5gWz6M=
github.com/antchfx/htmlquery v1.2.3/go.mod h1:B0ABL+F5irhhMWg54ymEZinzMSi0Kt3I2if0BLYa3V0=
github.com/antchfx/xpath v1.1.6 h1:6sVh6hB5T6phw1pFpHRQ+C4bd8sNI+O58flqtg7h0R0=
github.com/antchfx/htmlquery v1.2.4 h1:qLteofCMe/KGovBI6SQgmou2QNyedFUW+pE+BpeZ494=
github.com/antchfx/htmlquery v1.2.4/go.mod h1:2xO6iu3EVWs7R2JYqBbp8YzG50gj/ofqs5/0VZoDZLc=
github.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8=
github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
github.com/chromedp/cdproto v0.0.0-20211126220118-81fa0469ad77 h1:Et/9YcQRCsaZVT74sy6AHwWy/FcbYqm39jNprlfXF7c=
github.com/chromedp/cdproto v0.0.0-20211126220118-81fa0469ad77/go.mod h1:At5TxYYdxkbQL0TSefRjhLE3Q0lgvqKKMSFUglJ7i1U=
github.com/chromedp/chromedp v0.7.6 h1:2juGaktzjwULlsn+DnvIZXFUckEp5xs+GOBroaea+jA=
github.com/chromedp/chromedp v0.7.6/go.mod h1:ayT4YU/MGAALNfOg9gNrpGSAdnU51PMx+FCeuT1iXzo=
github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic=
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
github.com/corona10/goimagehash v1.0.3 h1:NZM518aKLmoNluluhfHGxT3LGOnrojrxhGn63DR/CZA=
github.com/corona10/goimagehash v1.0.3/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -46,58 +47,56 @@ github.com/fumiama/gofastTEA v0.0.6 h1:Yni3MXDbJVa/c4CecgdZDgCJK+fLdvGph+OBqY2mt
github.com/fumiama/gofastTEA v0.0.6/go.mod h1:+sBZ05nCA2skZkursHNvyr8kULlEetrYTM2y5kA4rQc=
github.com/fumiama/gotracemoe v0.0.3 h1:iI5EbE9A3UUbfukG6+/soYPjp1S31eCNYf4tw7s6/Jc=
github.com/fumiama/gotracemoe v0.0.3/go.mod h1:tyqahdUzHf0bQIAVY/GYmDWvYYe5ik1ZbhnGYh+zl40=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs=
github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA=
github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/imroc/req v0.3.0/go.mod h1:F+NZ+2EFSo6EFXdeIbpfE9hcC233id70kf0byW97Caw=
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -105,16 +104,17 @@ github.com/logoove/sqlite v1.13.0 h1:XM7QKK9R3tm8o7bI75R3zmwYBFQ5S3Jqg+XCaqsAMQQ
github.com/logoove/sqlite v1.13.0/go.mod h1:MRpE/o3qQhT7AgfIdnBue5c63+//xT+KXV0gHeVAUAg=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mattn/go-sqlite3 v1.14.8 h1:gDp86IdQsN/xWjIEmr9MF6o9mpksUgh0fu+9ByFxzIU=
github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/mattn/go-sqlite3 v1.14.10 h1:MLn+5bFRlWMGoSRmJour3CL1w/qL96mvipqpwQW/Sfk=
github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2-0.20210109003243-333559e1834b h1:6Xjqolv/0DDdUqlpnsTomXQvjvvkz7Ux7TcMALvozEw=
github.com/modern-go/reflect2 v1.0.2-0.20210109003243-333559e1834b/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mroth/weightedrand v0.4.1 h1:rHcbUBopmi/3x4nnrvwGJBhX9d0vk+KgoLUZeDP6YyI=
github.com/mroth/weightedrand v0.4.1/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
@@ -122,6 +122,8 @@ github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/orisano/pixelmatch v0.0.0-20210112091706-4fa4c7ba91d5 h1:1SoBaSPudixRecmlHXb/GxmaD3fLMtHIDN13QujwQuc=
github.com/orisano/pixelmatch v0.0.0-20210112091706-4fa4c7ba91d5/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -130,11 +132,9 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
github.com/shirou/gopsutil v3.21.8+incompatible h1:sh0foI8tMRlCidUJR+KzqWYWxrkuuPIGiO6Vp+KXdCU=
github.com/shirou/gopsutil v3.21.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.21.11 h1:d5tOAP5+bmJ8Hf2+4bxOSkQ/64+sjEbjU9nSW9nJgG0=
github.com/shirou/gopsutil/v3 v3.21.11/go.mod h1:BToYZVTlSVlfazpDDYFnsVZLaoRG+g8ufT6fPQLdJzA=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/shirou/gopsutil/v3 v3.21.12 h1:VoGxEW2hpmz0Vt3wUvHIl9fquzYLNpVpgNNB7pGJimA=
github.com/shirou/gopsutil/v3 v3.21.12/go.mod h1:BToYZVTlSVlfazpDDYFnsVZLaoRG+g8ufT6fPQLdJzA=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
@@ -146,12 +146,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816 h1:J6v8awz+me+xeb/cUTotKgceAYouhIB3pjzgRd6IlGk=
github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816/go.mod h1:tzym/CEb5jnFI+Q0k4Qq3+LvRF4gO3E2pxS8fHP8jcA=
github.com/tdf1939/ZeroBot-Plugin-Gif v0.0.0-20210828060956-389b1dc33652/go.mod h1:bkxKi7un9gCDvUUZAiIJF6k90pyj8rmxiXLJkiHcsMY=
github.com/tdf1939/img v0.0.0-20210827153520-90cb4e9580a3/go.mod h1:FgTEOcosTWrkOr7++gbtPSj1rX5loRWrf/AL+hm3Cnw=
github.com/tidwall/gjson v1.8.0/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/gjson v1.9.0/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/gjson v1.11.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo=
github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
@@ -165,31 +161,28 @@ github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev
github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs=
github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ=
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/wdvxdr1123/ZeroBot v1.2.2/go.mod h1:83nHtG8V5TAxPwH/LCDxLpZk4khIgs29dkr5TBWf7fc=
github.com/wdvxdr1123/ZeroBot v1.2.3/go.mod h1:83nHtG8V5TAxPwH/LCDxLpZk4khIgs29dkr5TBWf7fc=
github.com/wdvxdr1123/ZeroBot v1.2.4/go.mod h1:83nHtG8V5TAxPwH/LCDxLpZk4khIgs29dkr5TBWf7fc=
github.com/wdvxdr1123/ZeroBot v1.3.2/go.mod h1:i2DIqQjtjE+3gvVi9r9sc+QpNaUuyTXx/HNXXayIpwI=
github.com/wdvxdr1123/ZeroBot v1.4.1 h1:fk/8RH2D1gB3YeC1eI/SZi/kG31Rh7Z8lAiDc60VZFM=
github.com/wdvxdr1123/ZeroBot v1.4.1/go.mod h1:7t9m4vDZPwWAmzKlhP6IvUoisOIiqNdm/3AJgiY3+ew=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce h1:Roh6XWxHFKrPgC/EQhVubSAGQ6Ozk6IdxHSzt1mR0EI=
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20211028202545-6944b10bf410 h1:hTftEOvwiOq2+O8k2D5/Q7COC7k5Qcrgc2TFURJYnvQ=
golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -198,8 +191,10 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220111093109-d55c255bac03 h1:0FB83qp0AzVJm+0wcIlauAjJ+tNdh7jLuacRYCIVv7s=
golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -216,60 +211,150 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c h1:taxlMj0D/1sOAuv/CbSD+MMDof2vbyPTqz5FNYKpXt8=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320 h1:0jf+tOCoZ3LyutmCOWpVni1chK4VfFLhRsDK7MhqGRY=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78 h1:M8tBwCtWD/cZV9DZpFYRUgaymAYAr+aIUTWzDaM3uPs=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w=
golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU=
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.33.9/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.33.11/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.34.0 h1:dFhZc/HKR3qp92sYQxKRRaDMz+sr1bwcFD+m7LSCrAs=
modernc.org/cc/v3 v3.34.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.4/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.5/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.7/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.8/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.10/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.15/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.16/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.17/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.18/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.20/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/cc/v3 v3.35.22 h1:BzShpwCAP7TWzFppM4k2t03RhXhgYqaibROWkrWq7lE=
modernc.org/cc/v3 v3.35.22/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
modernc.org/ccgo/v3 v3.9.5/go.mod h1:umuo2EP2oDSBnD3ckjaVUXMrmeAw8C8OSICVa0iFf60=
modernc.org/ccgo/v3 v3.10.0/go.mod h1:c0yBmkRFi7uW4J7fwx/JiijwOjeAeR2NoSaRVFPmjMw=
modernc.org/ccgo/v3 v3.11.0/go.mod h1:dGNposbDp9TOZ/1KBxghxtUp/bzErD0/0QW4hhSaBMI=
modernc.org/ccgo/v3 v3.11.1/go.mod h1:lWHxfsn13L3f7hgGsGlU28D9eUOf6y3ZYHKoPaKU0ag=
modernc.org/ccgo/v3 v3.11.2 h1:gqa8PQ2v7SjrhHCgxUO5dzoAJWSLAveJqZTNkPCN0kc=
modernc.org/ccgo/v3 v3.11.2/go.mod h1:6kii3AptTDI+nUrM9RFBoIEUEisSWCbdczD9ZwQH2FE=
modernc.org/ccgo/v3 v3.11.3/go.mod h1:0oHunRBMBiXOKdaglfMlRPBALQqsfrCKXgw9okQ3GEw=
modernc.org/ccgo/v3 v3.12.4/go.mod h1:Bk+m6m2tsooJchP/Yk5ji56cClmN6R1cqc9o/YtbgBQ=
modernc.org/ccgo/v3 v3.12.6/go.mod h1:0Ji3ruvpFPpz+yu+1m0wk68pdr/LENABhTrDkMDWH6c=
modernc.org/ccgo/v3 v3.12.8/go.mod h1:Hq9keM4ZfjCDuDXxaHptpv9N24JhgBZmUG5q60iLgUo=
modernc.org/ccgo/v3 v3.12.11/go.mod h1:0jVcmyDwDKDGWbcrzQ+xwJjbhZruHtouiBEvDfoIsdg=
modernc.org/ccgo/v3 v3.12.14/go.mod h1:GhTu1k0YCpJSuWwtRAEHAol5W7g1/RRfS4/9hc9vF5I=
modernc.org/ccgo/v3 v3.12.18/go.mod h1:jvg/xVdWWmZACSgOiAhpWpwHWylbJaSzayCqNOJKIhs=
modernc.org/ccgo/v3 v3.12.20/go.mod h1:aKEdssiu7gVgSy/jjMastnv/q6wWGRbszbheXgWRHc8=
modernc.org/ccgo/v3 v3.12.21/go.mod h1:ydgg2tEprnyMn159ZO/N4pLBqpL7NOkJ88GT5zNU2dE=
modernc.org/ccgo/v3 v3.12.22/go.mod h1:nyDVFMmMWhMsgQw+5JH6B6o4MnZ+UQNw1pp52XYFPRk=
modernc.org/ccgo/v3 v3.12.25/go.mod h1:UaLyWI26TwyIT4+ZFNjkyTbsPsY3plAEB6E7L/vZV3w=
modernc.org/ccgo/v3 v3.12.29/go.mod h1:FXVjG7YLf9FetsS2OOYcwNhcdOLGt8S9bQ48+OP75cE=
modernc.org/ccgo/v3 v3.12.36/go.mod h1:uP3/Fiezp/Ga8onfvMLpREq+KUjUmYMxXPO8tETHtA8=
modernc.org/ccgo/v3 v3.12.38/go.mod h1:93O0G7baRST1vNj4wnZ49b1kLxt0xCW5Hsa2qRaZPqc=
modernc.org/ccgo/v3 v3.12.43/go.mod h1:k+DqGXd3o7W+inNujK15S5ZYuPoWYLpF5PYougCmthU=
modernc.org/ccgo/v3 v3.12.46/go.mod h1:UZe6EvMSqOxaJ4sznY7b23/k13R8XNlyWsO5bAmSgOE=
modernc.org/ccgo/v3 v3.12.47/go.mod h1:m8d6p0zNps187fhBwzY/ii6gxfjob1VxWb919Nk1HUk=
modernc.org/ccgo/v3 v3.12.50/go.mod h1:bu9YIwtg+HXQxBhsRDE+cJjQRuINuT9PUK4orOco/JI=
modernc.org/ccgo/v3 v3.12.51/go.mod h1:gaIIlx4YpmGO2bLye04/yeblmvWEmE4BBBls4aJXFiE=
modernc.org/ccgo/v3 v3.12.53/go.mod h1:8xWGGTFkdFEWBEsUmi+DBjwu/WLy3SSOrqEmKUjMeEg=
modernc.org/ccgo/v3 v3.12.54/go.mod h1:yANKFTm9llTFVX1FqNKHE0aMcQb1fuPJx6p8AcUx+74=
modernc.org/ccgo/v3 v3.12.55/go.mod h1:rsXiIyJi9psOwiBkplOaHye5L4MOOaCjHg1Fxkj7IeU=
modernc.org/ccgo/v3 v3.12.56/go.mod h1:ljeFks3faDseCkr60JMpeDb2GSO3TKAmrzm7q9YOcMU=
modernc.org/ccgo/v3 v3.12.57/go.mod h1:hNSF4DNVgBl8wYHpMvPqQWDQx8luqxDnNGCMM4NFNMc=
modernc.org/ccgo/v3 v3.12.60/go.mod h1:k/Nn0zdO1xHVWjPYVshDeWKqbRWIfif5dtsIOCUVMqM=
modernc.org/ccgo/v3 v3.12.66/go.mod h1:jUuxlCFZTUZLMV08s7B1ekHX5+LIAurKTTaugUr/EhQ=
modernc.org/ccgo/v3 v3.12.67/go.mod h1:Bll3KwKvGROizP2Xj17GEGOTrlvB1XcVaBrC90ORO84=
modernc.org/ccgo/v3 v3.12.73/go.mod h1:hngkB+nUUqzOf3iqsM48Gf1FZhY599qzVg1iX+BT3cQ=
modernc.org/ccgo/v3 v3.12.81/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY=
modernc.org/ccgo/v3 v3.12.84/go.mod h1:ApbflUfa5BKadjHynCficldU1ghjen84tuM5jRynB7w=
modernc.org/ccgo/v3 v3.12.86/go.mod h1:dN7S26DLTgVSni1PVA3KxxHTcykyDurf3OgUzNqTSrU=
modernc.org/ccgo/v3 v3.12.90/go.mod h1:obhSc3CdivCRpYZmrvO88TXlW0NvoSVvdh/ccRjJYko=
modernc.org/ccgo/v3 v3.12.92/go.mod h1:5yDdN7ti9KWPi5bRVWPl8UNhpEAtCjuEE7ayQnzzqHA=
modernc.org/ccgo/v3 v3.13.1/go.mod h1:aBYVOUfIlcSnrsRVU8VRS35y2DIfpgkmVkYZ0tpIXi4=
modernc.org/ccgo/v3 v3.14.0 h1:Zr1Ny9+7r5yAiXpBdgp8XiXqkNA4ARrRphHGHVXeAp0=
modernc.org/ccgo/v3 v3.14.0/go.mod h1:hBrkiBlUwvr5vV/ZH9YzXIp982jKE8Ek8tR1ytoAL6Q=
modernc.org/ccorpus v1.11.1 h1:K0qPfpVG1MJh5BYazccnmhywH4zHuOgJXgbjzyp6dWA=
modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w=
modernc.org/libc v1.9.11/go.mod h1:NyF3tsA5ArIjJ83XB0JlqhjTabTCHm9aX4XMPHyQn0Q=
modernc.org/libc v1.11.0/go.mod h1:2lOfPmj7cz+g1MrPNmX65QCzVxgNq2C5o0jdLY2gAYg=
modernc.org/libc v1.11.2/go.mod h1:ioIyrl3ETkugDO3SGZ+6EOKvlP3zSOycUETe4XM4n8M=
modernc.org/libc v1.11.3 h1:q//spBhqp23lC/if8/o8hlyET57P8mCZqrqftzT2WmY=
modernc.org/libc v1.11.3/go.mod h1:k3HDCP95A6U111Q5TmG3nAyUcp3kR5YFZTeDS9v8vSU=
modernc.org/libc v1.11.5/go.mod h1:k3HDCP95A6U111Q5TmG3nAyUcp3kR5YFZTeDS9v8vSU=
modernc.org/libc v1.11.6/go.mod h1:ddqmzR6p5i4jIGK1d/EiSw97LBcE3dK24QEwCFvgNgE=
modernc.org/libc v1.11.11/go.mod h1:lXEp9QOOk4qAYOtL3BmMve99S5Owz7Qyowzvg6LiZso=
modernc.org/libc v1.11.13/go.mod h1:ZYawJWlXIzXy2Pzghaf7YfM8OKacP3eZQI81PDLFdY8=
modernc.org/libc v1.11.16/go.mod h1:+DJquzYi+DMRUtWI1YNxrlQO6TcA5+dRRiq8HWBWRC8=
modernc.org/libc v1.11.19/go.mod h1:e0dgEame6mkydy19KKaVPBeEnyJB4LGNb0bBH1EtQ3I=
modernc.org/libc v1.11.24/go.mod h1:FOSzE0UwookyT1TtCJrRkvsOrX2k38HoInhw+cSCUGk=
modernc.org/libc v1.11.26/go.mod h1:SFjnYi9OSd2W7f4ct622o/PAYqk7KHv6GS8NZULIjKY=
modernc.org/libc v1.11.27/go.mod h1:zmWm6kcFXt/jpzeCgfvUNswM0qke8qVwxqZrnddlDiE=
modernc.org/libc v1.11.28/go.mod h1:Ii4V0fTFcbq3qrv3CNn+OGHAvzqMBvC7dBNyC4vHZlg=
modernc.org/libc v1.11.31/go.mod h1:FpBncUkEAtopRNJj8aRo29qUiyx5AvAlAxzlx9GNaVM=
modernc.org/libc v1.11.34/go.mod h1:+Tzc4hnb1iaX/SKAutJmfzES6awxfU1BPvrrJO0pYLg=
modernc.org/libc v1.11.37/go.mod h1:dCQebOwoO1046yTrfUE5nX1f3YpGZQKNcITUYWlrAWo=
modernc.org/libc v1.11.39/go.mod h1:mV8lJMo2S5A31uD0k1cMu7vrJbSA3J3waQJxpV4iqx8=
modernc.org/libc v1.11.42/go.mod h1:yzrLDU+sSjLE+D4bIhS7q1L5UwXDOw99PLSX0BlZvSQ=
modernc.org/libc v1.11.44/go.mod h1:KFq33jsma7F5WXiYelU8quMJasCCTnHK0mkri4yPHgA=
modernc.org/libc v1.11.45/go.mod h1:Y192orvfVQQYFzCNsn+Xt0Hxt4DiO4USpLNXBlXg/tM=
modernc.org/libc v1.11.47/go.mod h1:tPkE4PzCTW27E6AIKIR5IwHAQKCAtudEIeAV1/SiyBg=
modernc.org/libc v1.11.49/go.mod h1:9JrJuK5WTtoTWIFQ7QjX2Mb/bagYdZdscI3xrvHbXjE=
modernc.org/libc v1.11.51/go.mod h1:R9I8u9TS+meaWLdbfQhq2kFknTW0O3aw3kEMqDDxMaM=
modernc.org/libc v1.11.53/go.mod h1:5ip5vWYPAoMulkQ5XlSJTy12Sz5U6blOQiYasilVPsU=
modernc.org/libc v1.11.54/go.mod h1:S/FVnskbzVUrjfBqlGFIPA5m7UwB3n9fojHhCNfSsnw=
modernc.org/libc v1.11.55/go.mod h1:j2A5YBRm6HjNkoSs/fzZrSxCuwWqcMYTDPLNx0URn3M=
modernc.org/libc v1.11.56/go.mod h1:pakHkg5JdMLt2OgRadpPOTnyRXm/uzu+Yyg/LSLdi18=
modernc.org/libc v1.11.58/go.mod h1:ns94Rxv0OWyoQrDqMFfWwka2BcaF6/61CqJRK9LP7S8=
modernc.org/libc v1.11.71/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw=
modernc.org/libc v1.11.75/go.mod h1:dGRVugT6edz361wmD9gk6ax1AbDSe0x5vji0dGJiPT0=
modernc.org/libc v1.11.82/go.mod h1:NF+Ek1BOl2jeC7lw3a7Jj5PWyHPwWD4aq3wVKxqV1fI=
modernc.org/libc v1.11.86/go.mod h1:ePuYgoQLmvxdNT06RpGnaDKJmDNEkV7ZPKI2jnsvZoE=
modernc.org/libc v1.11.87/go.mod h1:Qvd5iXTeLhI5PS0XSyqMY99282y+3euapQFxM7jYnpY=
modernc.org/libc v1.11.88/go.mod h1:h3oIVe8dxmTcchcFuCcJ4nAWaoiwzKCdv82MM0oiIdQ=
modernc.org/libc v1.11.98/go.mod h1:ynK5sbjsU77AP+nn61+k+wxUGRx9rOFcIqWYYMaDZ4c=
modernc.org/libc v1.11.101/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI=
modernc.org/libc v1.12.0/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ=
modernc.org/libc v1.13.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
modernc.org/libc v1.13.2 h1:GCFjY9bmwDZ/TJC4OZOUWaNgxIxwb104C/QZrqpcVEA=
modernc.org/libc v1.13.2/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
@@ -280,11 +365,11 @@ modernc.org/memory v1.0.5 h1:XRch8trV7GgvTec2i7jc33YlUI0RKVDBvZ5eZ5m8y14=
modernc.org/memory v1.0.5/go.mod h1:B7OYswTRnfGg+4tDH1t1OeUNnsy2viGTdME4tzd+IjM=
modernc.org/opt v0.1.1 h1:/0RX92k9vwVeDXj+Xn23DKp2VJubL7k8qNffND6qn3A=
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sqlite v1.13.0 h1:cwhUj0jTBgPjk/demWheV+T6xi6ifTfsGIFKFq0g3Ck=
modernc.org/sqlite v1.13.0/go.mod h1:2qO/6jZJrcQaxFUHxOwa6Q6WfiGSsiVj6GXX0Ker+Jg=
modernc.org/sqlite v1.14.4 h1:F3DRiVZKnCLqIQ0LhEGqBLnw9LcdADciCwCIHQ8bD5g=
modernc.org/sqlite v1.14.4/go.mod h1:LWtcO8JtBrt29KKmTqNNXDjAn36vHa/3nHvOYoVIAjc=
modernc.org/strutil v1.1.1 h1:xv+J1BXY3Opl2ALrBwyfEikFAj8pmqcpnfmuwUwcozs=
modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=
modernc.org/tcl v1.5.9/go.mod h1:bcwjvBJ2u0exY6K35eAmxXBBij5kXb1dHlAWmfhqThE=
modernc.org/tcl v1.10.0/go.mod h1:WzWapmP/7dHVhFoyPpEaNSVTL8xtewhouN/cqSJ5A2s=
modernc.org/token v1.0.0 h1:a0jaWiNMDhDUtqOj09wvjWWAqd3q7WpBulmL9H2egsk=
modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.1.2/go.mod h1:sj9T1AGBG0dm6SCVzldPOHWrif6XBpooJtbttMn1+Js=
modernc.org/z v1.2.21/go.mod h1:uXrObx4pGqXWIMliC5MiKuwAyMrltzwpteOFUP1PWCc=

70
main.go
View File

@@ -10,12 +10,12 @@ import (
// 下列插件可与 wdvxdr1123/ZeroBot v1.1.2 以上配合单独使用
// 插件控制
// webctrl "github.com/FloatTech/ZeroBot-Plugin/control/web" // web 后端控制
// webctrl "github.com/FloatTech/zbputils/control/web" // web 后端控制
// 词库类
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_atri" // ATRI词库
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_chat" // 基础词库
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_qingyunke" // 青云客
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_reply" // 人工智能回复
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_atri" // ATRI词库
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_chat" // 基础词库
// 实用类
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_b14" // base16384加解密
@@ -27,28 +27,39 @@ import (
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_translation" // 翻译
// 娱乐类
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin_wtf" // 鬼东西
_ "github.com/FloatTech/ZeroBot-Plugin-Gif" // 制图
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_false" // 服务器监控
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_book_review" // 哀伤雪刃吧推书记录
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_choose" // 选择困难症帮手
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_coser" // 三次元小姐姐
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_fortune" // 运势
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_hs" // 炉石
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_minecraft" // MCSManager
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_moyu" // 摸鱼
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_music" // 点歌
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_omikuji" // 浅草寺求签
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_reborn" // 投胎
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_shindan" // 测定
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin_wtf" // 鬼东西
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_ai_false" // 服务器监控
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_book_review" // 哀伤雪刃吧推书记录
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_cangtoushi" // 藏头诗
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_choose" // 选择困难症帮手
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_chouxianghua" // 说抽象话
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_cpstory" // cp短打
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_curse" // 骂人
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_fortune" // 运势
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_funny" // 笑话
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_gif" // 制图
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_hs" // 炉石
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_juejuezi" // 绝绝子生成器
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_minecraft" // MCSManager
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_moyu" // 摸鱼
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_music" // 点歌
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_novel" // 铅笔小说网搜索
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_omikuji" // 浅草寺求签
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_reborn" // 投胎
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_score" // 分数
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_shadiao" // 沙雕app
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_shindan" // 测定
// b站相关
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_bilibili" // 查询b站用户信息
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_diana" // 嘉心糖发病
// _ "github.com/FloatTech/ZeroBot-Plugin/plugin_bilibili_push" // b站推送需要安装chrome浏览器
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_diana" // 嘉心糖发病
// 二次元图片
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_acgimage" // 随机图片与AI点评
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_aiwife" // 随机老婆
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_coser" // 三次元小姐姐
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_danbooru" // DeepDanbooru二次元图标签识别
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_image_finder" // 关键字搜图
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_lolicon" // lolicon 随机图片
_ "github.com/FloatTech/ZeroBot-Plugin/plugin_nativesetu" // 本地涩图
@@ -69,14 +80,17 @@ import (
var (
contents = []string{
"* OneBot + ZeroBot + Golang",
"* Version 1.2.2 - 2021-12-13 21:22:45 +0800 CST",
"* Version 1.2.4 - 2022-01-14 20:05:43 +0800 CST",
"* Copyright © 2020 - 2021 FloatTech. All Rights Reserved.",
"* Project: https://github.com/FloatTech/ZeroBot-Plugin",
}
nicks = []string{"ATRI", "atri", "亚托莉", "アトリ"}
banner = strings.Join(contents, "\n")
token *string
url *string
reg = registry.NewRegReader("reilia.eastasia.azurecontainer.io:32664", "fumiama")
adana *string
prefix *string
reg = registry.NewRegReader("reilia.fumiama.top:32664", "fumiama")
)
func init() {
@@ -91,6 +105,9 @@ func init() {
token = flag.String("t", "", "Set AccessToken of WSClient.")
// 直接写死 URL 时,请更改下面第二个参数
url = flag.String("u", "ws://127.0.0.1:6700", "Set Url of WSClient.")
// 默认昵称
adana = flag.String("n", "椛椛", "Set default nickname.")
prefix = flag.String("p", "/", "Set command prefix.")
flag.Parse()
if *h {
@@ -122,10 +139,10 @@ func printBanner() {
func getKanban() string {
err := reg.Connect()
defer reg.Close()
if err != nil {
return err.Error()
}
defer reg.Close()
text, err := reg.Get("ZeroBot-Plugin/kanban")
if err != nil {
return err.Error()
@@ -146,12 +163,11 @@ func main() {
})
zero.RunAndBlock(
zero.Config{
NickName: []string{"椛椛", "ATRI", "atri", "亚托莉", "アトリ"},
CommandPrefix: "/",
NickName: append([]string{*adana}, nicks...),
CommandPrefix: *prefix,
// SuperUsers 某些功能需要主人权限,可通过以下两种方式修改
// "12345678", "87654321"通过代码写死的方式添加主人账号
// flag.Args()通过命令行参数的方式添加主人账号,无需修改下方任何代码
SuperUsers: append([]string{"12345678", "87654321"}, flag.Args()...),
// SuperUsers: []string{"12345678", "87654321"}, // 通过代码写死的方式添加主人账号
SuperUsers: flag.Args(), // 通过命令行参数的方式添加主人账号
Driver: []zero.Driver{driver.NewWebSocketClient(*url, *token)},
},
)

View File

@@ -4,13 +4,67 @@
package main
import (
"bytes"
"strings"
"github.com/sirupsen/logrus"
easy "github.com/t-tomalak/logrus-easy-formatter"
)
func init() {
// windows 不支持带颜色 log,故自定义格式
logrus.SetFormatter(&easy.Formatter{
LogFormat: "[%lvl%] %msg%\n",
})
// windows 带颜色 log 自定义格式
logrus.SetFormatter(&LogFormat{})
}
const (
colorCodePanic = "\x1b[1;31m" // color.Style{color.Bold, color.Red}.String()
colorCodeFatal = "\x1b[1;31m" // color.Style{color.Bold, color.Red}.String()
colorCodeError = "\x1b[31m" // color.Style{color.Red}.String()
colorCodeWarn = "\x1b[33m" // color.Style{color.Yellow}.String()
colorCodeInfo = "\x1b[37m" // color.Style{color.White}.String()
colorCodeDebug = "\x1b[32m" // color.Style{color.Green}.String()
colorCodeTrace = "\x1b[36m" // color.Style{color.Cyan}.String()
colorReset = "\x1b[0m"
)
// LogFormat specialize for zbp
type LogFormat struct{}
// Format implements logrus.Formatter
func (f LogFormat) Format(entry *logrus.Entry) ([]byte, error) {
buf := new(bytes.Buffer)
buf.WriteString(getLogLevelColorCode(entry.Level))
buf.WriteByte('[')
buf.WriteString(strings.ToUpper(entry.Level.String()))
buf.WriteString("] ")
buf.WriteString(entry.Message)
buf.WriteString(" \n")
buf.WriteString(colorReset)
return buf.Bytes(), nil
}
// getLogLevelColorCode 获取日志等级对应色彩code
func getLogLevelColorCode(level logrus.Level) string {
switch level {
case logrus.PanicLevel:
return colorCodePanic
case logrus.FatalLevel:
return colorCodeFatal
case logrus.ErrorLevel:
return colorCodeError
case logrus.WarnLevel:
return colorCodeWarn
case logrus.InfoLevel:
return colorCodeInfo
case logrus.DebugLevel:
return colorCodeDebug
case logrus.TraceLevel:
return colorCodeTrace
default:
return colorCodeInfo
}
}

View File

@@ -3,7 +3,6 @@ package acgimage
import (
"net/url"
"strconv"
"strings"
"time"
@@ -13,18 +12,17 @@ import (
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/web"
)
const (
lolipxy = "https://sayuri.fumiama.top/dice?class=0&loli=true&r18=true"
apihead = "https://sayuri.fumiama.top/img?path="
lolipxy = "https://sayuri.fumiama.top/dice?class=0&loli=true&r18=true"
apihead = "https://sayuri.fumiama.top/img?path="
apiheadv6 = "http://aikae.v6.army:62002/img?arg=get&name="
)
var (
datapath = file.BOT_PATH + "/data/acgimage/"
cacheuri = "file:///" + datapath + "cache"
// r18有一定保护一般不会发出图片
randapi = "&loli=true&r18=true"
msgof = make(map[int64]int64)
@@ -33,8 +31,6 @@ var (
)
func init() { // 插件主体
// 初始化 classify
classify.Init(datapath)
engine := control.Register("acgimage", &control.Options{
DisableOnDefault: false,
Help: "随机图片与AI点评\n" +
@@ -57,14 +53,12 @@ func init() { // 插件主体
// 有保护的随机图片
engine.OnFullMatch("随机图片", zero.OnlyGroup).SetBlock(true).SetPriority(24).
Handle(func(ctx *zero.Ctx) {
if classify.CanVisit(5) && limit.Load(ctx.Event.UserID).Acquire() {
go func() {
class, lastvisit, dhash, comment := classify.Classify(randapi, false)
replyClass(ctx, dhash, class, false, lastvisit, comment)
}()
} else {
ctx.SendChain(message.Text("你太快啦!"))
if limit.Load(ctx.Event.UserID).Acquire() {
class, dhash, comment, _ := classify.Classify(randapi, true)
replyClass(ctx, class, dhash, comment, false)
return
}
ctx.SendChain(message.Text("你太快啦!"))
})
// 直接随机图片无r18保护后果自负。如果出r18图可尽快通过发送"太涩了"撤回
engine.OnFullMatch("直接随机", zero.OnlyGroup, zero.AdminPermission).SetBlock(true).SetPriority(24).
@@ -86,24 +80,31 @@ func init() { // 插件主体
// 撤回最后的直接随机图片
engine.OnFullMatch("太涩了").SetBlock(true).SetPriority(24).
Handle(func(ctx *zero.Ctx) {
go cancel(ctx)
msg, ok := msgof[ctx.Event.GroupID]
if ok {
ctx.DeleteMessage(msg)
delete(msgof, ctx.Event.GroupID)
}
})
// 上传一张图进行评价
engine.OnKeywordGroup([]string{"评价图片"}, zero.OnlyGroup, picture.CmdMatch, picture.MustGiven).SetBlock(true).SetPriority(24).
Handle(func(ctx *zero.Ctx) {
ctx.SendChain(message.Text("少女祈祷中..."))
for _, url := range ctx.State["image_url"].([]string) {
go func(target string) {
class, lastvisit, dhash, comment := classify.Classify(target, true)
replyClass(ctx, dhash, class, true, lastvisit, comment)
}(url)
class, dhash, comment, _ := classify.Classify(url, true)
replyClass(ctx, class, dhash, comment, true)
break
}
})
engine.OnRegex(`^给你点提示哦:(.*)$`, zero.OnlyPrivate).SetBlock(true).SetPriority(20).
Handle(func(ctx *zero.Ctx) {
dhash := ctx.State["regex_matched"].([]string)[1]
if len(dhash) == 5*3 {
ctx.SendChain(message.Image(apihead + dhash))
if web.IsSupportIPv6 {
ctx.SendChain(message.Image(apiheadv6 + dhash + ".webp"))
} else {
ctx.SendChain(message.Image(apihead + dhash))
}
}
})
}
@@ -112,32 +113,32 @@ func setLastMsg(id int64, msg int64) {
msgof[id] = msg
}
func cancel(ctx *zero.Ctx) {
msg, ok := msgof[ctx.Event.GroupID]
if ok {
ctx.DeleteMessage(msg)
delete(msgof, ctx.Event.GroupID)
func replyClass(ctx *zero.Ctx, class int, dhash string, comment string, isupload bool) {
b14, err := url.QueryUnescape(dhash)
if err != nil {
return
}
}
func replyClass(ctx *zero.Ctx, dhash string, class int, noimg bool, lv int64, comment string) {
img := message.Image(cacheuri + strconv.FormatInt(lv, 10))
if class > 5 {
if dhash != "" && !noimg {
b14, err3 := url.QueryUnescape(dhash)
if err3 == nil {
ctx.SendChain(message.Text(comment + "\n给你点提示哦" + b14))
ctx.Event.GroupID = 0
ctx.SendChain(img)
}
} else {
ctx.SendChain(message.Text(comment))
}
var img message.MessageSegment
if web.IsSupportIPv6 {
img = message.Image(apiheadv6 + dhash + ".webp")
} else {
if !noimg {
ctx.SendChain(img, message.Text(comment))
} else {
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(comment))
}
img = message.Image(apihead + dhash)
}
if class > 5 {
if dhash != "" && !isupload {
ctx.SendChain(message.Text(comment + "\n给你点提示哦" + b14))
ctx.Event.GroupID = 0
ctx.SendChain(img)
return
}
ctx.SendChain(message.Text(comment))
return
}
if isupload {
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(comment))
return
}
ctx.SendChain(img, message.Text(comment))
}

View File

@@ -7,12 +7,11 @@ import (
"os"
"time"
control "github.com/FloatTech/zbputils/control"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
"github.com/FloatTech/ZeroBot-Plugin/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
)
@@ -44,21 +43,37 @@ func init() { // 插件主体
}
func cpuPercent() float64 {
percent, _ := cpu.Percent(time.Second, false)
percent, err := cpu.Percent(time.Second, false)
if err != nil {
return -1
}
return math.Round(percent[0])
}
func memPercent() float64 {
memInfo, _ := mem.VirtualMemory()
memInfo, err := mem.VirtualMemory()
if err != nil {
return -1
}
return math.Round(memInfo.UsedPercent)
}
func diskPercent() string {
parts, _ := disk.Partitions(true)
parts, err := disk.Partitions(true)
if err != nil {
return err.Error()
}
msg := ""
for _, p := range parts {
diskInfo, _ := disk.Usage(p.Mountpoint)
msg += fmt.Sprintf("\n - %s(%dM) %d%%", p.Mountpoint, diskInfo.Total/1024/1024, uint(math.Round(diskInfo.UsedPercent)))
diskInfo, err := disk.Usage(p.Mountpoint)
if err != nil {
msg += "\n - " + err.Error()
continue
}
pc := uint(math.Round(diskInfo.UsedPercent))
if pc > 0 {
msg += fmt.Sprintf("\n - %s(%dM) %d%%", p.Mountpoint, diskInfo.Total/1024/1024, pc)
}
}
return msg
}

96
plugin_ai_reply/main.go Normal file
View File

@@ -0,0 +1,96 @@
// Package aireply AI 回复
package aireply
import (
"errors"
"time"
"github.com/FloatTech/AnimeAPI/aireply"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
)
const (
serviceName = "aireply"
prio = 256
)
var modes = [...]string{"青云客", "小爱"}
func init() { // 插件主体
bucket := rate.NewManager(time.Minute, 20) // 接口回复限速器
engine := control.Register(serviceName, &control.Options{
DisableOnDefault: false,
Help: "人工智能回复\n" +
"- @Bot 任意文本(任意一句话回复)\n- 设置回复模式[青云客|小爱]\n- ",
})
// 回复 @和包括名字
engine.OnMessage(zero.OnlyToMe).SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
aireply := aireply.NewAIReply(getReplyMode(ctx))
if !bucket.Load(ctx.Event.UserID).Acquire() {
// 频繁触发,不回复
return
}
reply := aireply.Talk(ctx.ExtractPlainText())
// 回复
time.Sleep(time.Second * 1)
if ctx.Event.MessageType == "group" {
reply = append(reply, message.Reply(ctx.Event.MessageID))
ctx.Send(reply)
return
}
ctx.Send(reply)
})
engine.OnPrefix(`设置回复模式`).SetBlock(true).SetPriority(20).
Handle(func(ctx *zero.Ctx) {
param := ctx.State["args"].(string)
err := setReplyMode(ctx, param)
if err != nil {
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(err))
return
}
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("成功"))
})
}
func setReplyMode(ctx *zero.Ctx, name string) error {
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
var ok bool
var index int64
for i, s := range modes {
if s == name {
ok = true
index = int64(i)
break
}
}
if !ok {
return errors.New("no such mode")
}
m, ok := control.Lookup(serviceName)
if !ok {
return errors.New("no such plugin")
}
return m.SetData(gid, index)
}
func getReplyMode(ctx *zero.Ctx) (name string) {
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
m, ok := control.Lookup(serviceName)
if ok {
index := m.GetData(gid)
if int(index) < len(modes) {
return modes[index]
}
}
return "青云客"
}

32
plugin_ai_reply/tts.go Normal file
View File

@@ -0,0 +1,32 @@
package aireply
import (
"time"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/FloatTech/AnimeAPI/aireply"
"github.com/FloatTech/AnimeAPI/mockingbird"
control "github.com/FloatTech/zbputils/control"
)
const ttsprio = 250
func init() {
limit := rate.NewManager(time.Second*10, 1)
control.Register("mockingbird", &control.Options{
DisableOnDefault: false,
Help: "拟声鸟\n- @Bot 任意文本(任意一句话回复)",
}).OnMessage(zero.OnlyToMe, func(ctx *zero.Ctx) bool {
return limit.Load(ctx.Event.UserID).Acquire()
}).SetBlock(true).SetPriority(ttsprio).
Handle(func(ctx *zero.Ctx) {
msg := ctx.ExtractPlainText()
r := aireply.NewAIReply(getReplyMode(ctx))
ctx.SendChain(mockingbird.Speak(ctx.Event.UserID, func() string {
return r.TalkPlain(msg)
}))
})
}

View File

@@ -6,10 +6,9 @@ import (
"math/rand"
"time"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
const (

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

View File

@@ -12,17 +12,17 @@ import (
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/process"
)
const (
// 服务名
servicename = "atri"
// ATRI 所有命令的优先级
prio = 5
prio = 15
// ATRI 表情的 codechina 镜像
res = "https://codechina.csdn.net/u011570312/ZeroBot-Plugin/-/raw/master/plugin_atri/"
res = "https://gitcode.net/u011570312/zbpdata/-/raw/main/Atri/"
)
func init() { // 插件主体

View File

@@ -4,13 +4,12 @@ package b14coder
import (
"unsafe"
control "github.com/FloatTech/zbputils/control"
base14 "github.com/fumiama/go-base16384"
tea "github.com/fumiama/gofastTEA"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
func init() {

View File

@@ -5,11 +5,10 @@ import (
"net/http"
"time"
control "github.com/FloatTech/zbputils/control"
"github.com/fumiama/cron"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
type follower struct {

View File

@@ -5,11 +5,10 @@ import (
"io/ioutil"
"net/http"
control "github.com/FloatTech/zbputils/control"
"github.com/tidwall/gjson"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
var engine = control.Register("bilibili", &control.Options{

View File

@@ -0,0 +1,439 @@
// Package bilibilipush b站推送
package bilibilipush
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"strconv"
"time"
"github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/txt2img"
"github.com/FloatTech/zbputils/web"
"github.com/chromedp/chromedp"
log "github.com/sirupsen/logrus"
"github.com/tidwall/gjson"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
)
const (
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
referer = "https://www.bilibili.com/"
infoURL = "https://api.bilibili.com/x/space/acc/info?mid=%d"
userDynamicsURL = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=%d&offset_dynamic_id=0&need_top=0"
liveListURL = "https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids"
tURL = "https://t.bilibili.com/"
liveURL = "https://live.bilibili.com/"
prio = 10
serviceName = "bilibilipush"
)
var (
lastTime = map[int64]int64{}
typeMsg = map[int64]string{
0: "发布了新动态",
1: "转发了一条动态",
2: "发布了新动态",
4: "发布了新动态",
8: "发布了新投稿",
16: "发布了短视频",
64: "发布了新专栏",
256: "发布了新音频",
}
liveStatus = map[int64]int{}
uidErrorMsg = map[int]string{
0: "输入的uid有效",
-400: "uid不存在注意uid不是房间号",
-402: "uid不存在注意uid不是房间号",
-412: "操作过于频繁IP暂时被风控请半小时后再尝试",
}
upMap = map[int64]string{}
)
func init() {
go bilibiliPushDaily()
en := control.Register(serviceName, &control.Options{
DisableOnDefault: false,
Help: "bilibilipush\n" +
"- 添加订阅[uid]\n" +
"- 取消订阅[uid]\n" +
"- 取消动态订阅[uid]\n" +
"- 取消直播订阅[uid]\n" +
"- 推送列表",
})
en.OnRegex(`^添加订阅(\d+)$`, ctxext.UserOrGrpAdmin).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
var name string
var ok bool
if name, ok = upMap[buid]; !ok {
var status int
status, name = checkBuid(buid)
if status != 0 {
msg, ok := uidErrorMsg[status]
if !ok {
msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0]
}
ctx.SendChain(message.Text(msg))
return
}
}
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
if err := subscribe(buid, gid); err != nil {
log.Errorln("[bilibilipush]:", err)
} else {
ctx.SendChain(message.Text("已添加" + name + "的订阅"))
}
})
en.OnRegex(`^取消订阅(\d+)$`, ctxext.UserOrGrpAdmin).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
var name string
var ok bool
if name, ok = upMap[buid]; !ok {
var status int
status, name = checkBuid(buid)
if status != 0 {
msg, ok := uidErrorMsg[status]
if !ok {
msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0]
}
ctx.SendChain(message.Text(msg))
return
}
}
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
if err := unsubscribe(buid, gid); err != nil {
log.Errorln("[bilibilipush]:", err)
} else {
ctx.SendChain(message.Text("已取消" + name + "的订阅"))
}
})
en.OnRegex(`^取消动态订阅(\d+)$`, ctxext.UserOrGrpAdmin).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
var name string
var ok bool
if name, ok = upMap[buid]; !ok {
var status int
status, name = checkBuid(buid)
if status != 0 {
msg, ok := uidErrorMsg[status]
if !ok {
msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0]
}
ctx.SendChain(message.Text(msg))
return
}
}
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
if err := unsubscribeDynamic(buid, gid); err != nil {
log.Errorln("[bilibilipush]:", err)
} else {
ctx.SendChain(message.Text("已取消" + name + "的动态订阅"))
}
})
en.OnRegex(`^取消直播订阅(\d+)$`, ctxext.UserOrGrpAdmin).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
var name string
var ok bool
if name, ok = upMap[buid]; !ok {
var status int
status, name = checkBuid(buid)
if status != 0 {
msg, ok := uidErrorMsg[status]
if !ok {
msg = "未知错误,请私聊反馈给" + zero.BotConfig.NickName[0]
}
ctx.SendChain(message.Text(msg))
return
}
}
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
if err := unsubscribeLive(buid, gid); err != nil {
log.Errorln("[bilibilipush]:", err)
} else {
ctx.SendChain(message.Text("已取消" + name + "的直播订阅"))
}
})
en.OnFullMatch("推送列表", ctxext.UserOrGrpAdmin).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
bpl := bdb.getAllPushByGroup(gid)
fmt.Println(bpl)
msg := "--------推送列表--------"
for _, v := range bpl {
if _, ok := upMap[v.BilibiliUID]; !ok {
bdb.updateAllUp()
fmt.Println(upMap)
}
msg += fmt.Sprintf("\nuid:%-12d 动态:", v.BilibiliUID)
if v.DynamicDisable == 0 {
msg += "●"
} else {
msg += "○"
}
msg += " 直播:"
if v.LiveDisable == 0 {
msg += "●"
} else {
msg += "○"
}
msg += " up主" + upMap[v.BilibiliUID]
}
data, err := txt2img.RenderToBase64(msg, txt2img.FontFile, 600, 20)
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
if id := ctx.SendChain(message.Image("base64://" + helper.BytesToString(data))); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
}
})
}
func bilibiliPushDaily() {
t := time.NewTicker(time.Second * 10)
defer t.Stop()
for range t.C {
log.Println("-----bilibilipush拉取推送信息-----")
sendDynamic()
sendLive()
}
}
func checkBuid(buid int64) (status int, name string) {
data, err := web.ReqWith(fmt.Sprintf(infoURL, buid), "GET", referer, ua)
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
status = int(gjson.Get(helper.BytesToString(data), "code").Int())
name = gjson.Get(helper.BytesToString(data), "data.name").String()
if status == 0 {
bdb.insertBilibiliUp(buid, name)
upMap[buid] = name
}
return
}
// subscribe 订阅
func subscribe(buid, groupid int64) (err error) {
bpMap := map[string]interface{}{
"bilibili_uid": buid,
"group_id": groupid,
"live_disable": 0,
"dynamic_disable": 0,
}
err = bdb.insertOrUpdateLiveAndDynamic(bpMap)
return
}
// unsubscribe 取消订阅
func unsubscribe(buid, groupid int64) (err error) {
bpMap := map[string]interface{}{
"bilibili_uid": buid,
"group_id": groupid,
"live_disable": 1,
"dynamic_disable": 1,
}
err = bdb.insertOrUpdateLiveAndDynamic(bpMap)
return
}
func unsubscribeDynamic(buid, groupid int64) (err error) {
bpMap := map[string]interface{}{
"bilibili_uid": buid,
"group_id": groupid,
"dynamic_disable": 1,
}
err = bdb.insertOrUpdateLiveAndDynamic(bpMap)
return
}
func unsubscribeLive(buid, groupid int64) (err error) {
bpMap := map[string]interface{}{
"bilibili_uid": buid,
"group_id": groupid,
"live_disable": 1,
}
err = bdb.insertOrUpdateLiveAndDynamic(bpMap)
return
}
func getUserDynamicCard(buid int64) (cardList []gjson.Result) {
data, err := web.ReqWith(fmt.Sprintf(userDynamicsURL, buid), "GET", referer, ua)
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
cardList = gjson.Get(helper.BytesToString(data), "data.cards").Array()
return
}
func getLiveList(uids ...int64) string {
m := make(map[string]interface{})
m["uids"] = uids
b, _ := json.Marshal(m)
client := &http.Client{}
// 提交请求
request, err := http.NewRequest("POST", liveListURL, bytes.NewBuffer(b))
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
request.Header.Add("Referer", referer)
request.Header.Add("User-Agent", ua)
response, err := client.Do(request)
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
defer response.Body.Close()
data, err := io.ReadAll(response.Body)
if err != nil {
log.Errorln("[bilibilipush]:", err)
}
return helper.BytesToString(data)
}
func sendDynamic() {
uids := bdb.getAllBuidByDynamic()
for _, buid := range uids {
cardList := getUserDynamicCard(buid)
if len(cardList) == 0 {
return
}
t, ok := lastTime[buid]
if !ok {
lastTime[buid] = cardList[0].Get("desc.timestamp").Int()
return
}
for i := len(cardList) - 1; i >= 0; i-- {
ct := cardList[i].Get("desc.timestamp").Int()
if ct > t && ct > time.Now().Unix()-600 {
lastTime[buid] = ct
m, ok := control.Lookup(serviceName)
if ok {
groupList := bdb.getAllGroupByBuidAndDynamic(buid)
cID := cardList[i].Get("desc.dynamic_id").String()
cType := cardList[i].Get("desc.type").Int()
cName := cardList[i].Get("desc.user_profile.info.uname").String()
screenshotFile := cachePath + cID + ".png"
initDynamicScreenshot(cID)
var msg []message.MessageSegment
msg = append(msg, message.Text(cName+typeMsg[cType]))
msg = append(msg, message.Image("file:///"+file.BOTPATH+"/"+screenshotFile))
msg = append(msg, message.Text(tURL+cID))
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
for _, gid := range groupList {
if m.IsEnabledIn(gid) {
if gid > 0 {
ctx.SendGroupMessage(gid, msg)
} else if gid < 0 {
ctx.SendPrivateMessage(-gid, msg)
} else {
log.Errorln("[bilibilipush]:gid为0")
}
}
}
return true
})
}
}
}
}
}
func sendLive() {
uids := bdb.getAllBuidByLive()
gjson.Get(getLiveList(uids...), "data").ForEach(func(key, value gjson.Result) bool {
newStatus := int(value.Get("live_status").Int())
if newStatus == 2 {
newStatus = 0
}
if _, ok := liveStatus[key.Int()]; !ok {
liveStatus[key.Int()] = newStatus
return true
}
oldStatus := liveStatus[key.Int()]
if newStatus != oldStatus && newStatus == 1 {
liveStatus[key.Int()] = newStatus
m, ok := control.Lookup(serviceName)
if ok {
groupList := bdb.getAllGroupByBuidAndLive(key.Int())
roomID := value.Get("short_id").Int()
if roomID == 0 {
roomID = value.Get("room_id").Int()
}
lURL := liveURL + strconv.FormatInt(roomID, 10)
lName := value.Get("uname").String()
lTitle := value.Get("title").String()
lCover := value.Get("cover_from_user").String()
if lCover == "" {
lCover = value.Get("keyframe").String()
}
var msg []message.MessageSegment
msg = append(msg, message.Text(lName+" 正在直播:\n"))
msg = append(msg, message.Text(lTitle))
msg = append(msg, message.Image(lCover))
msg = append(msg, message.Text(lURL))
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
for _, gid := range groupList {
if m.IsEnabledIn(gid) {
if gid > 0 {
ctx.SendGroupMessage(gid, msg)
} else if gid < 0 {
ctx.SendPrivateMessage(-gid, msg)
} else {
log.Errorln("[bilibilipush]:gid为0")
}
}
}
return true
})
}
}
return true
})
}
func initDynamicScreenshot(dynamicID string) {
screenshotFile := cachePath + dynamicID + ".png"
if file.IsNotExist(screenshotFile) {
var imageBuf []byte
dynamicURL := tURL + dynamicID
ctx, cancel := chromedp.NewContext(context.Background(), chromedp.WithDebugf(log.Printf))
defer cancel()
if err := chromedp.Run(ctx, chromedp.Tasks{
chromedp.Navigate(dynamicURL),
chromedp.SetAttributeValue(`div.unlogin-popover-avatar`, "style", "display:none;", chromedp.ByQuery),
chromedp.SetAttributeValue(`div.bb-comment`, "style", "display:none;", chromedp.ByQuery),
chromedp.Screenshot(`.card`, &imageBuf, chromedp.NodeVisible, chromedp.ByQuery),
}); err != nil {
log.Errorln("[bilibilipush]:", err)
}
if err := ioutil.WriteFile(screenshotFile, imageBuf, 0644); err != nil {
log.Errorln("[bilibilipush]:", err)
}
}
}

View File

@@ -0,0 +1,29 @@
package bilibilipush
import (
"os"
"github.com/FloatTech/zbputils/process"
log "github.com/sirupsen/logrus"
)
const (
cachePath = dbpath + "cache/"
dbpath = "data/bilibilipush/"
dbfile = dbpath + "push.db"
)
// bdb bilibili推送数据库
var bdb *bilibilipushdb
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(dbpath, 0755)
os.RemoveAll(cachePath)
_ = os.MkdirAll(cachePath, 0755)
bdb = initialize(dbfile)
log.Println("[bilibilipush]加载bilibilipush数据库")
}()
}

View File

@@ -0,0 +1,159 @@
package bilibilipush
import (
"encoding/json"
"os"
"github.com/jinzhu/gorm"
_ "github.com/logoove/sqlite" // import sql
)
// bilibilipushdb bili推送数据库
type bilibilipushdb gorm.DB
type bilibilipush struct {
ID int64 `gorm:"column:id;primary_key" json:"id"`
BilibiliUID int64 `gorm:"column:bilibili_uid;index:idx_buid_gid" json:"bilibili_uid"`
GroupID int64 `gorm:"column:group_id;index:idx_buid_gid" json:"group_id"`
LiveDisable int64 `gorm:"column:live_disable;default:0" json:"live_disable"`
DynamicDisable int64 `gorm:"column:dynamic_disable;default:0" json:"dynamic_disable"`
}
// TableName ...
func (bilibilipush) TableName() string {
return "bilibili_push"
}
type bilibiliup struct {
BilibiliUID int64 `gorm:"column:bilibili_uid;primary_key"`
Name string `gorm:"column:name"`
}
// TableName ...
func (bilibiliup) TableName() string {
return "bilibili_up"
}
// initialize 初始化ScoreDB数据库
func initialize(dbpath string) *bilibilipushdb {
var err error
if _, err = os.Stat(dbpath); err != nil || os.IsNotExist(err) {
// 生成文件
f, err := os.Create(dbpath)
if err != nil {
return nil
}
defer f.Close()
}
gdb, err := gorm.Open("sqlite3", dbpath)
if err != nil {
panic(err)
}
gdb.AutoMigrate(&bilibilipush{}).AutoMigrate(&bilibiliup{})
return (*bilibilipushdb)(gdb)
}
// open ...
func open(dbpath string) (*bilibilipushdb, error) {
db, err := gorm.Open("sqlite3", dbpath)
if err != nil {
return nil, err
}
return (*bilibilipushdb)(db), nil
}
// close ...
func (bdb *bilibilipushdb) close() error {
db := (*gorm.DB)(bdb)
return db.Close()
}
// insertOrUpdateLiveAndDynamic 插入或更新数据库
func (bdb *bilibilipushdb) insertOrUpdateLiveAndDynamic(bpMap map[string]interface{}) (err error) {
db := (*gorm.DB)(bdb)
bp := bilibilipush{}
data, _ := json.Marshal(&bpMap)
_ = json.Unmarshal(data, &bp)
if err = db.Debug().Model(&bilibilipush{}).First(&bp, "bilibili_uid = ? and group_id = ?", bp.BilibiliUID, bp.GroupID).Error; err != nil {
if gorm.IsRecordNotFoundError(err) {
err = db.Debug().Model(&bilibilipush{}).Create(&bp).Error
}
} else {
err = db.Debug().Model(&bilibilipush{}).Where("bilibili_uid = ? and group_id = ?", bp.BilibiliUID, bp.GroupID).Update(bpMap).Error
}
return
}
func (bdb *bilibilipushdb) getAllBuidByLive() (buidList []int64) {
db := (*gorm.DB)(bdb)
var bpl []bilibilipush
db.Debug().Model(&bilibilipush{}).Find(&bpl, "live_disable = 0")
temp := make(map[int64]bool)
for _, v := range bpl {
_, ok := temp[v.BilibiliUID]
if !ok {
buidList = append(buidList, v.BilibiliUID)
temp[v.BilibiliUID] = true
}
}
return
}
func (bdb *bilibilipushdb) getAllBuidByDynamic() (buidList []int64) {
db := (*gorm.DB)(bdb)
var bpl []bilibilipush
db.Debug().Model(&bilibilipush{}).Find(&bpl, "dynamic_disable = 0")
temp := make(map[int64]bool)
for _, v := range bpl {
_, ok := temp[v.BilibiliUID]
if !ok {
buidList = append(buidList, v.BilibiliUID)
temp[v.BilibiliUID] = true
}
}
return
}
func (bdb *bilibilipushdb) getAllGroupByBuidAndLive(buid int64) (groupList []int64) {
db := (*gorm.DB)(bdb)
var bpl []bilibilipush
db.Debug().Model(&bilibilipush{}).Find(&bpl, "bilibili_uid = ? and live_disable = 0", buid)
for _, v := range bpl {
groupList = append(groupList, v.GroupID)
}
return
}
func (bdb *bilibilipushdb) getAllGroupByBuidAndDynamic(buid int64) (groupList []int64) {
db := (*gorm.DB)(bdb)
var bpl []bilibilipush
db.Debug().Model(&bilibilipush{}).Find(&bpl, "bilibili_uid = ? and dynamic_disable = 0", buid)
for _, v := range bpl {
groupList = append(groupList, v.GroupID)
}
return
}
func (bdb *bilibilipushdb) getAllPushByGroup(groupID int64) (bpl []bilibilipush) {
db := (*gorm.DB)(bdb)
db.Debug().Model(&bilibilipush{}).Find(&bpl, "group_id = ? and (live_disable = 0 or dynamic_disable = 0)", groupID)
return
}
func (bdb *bilibilipushdb) insertBilibiliUp(buid int64, name string) {
db := (*gorm.DB)(bdb)
bu := bilibiliup{
BilibiliUID: buid,
Name: name,
}
db.Debug().Model(&bilibiliup{}).Create(bu)
}
func (bdb *bilibilipushdb) updateAllUp() {
db := (*gorm.DB)(bdb)
var bul []bilibiliup
db.Debug().Model(&bilibiliup{}).Find(&bul)
for _, v := range bul {
upMap[v.BilibiliUID] = v.Name
}
}

View File

@@ -1,10 +1,14 @@
package plugin_book_review
// Package bookreview 书评
package bookreview
import (
log "github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/control"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/txt2img"
)
func init() {
@@ -17,12 +21,24 @@ func init() {
engine.OnRegex("^书评([\u4E00-\u9FA5A-Za-z0-9]{1,25})$").SetBlock(true).
Handle(func(ctx *zero.Ctx) {
b := getBookReviewByKeyword(ctx.State["regex_matched"].([]string)[1])
ctx.SendChain(message.Text(b.BookReview))
data, err := txt2img.RenderToBase64(b.BookReview, txt2img.FontFile, 400, 20)
if err != nil {
log.Println("err:", err)
}
if id := ctx.SendChain(message.Image("base64://" + helper.BytesToString(data))); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
}
})
engine.OnFullMatch("随机书评").SetBlock(true).
Handle(func(ctx *zero.Ctx) {
br := getRandomBookReview()
ctx.SendChain(message.Text(br.BookReview))
data, err := txt2img.RenderToBase64(br.BookReview, txt2img.FontFile, 400, 20)
if err != nil {
log.Println("err:", err)
}
if id := ctx.SendChain(message.Image("base64://" + helper.BytesToString(data))); id == 0 {
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
}
})
}

View File

@@ -1,13 +1,13 @@
package plugin_book_review
package bookreview
import (
"os"
log "github.com/sirupsen/logrus"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
)
const dbpath = "data/BookReview/"

View File

@@ -1,43 +0,0 @@
package main
import (
"os"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
)
type book struct {
Id uint64 `db:"id"`
BookReview string `db:"bookreview"`
}
func main() {
db, err := Open(os.Args[1])
if err != nil {
panic(err)
}
newdb := &sql.Sqlite{DBPath: os.Args[2]}
err = newdb.Create("bookreview", &book{})
if err != nil {
panic(err)
}
rs, err := db.Table("book_review").Select("book_review", "").Rows()
if err != nil {
panic(err)
}
var d string
var i uint64
for rs.Next() {
err := rs.Scan(&d)
if err != nil {
panic(err)
}
i++
err = newdb.Insert("bookreview", &book{i, d})
if err != nil {
panic(err)
}
}
db.Close()
newdb.Close()
}

View File

@@ -1,46 +0,0 @@
package main
import (
"os"
"github.com/jinzhu/gorm"
_ "github.com/logoove/sqlite"
)
type BrDB = gorm.DB
func Initialize(dbpath string) *BrDB {
var err error
if _, err = os.Stat(dbpath); err != nil || os.IsNotExist(err) {
// 生成文件
f, err := os.Create(dbpath)
if err != nil {
return nil
}
defer f.Close()
}
gdb, err := gorm.Open("sqlite3", dbpath)
if err != nil {
panic(err)
}
gdb.AutoMigrate(&BookReview{})
return (*BrDB)(gdb)
}
func Open(dbpath string) (*BrDB, error) {
db, err := gorm.Open("sqlite3", dbpath)
if err != nil {
return nil, err
} else {
return (*BrDB)(db), nil
}
}
type BookReview struct {
gorm.Model
BookReview string `gorm:"column:book_review"`
}
func (BookReview) TableName() string {
return "book_review"
}

View File

@@ -1,17 +1,17 @@
package plugin_book_review
package bookreview
type book struct {
Id uint64 `db:"id"`
ID uint64 `db:"id"`
BookReview string `db:"bookreview"`
}
// 暂时随机选择一个书评
func getBookReviewByKeyword(keyword string) (b book) {
db.Find("bookreview", &b, "where bookreview LIKE '%"+keyword+"%'")
_ = db.Find("bookreview", &b, "where bookreview LIKE '%"+keyword+"%'")
return
}
func getRandomBookReview() (b book) {
db.Pick("bookreview", &b)
_ = db.Pick("bookreview", &b)
return
}

View File

@@ -0,0 +1,122 @@
// Package cangtoushi 藏头诗
package cangtoushi
import (
"fmt"
"io"
"net/http"
"net/http/cookiejar"
"net/url"
"strings"
control "github.com/FloatTech/zbputils/control"
"github.com/antchfx/htmlquery"
log "github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
)
const (
loginURL = "https://www.shicimingju.com/cangtoushi/"
searchURL = "https://www.shicimingju.com/cangtoushi/index.html"
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
referer = "https://www.shicimingju.com/cangtoushi/index.html"
prio = 20
)
var (
gCurCookieJar *cookiejar.Jar
csrf string
)
func init() {
engine := control.Register("cangtoushi", &control.Options{
DisableOnDefault: false,
Help: "藏头诗\n" +
"- 藏头诗[xxx]\n- 藏尾诗[xxx]",
})
engine.OnRegex("藏头诗([\u4E00-\u9FA5]{3,10})").SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
kw := ctx.State["regex_matched"].([]string)[1]
login()
data, err := search(kw, "7", "0")
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
text := dealHTML(helper.BytesToString(data))
ctx.SendChain(message.Text(text))
})
engine.OnRegex("藏尾诗([\u4E00-\u9FA5]{3,10})").SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
kw := ctx.State["regex_matched"].([]string)[1]
login()
data, err := search(kw, "7", "2")
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
text := dealHTML(helper.BytesToString(data))
ctx.SendChain(message.Text(text))
})
}
func login() {
gCurCookieJar, _ = cookiejar.New(nil)
client := &http.Client{
Jar: gCurCookieJar,
}
request, err := http.NewRequest("GET", loginURL, nil)
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
request.Header.Add("User-Agent", ua)
response, err := client.Do(request)
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
data, err := io.ReadAll(response.Body)
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
response.Body.Close()
doc, err := htmlquery.Parse(strings.NewReader(helper.BytesToString(data)))
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
csrf = htmlquery.SelectAttr(htmlquery.FindOne(doc, "//input[@name='_csrf']"), "value")
}
func search(kw, zishu, position string) (data []byte, err error) {
postStr := fmt.Sprintf("_csrf=%s&kw=%s&zishu=%s&position=%s", url.QueryEscape(csrf), url.QueryEscape(kw), zishu, position)
log.Println("postStr:", postStr)
client := &http.Client{
Jar: gCurCookieJar,
}
request, err := http.NewRequest("POST", searchURL, strings.NewReader(postStr))
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
request.Header.Add("Referer", referer)
request.Header.Add("User-Agent", ua)
request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
response, err := client.Do(request)
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
data, err = io.ReadAll(response.Body)
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
response.Body.Close()
return
}
func dealHTML(data string) (text string) {
doc, err := htmlquery.Parse(strings.NewReader(data))
if err != nil {
log.Errorln("[cangtoushi]:", err)
}
text = htmlquery.InnerText(htmlquery.FindOne(doc, "//div[@class='card']/div[@class='card']"))
text = strings.ReplaceAll(text, " ", "")
text = strings.Replace(text, "\n", "", 1)
return text
}

View File

@@ -6,23 +6,31 @@ import (
"strconv"
"time"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
var poke = rate.NewManager(time.Minute*5, 8) // 戳一戳
const (
dbpath = "data/Chat/"
dbfile = dbpath + "kimoi.json"
prio = 10
)
var engine = control.Register("chat", &control.Options{
DisableOnDefault: false,
Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]",
})
var (
poke = rate.NewManager(time.Minute*5, 8) // 戳一戳
engine = control.Register("chat", &control.Options{
DisableOnDefault: false,
Help: "chat\n- [BOT名字]\n- [戳一戳BOT]\n- 空调开\n- 空调关\n- 群温度\n- 设置温度[正整数]\n- mua|啾咪|摸|上你|傻|裸|贴|老婆|抱|亲|一下|咬|操|123|进去|调教|搓|让|捏|挤|略|呐|原味|胖次|内裤|内衣|衣服|ghs|批|憨批|kkp|咕|骚|喜欢|suki|好き|看|不能|砸了|透|口我|草我|自慰|onani|オナニー|炸了|色图|涩图|告白|对不起|回来|吻|软|壁咚|掰开|女友|是|喵|嗷呜|叫|拜|佬|awsl|臭|香|腿|张开|脚|脸|头发|手|pr|舔|小穴|腰|诶嘿嘿|可爱|扭蛋|鼻|眼|色气|推|床|举|手冲|饿|变|敲|爬|怕|冲|射|不穿|迫害|猫粮|揪尾巴|薄荷|早|晚安|揉|榨|掐|胸|奶子|欧派|嫩|蹭|牵手|握手|拍照|w|睡不着|欧尼酱|哥|爱你|过来|自闭|打不过|么么哒|很懂|膝枕|累了|安慰|洗澡|一起睡觉|一起|多大|姐姐|糖|嗦|牛子|🐂子|🐮子|嫌弃|紧|baka|笨蛋|插|插进来|屁股|翘|翘起来|抬|抬起|爸|傲娇|rua|咕噜咕噜|咕噜|上床|做爱|吃掉|吃|揪|种草莓|种草|掀|妹|病娇|嘻",
})
kimomap = make(kimo, 256)
chatList = make([]string, 0, 256)
)
func init() { // 插件主体
// 被喊名字
engine.OnFullMatch("", zero.OnlyToMe).SetBlock(true).FirstPriority().
engine.OnFullMatch("", zero.OnlyToMe).SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
var nickname = zero.BotConfig.NickName[0]
time.Sleep(time.Second * 1)
@@ -36,7 +44,7 @@ func init() { // 插件主体
))
})
// 戳一戳
engine.On("notice/notify/poke", zero.OnlyToMe).SetBlock(false).FirstPriority().
engine.On("notice/notify/poke", zero.OnlyToMe).SetBlock(false).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
var nickname = zero.BotConfig.NickName[0]
switch {
@@ -55,18 +63,18 @@ func init() { // 插件主体
// 群空调
var AirConditTemp = map[int64]int{}
var AirConditSwitch = map[int64]bool{}
engine.OnFullMatch("空调开").SetBlock(true).FirstPriority().
engine.OnFullMatch("空调开").SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
AirConditSwitch[ctx.Event.GroupID] = true
ctx.SendChain(message.Text("❄️哔~"))
})
engine.OnFullMatch("空调关").SetBlock(true).FirstPriority().
engine.OnFullMatch("空调关").SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
AirConditSwitch[ctx.Event.GroupID] = false
delete(AirConditTemp, ctx.Event.GroupID)
ctx.SendChain(message.Text("💤哔~"))
})
engine.OnRegex(`设置温度(\d+)`).SetBlock(true).FirstPriority().
engine.OnRegex(`设置温度(\d+)`).SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
if _, exist := AirConditTemp[ctx.Event.GroupID]; !exist {
AirConditTemp[ctx.Event.GroupID] = 26
@@ -85,7 +93,7 @@ func init() { // 插件主体
))
}
})
engine.OnFullMatch(`群温度`).SetBlock(true).FirstPriority().
engine.OnFullMatch(`群温度`).SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
if _, exist := AirConditTemp[ctx.Event.GroupID]; !exist {
AirConditTemp[ctx.Event.GroupID] = 26
@@ -102,4 +110,13 @@ func init() { // 插件主体
))
}
})
initChatList(func() {
engine.OnFullMatchGroup(chatList, zero.OnlyToMe).SetBlock(true).SetPriority(prio).Handle(
func(ctx *zero.Ctx) {
key := ctx.MessageString()
val := *kimomap[key]
text := val[rand.Intn(len(val))]
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(text))
})
})
}

33
plugin_chat/data.go Normal file
View File

@@ -0,0 +1,33 @@
package chat
import (
"encoding/json"
"os"
"github.com/sirupsen/logrus"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
)
type kimo = map[string]*[]string
func initChatList(postinit func()) {
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(dbpath, 0755)
data, err := file.GetLazyData(dbfile, true, true)
if err != nil {
panic(err)
}
err = json.Unmarshal(data, &kimomap)
if err != nil {
panic(err)
}
for k := range kimomap {
chatList = append(chatList, k)
}
logrus.Infoln("[chat]加载", len(chatList), "条kimoi")
postinit()
}()
}

View File

@@ -6,10 +6,9 @@ import (
"strconv"
"strings"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
func init() {

View File

@@ -0,0 +1,42 @@
// Package chouxianghua 抽象话转化
package chouxianghua
import (
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
)
const prio = 10
func init() {
control.Register("chouxianghua", &control.Options{
DisableOnDefault: false,
Help: "抽象话\n- 抽象翻译xxx",
}).OnRegex("^抽象翻译((\\s|[\\r\\n]|[\\p{Han}\\p{P}A-Za-z0-9])+)$").SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
r := cx(ctx.State["regex_matched"].([]string)[1])
ctx.SendChain(message.Text(r))
})
}
func cx(s string) (r string) {
h := []rune(s)
for i := 0; i < len(h); i++ {
if i < len(h)-1 {
e := getEmojiByPronun(getPronunByDWord(h[i], h[i+1]))
if e != "" {
r += e
i++
continue
}
}
e := getEmojiByPronun(getPinyinByWord(string(h[i])))
if e != "" {
r += e
continue
}
r += string(h[i])
}
return
}

View File

@@ -0,0 +1,37 @@
package chouxianghua
import (
"os"
log "github.com/sirupsen/logrus"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
)
const (
dbpath = "data/ChouXiangHua/"
dbfile = dbpath + "cxh.db"
)
var db = &sql.Sqlite{DBPath: dbfile}
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
// os.RemoveAll(dbpath)
_ = os.MkdirAll(dbpath, 0755)
_, _ = file.GetLazyData(dbfile, false, true)
err := db.Create("pinyin", &pinyin{})
if err != nil {
panic(err)
}
n, err := db.Count("pinyin")
if err != nil {
panic(err)
}
log.Printf("[chouxianghua]读取%d条拼音", n)
}()
}

View File

@@ -0,0 +1,26 @@
package chouxianghua
type pinyin struct {
Word string `db:"word"`
Pronun string `db:"pronunciation"`
}
type emoji struct {
Pronun string `db:"pronunciation"`
Emoji string `db:"emoji"`
}
func getPinyinByWord(word string) string {
var p pinyin
_ = db.Find("pinyin", &p, "where word = '"+word+"'")
return p.Pronun
}
func getPronunByDWord(w0, w1 rune) string {
return getPinyinByWord(string(w0)) + getPinyinByWord(string(w1))
}
func getEmojiByPronun(pronun string) string {
var e emoji
_ = db.Find("emoji", &e, "where pronunciation = '"+pronun+"'")
return e.Emoji
}

View File

@@ -1,4 +1,5 @@
package plugin_coser
// Package coser images
package coser
import (
"time"
@@ -11,14 +12,14 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/web"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/web"
)
var (
engine = control.Register("coser", &control.Options{
DisableOnDefault: false,
Help: "三次元小姐姐\n- coser\n",
Help: "三次元小姐姐\n- coser",
})
prio = 20
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
@@ -42,16 +43,16 @@ func init() {
text := gjson.Get(helper.BytesToString(data), "data.Title").String()
m = append(m,
message.CustomNode(
zero.BotConfig.NickName[0],
ctx.Event.SelfID,
ctx.Event.Sender.NickName,
ctx.Event.UserID,
text,
))
gjson.Get(helper.BytesToString(data), "data.data").ForEach(func(_, value gjson.Result) bool {
imgcq := `[CQ:image,file=` + value.String() + `]`
m = append(m,
message.CustomNode(
zero.BotConfig.NickName[0],
ctx.Event.SelfID,
ctx.Event.Sender.NickName,
ctx.Event.UserID,
imgcq),
)
return true

49
plugin_cpstory/cpstory.go Normal file
View File

@@ -0,0 +1,49 @@
// Package cpstory cp短打
package cpstory
import (
"strings"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/math"
)
const (
prio = 20
)
func init() {
engine := control.Register("cpstory", &control.Options{
DisableOnDefault: false,
Help: "cp短打\n- 组cp[@xxx][@xxx]\n- 组cp大老师 雪乃",
})
engine.OnRegex("^组cp.*?(\\d+).*?(\\d+)", zero.OnlyGroup).SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
cs := getRandomCpStory()
gong := ctxext.CardOrNickName(ctx, math.Str2Int64(ctx.State["regex_matched"].([]string)[1]))
shou := ctxext.CardOrNickName(ctx, math.Str2Int64(ctx.State["regex_matched"].([]string)[2]))
text := strings.ReplaceAll(cs.Story, "<攻>", gong)
text = strings.ReplaceAll(text, "<受>", shou)
text = strings.ReplaceAll(text, cs.Gong, gong)
text = strings.ReplaceAll(text, cs.Shou, gong)
ctx.SendChain(message.Text(text))
})
engine.OnPrefix("组cp").SetBlock(true).SetPriority(prio + 1).Handle(func(ctx *zero.Ctx) {
cs := getRandomCpStory()
params := strings.Split(ctx.State["args"].(string), " ")
if len(params) < 2 {
ctx.SendChain(message.Text(ctx.Event.MessageID), message.Text("请用空格分开两个人名"))
} else {
gong := params[0]
shou := params[1]
text := strings.ReplaceAll(cs.Story, "<攻>", gong)
text = strings.ReplaceAll(text, "<受>", shou)
text = strings.ReplaceAll(text, cs.Gong, gong)
text = strings.ReplaceAll(text, cs.Shou, gong)
ctx.SendChain(message.Text(text))
}
})
}

37
plugin_cpstory/data.go Normal file
View File

@@ -0,0 +1,37 @@
package cpstory
import (
"os"
log "github.com/sirupsen/logrus"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
)
const (
dbpath = "data/CpStory/"
dbfile = dbpath + "cp.db"
)
var db = &sql.Sqlite{DBPath: dbfile}
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
// os.RemoveAll(dbpath)
_ = os.MkdirAll(dbpath, 0755)
_, _ = file.GetLazyData(dbfile, false, true)
err := db.Create("cp_story", &cpstory{})
if err != nil {
panic(err)
}
n, err := db.Count("cp_story")
if err != nil {
panic(err)
}
log.Printf("[cpstory]读取%d条故事", n)
}()
}

13
plugin_cpstory/model.go Normal file
View File

@@ -0,0 +1,13 @@
package cpstory
type cpstory struct {
ID int64 `db:"id"`
Gong string `db:"gong"`
Shou string `db:"shou"`
Story string `db:"story"`
}
func getRandomCpStory() (cs cpstory) {
_ = db.Pick("cp_story", &cs)
return
}

52
plugin_curse/curse.go Normal file
View File

@@ -0,0 +1,52 @@
// Package curse 骂人插件(求骂,自卫)
package curse
import (
"time"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/process"
)
const (
prio = 10
minLevel = "min"
maxLevel = "max"
)
var (
engine = control.Register("curse", &control.Options{
DisableOnDefault: false,
Help: "骂人(求骂,自卫)\n- 骂我\n- 大力骂我\n- @bot 他妈|公交车|你妈|操|屎|去死|快死|日|逼|尼玛|艾滋|癌症|有病|戴套|啊对对对|烦你|你爹|屮|tui|cnm",
})
limit = rate.NewManager(time.Minute, 30)
)
func init() {
engine.OnFullMatch("骂我").SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
if !limit.Load(ctx.Event.GroupID).Acquire() {
return
}
process.SleepAbout1sTo2s()
text := getRandomCurseByLevel(minLevel).Text
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(text))
})
engine.OnFullMatch("大力骂我").SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
if !limit.Load(ctx.Event.GroupID).Acquire() {
return
}
process.SleepAbout1sTo2s()
text := getRandomCurseByLevel(maxLevel).Text
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(text))
})
engine.OnKeywordGroup([]string{"他妈", "公交车", "你妈", "操", "屎", "去死", "快死", "日", "逼", "尼玛", "艾滋", "癌症", "有病", "戴套", "啊对对对", "烦你", "你爹", "屮", "tui", "cnm"}, zero.OnlyToMe).SetBlock(true).SetPriority(prio).
Handle(func(ctx *zero.Ctx) {
text := getRandomCurseByLevel(maxLevel).Text
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(text))
})
}

38
plugin_curse/data.go Normal file
View File

@@ -0,0 +1,38 @@
package curse
import (
"os"
"github.com/sirupsen/logrus"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
)
const (
dbpath = "data/Curse/"
dbfile = dbpath + "curse.db"
)
var (
db = &sql.Sqlite{DBPath: dbfile}
)
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(dbpath, 0755)
_, err := file.GetLazyData(dbfile, false, true)
if err != nil {
panic(err)
}
err = db.Create("curse", &curse{})
if err != nil {
panic(err)
}
c, _ := db.Count("curse")
logrus.Infoln("[curse]加载", c, "条骂人语录")
}()
}

12
plugin_curse/model.go Normal file
View File

@@ -0,0 +1,12 @@
package curse
type curse struct {
ID uint32 `db:"id"`
Text string `db:"text"`
Level string `db:"level"`
}
func getRandomCurseByLevel(level string) (c curse) {
_ = db.Find("curse", &c, "where level = '"+level+"' ORDER BY RANDOM() limit 1")
return
}

57
plugin_danbooru/main.go Normal file
View File

@@ -0,0 +1,57 @@
// Package deepdanbooru 二次元图片标签识别
package deepdanbooru
import (
"crypto/md5"
"encoding/hex"
"os"
"github.com/FloatTech/AnimeAPI/danbooru"
"github.com/FloatTech/AnimeAPI/picture"
"github.com/FloatTech/AnimeAPI/saucenao"
"github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/file"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
)
const cachefile = "data/danbooru/"
func init() { // 插件主体
_ = os.RemoveAll(cachefile)
err := os.MkdirAll(cachefile, 0755)
if err != nil {
panic(err)
}
engine := control.Register("danbooru", &control.Options{
DisableOnDefault: false,
Help: "二次元图片标签识别\n" +
"- 鉴赏图片[图片]",
})
// 上传一张图进行评价
engine.OnKeywordGroup([]string{"鉴赏图片"}, zero.OnlyGroup, picture.CmdMatch, picture.MustGiven).SetBlock(true).SetPriority(23).
Handle(func(ctx *zero.Ctx) {
ctx.SendChain(message.Text("少女祈祷中..."))
for _, url := range ctx.State["image_url"].([]string) {
name := ""
r, err := saucenao.SauceNAO(url)
if err != nil {
name = "未知图片"
} else {
name = r.Title
}
t, err := danbooru.TagURL(name, url)
if err != nil {
ctx.SendChain(message.Text("ERROR:", err))
return
}
digest := md5.Sum(helper.StringToBytes(url))
f := cachefile + hex.EncodeToString(digest[:])
if file.IsNotExist(f) {
_ = t.Canvas.SavePNG(f)
}
ctx.SendChain(message.Image("file:///" + file.BOTPATH + "/" + f))
}
})
}

View File

@@ -8,7 +8,8 @@ import (
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/ZeroBot-Plugin/plugin_diana/data"
)

View File

@@ -9,9 +9,9 @@ import (
log "github.com/sirupsen/logrus"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
)
const (
@@ -21,8 +21,8 @@ const (
var db = sql.Sqlite{DBPath: dbfile}
type Text struct {
Id int64 `db:"id"`
type text struct {
ID int64 `db:"id"`
Data string `db:"data"`
}
@@ -35,7 +35,7 @@ func init() {
}
err = LoadText()
if err == nil {
err = db.Create("text", &Text{})
err = db.Create("text", &text{})
if err != nil {
panic(err)
}
@@ -57,12 +57,12 @@ func LoadText() error {
func AddText(txt string) error {
s := md5.Sum(helper.StringToBytes(txt))
i := binary.LittleEndian.Uint64(s[:8])
return db.Insert("text", &Text{Id: int64(i), Data: txt})
return db.Insert("text", &text{ID: int64(i), Data: txt})
}
// RandText 随机小作文
func RandText() string {
var t Text
var t text
err := db.Pick("text", &t)
if err != nil {
return err.Error()
@@ -72,7 +72,7 @@ func RandText() string {
// HentaiText 发大病
func HentaiText() string {
var t Text
var t text
err := db.Find("text", &t, "where id = -3802576048116006195")
if err != nil {
return err.Error()

View File

@@ -3,48 +3,68 @@ package fortune
import (
"archive/zip"
"bytes"
"encoding/base64"
"crypto/md5"
"encoding/hex"
"encoding/json"
"image/jpeg"
"io"
"io/ioutil"
"image"
"math/rand"
"os"
"strconv"
"sync"
"time"
"github.com/fogleman/gg"
"github.com/fogleman/gg" // 注册了 jpg png gif
"github.com/sirupsen/logrus"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
"github.com/FloatTech/ZeroBot-Plugin/utils/math"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/math"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/txt2img"
)
var (
// 底图缓存位置
base = "data/fortune/"
// 素材下载网站
site = "https://pan.dihe.moe/fortune/"
images = "data/Fortune/"
// 基础文件位置
omikujson = "data/Fortune/text.json"
// 字体文件位置
font = "data/Font/sakura.ttf"
// 生成图缓存位置
cache = images + "cache/"
// 底图类型列表:车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌
// 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师
table = [...]string{"车万", "DC4", "爱因斯坦", "星空列车", "樱云之恋", "富婆妹", "李清歌", "公主连结", "原神", "明日方舟", "碧蓝航线", "碧蓝幻想", "战双", "阴阳师"}
// 映射底图与 index
index = make(map[string]uint8)
// 下载锁
dlmu sync.Mutex
// 签文
omikujis []map[string]string
)
func init() {
for i, s := range table {
index[s] = uint8(i)
}
err := os.MkdirAll(base, 0755)
err := os.MkdirAll(images, 0755)
if err != nil {
panic(err)
}
err = os.MkdirAll(cache, 0755)
if err != nil {
panic(err)
}
process.SleepAbout1sTo2s()
data, err := file.GetLazyData(omikujson, true, false)
if err != nil {
panic(err)
}
err = json.Unmarshal(data, &omikujis)
if err != nil {
panic(err)
}
_, err = file.GetLazyData(font, false, true)
if err != nil {
panic(err)
}
@@ -66,47 +86,21 @@ func init() {
if ok {
c, ok := control.Lookup("fortune")
if ok {
c.SetData(gid, int64(i)&0xff)
err = c.SetData(gid, int64(i)&0xff)
if err != nil {
ctx.SendChain(message.Text("设置失败:", err))
return
}
ctx.SendChain(message.Text("设置成功~"))
return
}
ctx.SendChain(message.Text("设置失败!"))
ctx.SendChain(message.Text("设置失败: 找不到插件"))
return
}
ctx.SendChain(message.Text("没有这个底图哦~"))
})
en.OnFullMatchGroup([]string{"运势", "抽签"}).SetBlock(true).SecondPriority().
Handle(func(ctx *zero.Ctx) {
// 检查签文文件是否存在
mikuji := base + "运势签文.json"
if file.IsNotExist(mikuji) {
dlmu.Lock()
if file.IsNotExist(mikuji) {
ctx.SendChain(message.Text("正在下载签文文件,请稍后..."))
err := file.DownloadTo(site+"运势签文.json", mikuji, false)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载签文文件完毕"))
}
dlmu.Unlock()
}
// 检查字体文件是否存在
ttf := base + "sakura.ttf"
if file.IsNotExist(ttf) {
dlmu.Lock()
if file.IsNotExist(ttf) {
ctx.SendChain(message.Text("正在下载字体文件,请稍后..."))
err := file.DownloadTo(site+"sakura.ttf", ttf, false)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载字体文件完毕"))
}
dlmu.Unlock()
}
// 获取该群背景类型,默认车万
kind := "车万"
gid := ctx.Event.GroupID
@@ -123,125 +117,85 @@ func init() {
}
}
// 检查背景图片是否存在
folder := base + kind
if file.IsNotExist(folder) {
dlmu.Lock()
if file.IsNotExist(folder) {
ctx.SendChain(message.Text("正在下载背景图片,请稍后..."))
zipfile := kind + ".zip"
zipcache := base + zipfile
err := file.DownloadTo(site+zipfile, zipcache, false)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载背景图片完毕"))
err = unpack(zipcache, folder+"/")
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("解压背景图片完毕"))
// 释放空间
os.Remove(zipcache)
}
dlmu.Unlock()
zipfile := images + kind + ".zip"
_, err = file.GetLazyData(zipfile, false, false)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
// 生成种子
t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64)
seed := ctx.Event.UserID + t
// 随机获取背景
background, err := randimage(folder+"/", seed)
background, index, err := randimage(zipfile, seed)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
// 随机获取签文
title, text, err := randtext(mikuji, seed)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
// 绘制背景
d, err := draw(background, title, text)
title, text := randtext(seed)
digest := md5.Sum(helper.StringToBytes(zipfile + strconv.Itoa(index) + title + text))
cachefile := cache + hex.EncodeToString(digest[:])
var data []byte
switch file.IsExist(cachefile) {
case true:
data, err = os.ReadFile(cachefile)
if err == nil {
break
}
_ = os.Remove(cachefile)
fallthrough
case false:
// 绘制背景
data, err = draw(background, title, text)
}
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
_ = os.WriteFile(cachefile, data, 0644)
// 发送图片
ctx.SendChain(message.Image("base64://" + helper.BytesToString(d)))
ctx.SendChain(message.Image("base64://" + helper.BytesToString(data)))
})
}
// @function unpack 解压资源包
// @param tgt 压缩文件位置
// @param dest 解压位置
// @return 错误信息
func unpack(tgt, dest string) error {
// 路径目录不存在则创建目录
if file.IsNotExist(dest) {
if err := os.MkdirAll(dest, 0755); err != nil {
panic(err)
}
}
reader, err := zip.OpenReader(tgt)
if err != nil {
return err
}
defer reader.Close()
// 遍历解压到文件
for _, file := range reader.File {
// 打开解压文件
rc, err := file.Open()
if err != nil {
return err
}
// 打开目标文件
w, err := os.OpenFile(dest+file.Name, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil {
rc.Close()
return err
}
// 复制到文件
_, err = io.Copy(w, rc)
rc.Close()
w.Close()
if err != nil {
return err
}
}
return nil
}
// @function randimage 随机选取文件夹下的文件
// @param path 文件夹路径
// @function randimage 随机选取zip内的文件
// @param path zip路径
// @param seed 随机数种子
// @return 文件路径 & 错误信息
func randimage(path string, seed int64) (string, error) {
rd, err := ioutil.ReadDir(path)
func randimage(path string, seed int64) (im image.Image, index int, err error) {
reader, err := zip.OpenReader(path)
if err != nil {
return "", err
return
}
defer reader.Close()
rand.Seed(seed)
return path + rd[rand.Intn(len(rd))].Name(), nil
index = rand.Intn(len(reader.File))
file := reader.File[index]
f, err := file.Open()
if err != nil {
return
}
defer f.Close()
im, _, err = image.Decode(f)
return
}
// @function randtext 随机选取签文
// @param file 文件路径
// @param seed 随机数种子
// @return 签名 & 签文 & 错误信息
func randtext(file string, seed int64) (string, string, error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return "", "", err
}
temp := []map[string]string{}
if err := json.Unmarshal(data, &temp); err != nil {
return "", "", err
}
func randtext(seed int64) (string, string) {
rand.Seed(seed)
r := rand.Intn(len(temp))
return temp[r]["title"], temp[r]["content"], nil
r := rand.Intn(len(omikujis))
return omikujis[r]["title"], omikujis[r]["content"]
}
// @function draw 绘制运势图
@@ -250,24 +204,19 @@ func randtext(file string, seed int64) (string, string, error) {
// @param title 签名
// @param text 签文
// @return 错误信息
func draw(background, title, text string) ([]byte, error) {
// 加载背景
back, err := gg.LoadImage(background)
if err != nil {
return nil, err
}
func draw(back image.Image, title, text string) ([]byte, error) {
canvas := gg.NewContext(back.Bounds().Size().Y, back.Bounds().Size().X)
canvas.DrawImage(back, 0, 0)
// 写标题
canvas.SetRGB(1, 1, 1)
if err := canvas.LoadFontFace(base+"sakura.ttf", 45); err != nil {
if err := canvas.LoadFontFace(font, 45); err != nil {
return nil, err
}
sw, _ := canvas.MeasureString(title)
canvas.DrawString(title, 140-sw/2, 112)
// 写正文
canvas.SetRGB(0, 0, 0)
if err := canvas.LoadFontFace(base+"sakura.ttf", 23); err != nil {
if err := canvas.LoadFontFace(font, 23); err != nil {
return nil, err
}
tw, th := canvas.MeasureString("测")
@@ -296,17 +245,7 @@ func draw(background, title, text string) ([]byte, error) {
}
}
}
// 转成 base64
buffer := new(bytes.Buffer)
encoder := base64.NewEncoder(base64.StdEncoding, buffer)
var opt jpeg.Options
opt.Quality = 70
err = jpeg.Encode(encoder, canvas.Image(), &opt)
if err != nil {
return nil, err
}
encoder.Close()
return buffer.Bytes(), nil
return txt2img.TxtCanvas{Canvas: canvas}.ToBase64()
}
func offest(total, now int, distance float64) float64 {

38
plugin_funny/data.go Normal file
View File

@@ -0,0 +1,38 @@
package funny
import (
"os"
"github.com/sirupsen/logrus"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/process"
)
type joke struct {
ID uint32 `db:"id"`
Text string `db:"text"`
}
const (
dbpath = "data/Funny/"
dbfile = dbpath + "jokes.db"
)
// 加载数据库
func init() {
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(dbpath, 0755)
_, err := file.GetLazyData(dbfile, false, true)
if err != nil {
panic(err)
}
err = db.Create("jokes", &joke{})
if err != nil {
panic(err)
}
c, _ := db.Count("jokes")
logrus.Infoln("[funny]加载", c, "个笑话")
}()
}

33
plugin_funny/data_test.go Normal file
View File

@@ -0,0 +1,33 @@
package funny
import (
"crypto/md5"
"encoding/binary"
"os"
"strings"
"testing"
"github.com/FloatTech/zbputils/sql"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
)
func TestFillData(t *testing.T) {
data, err := os.ReadFile("laugh.txt")
if err != nil {
t.Fatal(err)
}
db := &sql.Sqlite{DBPath: "jokes.db"}
err = db.Create("jokes", &joke{})
if err != nil {
t.Fatal(err)
}
jokes := strings.Split(helper.BytesToString(data), "\n")
for _, j := range jokes {
s := md5.Sum(helper.StringToBytes(j))
db.Insert("jokes", &joke{ID: binary.LittleEndian.Uint32(s[:4]), Text: j})
}
err = db.Close()
if err != nil {
t.Fatal(err)
}
}

42
plugin_funny/laugh.go Normal file
View File

@@ -0,0 +1,42 @@
// Package funny 冷笑话
package funny
import (
"strings"
"time"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/sql"
)
var (
engine = control.Register("funny", &control.Options{
DisableOnDefault: false,
Help: "讲个笑话\n" +
"- 讲个笑话[@xxx]|讲个笑话[qq号]",
})
limit = rate.NewManager(time.Minute, 20)
db = &sql.Sqlite{DBPath: dbfile}
)
func init() {
engine.OnPrefix("讲个笑话").SetBlock(true).FirstPriority().Handle(func(ctx *zero.Ctx) {
if !limit.Load(ctx.Event.GroupID).Acquire() {
return
}
// 获取名字
name := ctxext.NickName(ctx)
var j joke
err := db.Pick("jokes", &j)
if err != nil {
ctx.SendChain(message.Text("ERROR:", err))
return
}
ctx.SendChain(message.Text(strings.ReplaceAll(j.Text, "%name", name)))
})
}

31
plugin_gif/README.md Normal file
View File

@@ -0,0 +1,31 @@
# ZeroBot-Plugin-Gif
[ZeroBot QQ机器人](https://github.com/wdvxdr1123/ZeroBot)插件可以制作各种沙雕gif图
> 素材包地址: https://codechina.csdn.net/u011570312/imagematerials
## 触发方式
1. [指令词]+[qq号] 如爬123456
2. [指令词]+[图片] 如:爬[图片]
3. [指令词]+[艾特] 如:爬@小H
## 指令列表
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x]
- [x] 灰度
- [x] 上翻
- [x] 下翻
- [x] 左翻
- [x] 右翻
- [x] 反色
- [x] 倒放
- [x] 浮雕
- [x] 打码
- [x] 负片

54
plugin_gif/context.go Normal file
View File

@@ -0,0 +1,54 @@
package gif
import (
"os"
"strconv"
"github.com/FloatTech/zbputils/file"
"github.com/sirupsen/logrus"
)
type context struct {
usrdir string
headimgsdir []string
}
func dlchan(name string, c *chan *string) {
target := datapath + `materials/` + name
if file.IsNotExist(target) {
_ = file.DownloadTo(`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/`+name, target, true)
} else {
logrus.Debugln("[gif] dl", name, "exists")
}
*c <- &target
}
func dlblock(name string) string {
target := datapath + `materials/` + name
if file.IsNotExist(target) {
_ = file.DownloadTo(`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/`+name, target, true)
} else {
logrus.Debugln("[gif] dl", name, "exists")
}
return target
}
func dlrange(prefix string, end int) *[]chan *string {
c := make([]chan *string, end)
for i := range c {
c[i] = make(chan *string)
go dlchan(prefix+"/"+strconv.Itoa(i)+".png", &c[i])
}
return &c
}
// 新的上下文
func newContext(user int64) *context {
c := new(context)
c.usrdir = datapath + "users/" + strconv.FormatInt(user, 10) + `/`
_ = os.MkdirAll(c.usrdir, 0755)
c.headimgsdir = make([]string, 2)
c.headimgsdir[0] = c.usrdir + "0.gif"
c.headimgsdir[1] = c.usrdir + "1.gif"
return c
}

160
plugin_gif/gif.go Normal file
View File

@@ -0,0 +1,160 @@
package gif
import (
"image"
"github.com/FloatTech/zbputils/img"
)
// 摸
func (cc *context) mo() string {
name := cc.usrdir + "摸.gif"
c := dlrange("mo", 5)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
mo := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 80, 80, 32, 32).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 70, 90, 42, 22).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 75, 85, 37, 27).Im,
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottom(tou, 85, 75, 27, 37).Im,
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottom(tou, 90, 70, 22, 42).Im,
}
_ = img.SaveGif(img.MergeGif(1, mo), name)
return "file:///" + name
}
// 搓
func (cc *context) cuo() string {
name := cc.usrdir + "搓.gif"
c := dlrange("cuo", 5)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 110, 110).Circle(0).Im
m1 := img.Rotate(tou, 72, 0, 0)
m2 := img.Rotate(tou, 144, 0, 0)
m3 := img.Rotate(tou, 216, 0, 0)
m4 := img.Rotate(tou, 288, 0, 0)
cuo := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottomC(tou, 0, 0, 75, 130).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottomC(m1.Im, 0, 0, 75, 130).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottomC(m2.Im, 0, 0, 75, 130).Im,
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottomC(m3.Im, 0, 0, 75, 130).Im,
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottomC(m4.Im, 0, 0, 75, 130).Im,
}
_ = img.SaveGif(img.MergeGif(5, cuo), name)
return "file:///" + name
}
// 敲
func (cc *context) qiao() string {
name := cc.usrdir + "敲.gif"
c := dlrange("qiao", 2)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 40, 40).Circle(0).Im
qiao := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 40, 33, 57, 52).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 38, 36, 58, 50).Im,
}
_ = img.SaveGif(img.MergeGif(1, qiao), name)
return "file:///" + name
}
// 吃
func (cc *context) chi() string {
name := cc.usrdir + "吃.gif"
c := dlrange("chi", 3)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 32, 32).Im
chi := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 0, 0, 1, 38).Im,
}
_ = img.SaveGif(img.MergeGif(1, chi), name)
return "file:///" + name
}
// 蹭
func (cc *context) ceng() string {
name := cc.usrdir + "蹭.gif"
c := dlrange("ceng", 6)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 100, 100).Circle(0).Im
tou2 := img.LoadFirstFrame(cc.headimgsdir[1], 100, 100).Circle(0).Im
ceng := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 75, 77, 40, 88).InsertUp(tou2, 77, 103, 102, 81).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 75, 77, 46, 100).InsertUp(img.Rotate(tou2, 10, 62, 127).Im, 0, 0, 92, 40).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertUp(tou, 75, 77, 67, 99).InsertUp(tou2, 76, 117, 90, 8).Im,
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertUp(tou, 75, 77, 52, 83).InsertUp(img.Rotate(tou2, -40, 94, 94).Im, 0, 0, 53, -20).Im,
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertUp(tou, 75, 77, 56, 110).InsertUp(img.Rotate(tou2, -66, 132, 80).Im, 0, 0, 78, 40).Im,
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertUp(tou, 75, 77, 62, 102).InsertUp(tou2, 71, 100, 110, 94).Im,
}
_ = img.SaveGif(img.MergeGif(8, ceng), name)
return "file:///" + name
}
// 啃
func (cc *context) ken() string {
name := cc.usrdir + "啃.gif"
c := dlrange("ken", 16)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 100, 100).Im
ken := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertBottom(tou, 90, 90, 105, 150).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertBottom(tou, 90, 83, 96, 172).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).InsertBottom(tou, 90, 90, 106, 148).Im,
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertBottom(tou, 88, 88, 97, 167).Im,
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertBottom(tou, 90, 85, 89, 179).Im,
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertBottom(tou, 90, 90, 106, 151).Im,
img.LoadFirstFrame(*<-(*c)[6], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[7], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[8], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[9], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[10], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[11], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[12], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[13], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[14], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[15], 0, 0).Im,
}
_ = img.SaveGif(img.MergeGif(7, ken), name)
return "file:///" + name
}
// 拍
func (cc *context) pai() string {
name := cc.usrdir + "拍.gif"
c := dlrange("pai", 2)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 30, 30).Circle(0).Im
pai := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 0, 0, 1, 47).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 0, 0, 1, 67).Im,
}
_ = img.SaveGif(img.MergeGif(1, pai), name)
return "file:///" + name
}
// 冲
func (cc *context) chong() string {
name := cc.usrdir + "冲.gif"
c := dlrange("xqe", 2)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
chong := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 30, 30, 15, 53).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 30, 30, 40, 53).Im,
}
_ = img.SaveGif(img.MergeGif(1, chong), name)
return "file:///" + name
}
// 丢
func (cc *context) diu() string {
name := cc.usrdir + "丢.gif"
c := dlrange("diu", 8)
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
diu := []*image.NRGBA{
img.LoadFirstFrame(*<-(*c)[0], 0, 0).InsertUp(tou, 32, 32, 108, 36).Im,
img.LoadFirstFrame(*<-(*c)[1], 0, 0).InsertUp(tou, 32, 32, 122, 36).Im,
img.LoadFirstFrame(*<-(*c)[2], 0, 0).Im,
img.LoadFirstFrame(*<-(*c)[3], 0, 0).InsertUp(tou, 123, 123, 19, 129).Im,
img.LoadFirstFrame(*<-(*c)[4], 0, 0).InsertUp(tou, 185, 185, -50, 200).InsertUp(tou, 33, 33, 289, 70).Im,
img.LoadFirstFrame(*<-(*c)[5], 0, 0).InsertUp(tou, 32, 32, 280, 73).Im,
img.LoadFirstFrame(*<-(*c)[6], 0, 0).InsertUp(tou, 35, 35, 259, 31).Im,
img.LoadFirstFrame(*<-(*c)[7], 0, 0).InsertUp(tou, 175, 175, -50, 220).Im,
}
_ = img.SaveGif(img.MergeGif(7, diu), name)
return "file:///" + name
}

19
plugin_gif/logo.go Normal file
View File

@@ -0,0 +1,19 @@
package gif
import (
"strconv"
"strings"
"github.com/FloatTech/zbputils/file"
)
func (c *context) prepareLogos(s ...string) {
for i, v := range s {
_, err := strconv.Atoi(v)
if err != nil {
_ = file.DownloadTo("https://gchat.qpic.cn/gchatpic_new//--"+strings.ToUpper(v)+"/0", c.usrdir+strconv.Itoa(i)+".gif", true)
} else {
_ = file.DownloadTo("http://q4.qlogo.cn/g?b=qq&nk="+v+"&s=640", c.usrdir+strconv.Itoa(i)+".gif", true)
}
}
}

69
plugin_gif/png.go Normal file
View File

@@ -0,0 +1,69 @@
package gif
import (
"image"
"math/rand"
"strconv"
"github.com/FloatTech/zbputils/img"
)
// 爬
func (cc *context) pa() string {
name := cc.usrdir + `爬.png`
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Circle(0).Im
// 随机爬图序号
rand := rand.Intn(60) + 1
dc := img.LoadFirstFrame(dlblock(`pa/`+strconv.Itoa(rand)+`.png`), 0, 0).
InsertBottom(tou, 100, 100, 0, 400).Im
_ = img.SavePng(dc, name)
return "file:///" + name
}
// 撕
func (cc *context) si() string {
name := cc.usrdir + `撕.png`
tou := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0).Im
im1 := img.Rotate(tou, 20, 380, 380)
im2 := img.Rotate(tou, -12, 380, 380)
dc := img.LoadFirstFrame(dlblock(`si/0.png`), 0, 0).
InsertBottom(im1.Im, im1.W, im1.H, -3, 370).
InsertBottom(im2.Im, im2.W, im2.H, 653, 310).Im
_ = img.SavePng(dc, name)
return "file:///" + name
}
// 简单
func (cc *context) other(value ...string) string {
name := cc.usrdir + value[0] + `.png`
// 加载图片
im := img.LoadFirstFrame(cc.headimgsdir[0], 0, 0)
var a *image.NRGBA
switch value[0] {
case "上翻", "下翻":
a = im.FlipV().Im
case "左翻", "右翻":
a = im.FlipH().Im
case "反色":
a = im.Invert().Im
case "灰度":
a = im.Grayscale().Im
case "负片":
a = im.Invert().Grayscale().Im
case "浮雕":
a = im.Convolve3x3().Im
case "打码":
a = im.Blur(10).Im
case "旋转":
r, _ := strconv.ParseFloat(value[1], 64)
a = img.Rotate(im.Im, r, 0, 0).Im
case "变形":
w, _ := strconv.Atoi(value[1])
h, _ := strconv.Atoi(value[2])
a = img.Size(im.Im, w, h).Im
}
_ = img.SavePng(a, name)
return "file:///" + name
}

63
plugin_gif/run.go Normal file
View File

@@ -0,0 +1,63 @@
// Package gif 制图
package gif
import (
"math/rand"
"os"
"strconv"
"strings"
"time"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
)
var (
cmds = []string{"搓", "冲", "摸", "拍", "丢", "吃", "敲", "啃", "蹭", "爬", "撕",
"灰度", "上翻", "下翻", "左翻", "右翻", "反色", "浮雕", "打码", "负片"}
botpath, _ = os.Getwd()
datapath = botpath + "/data/gif/"
)
func init() { // 插件主体
os.RemoveAll(datapath) // 清除缓存图片
rand.Seed(time.Now().UnixNano()) // 设置种子
control.Register("gif", &control.Options{
DisableOnDefault: false,
Help: "制图\n- " + strings.Join(cmds, "\n- "),
}).OnRegex(`^(` + strings.Join(cmds, "|") + `)\D*?(\[CQ:(image\,file=([0-9a-zA-Z]{32}).*|at.+?(\d{5,11}))\].*|(\d+))$`).
SetBlock(true).SetPriority(20).Handle(func(ctx *zero.Ctx) {
c := newContext(ctx.Event.UserID)
list := ctx.State["regex_matched"].([]string)
c.prepareLogos(list[4]+list[5]+list[6], strconv.FormatInt(ctx.Event.UserID, 10))
var picurl string
switch list[1] {
case "爬":
picurl = c.pa()
case "摸":
picurl = c.mo()
case "吃":
picurl = c.chi()
case "啃":
picurl = c.ken()
case "蹭":
picurl = c.ceng()
case "敲":
picurl = c.qiao()
case "搓":
picurl = c.cuo()
case "拍":
picurl = c.pai()
case "丢":
picurl = c.diu()
case "撕":
picurl = c.si()
case "冲":
picurl = c.chong()
default:
picurl = c.other(list[1]) // "灰度", "上翻", "下翻", "左翻", "右翻", "反色", "倒放", "浮雕", "打码", "负片"
}
ctx.SendChain(message.Image(picurl))
})
}

View File

@@ -9,11 +9,10 @@ import (
"net/url"
"strings"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/tidwall/gjson"
)
@@ -96,6 +95,7 @@ func init() { // 插件主体
}
// notnull 如果传入文本为空,则返回默认值
//nolint: unparam
func notnull(text, defstr string) string {
if text == "" {
return defstr

View File

@@ -12,13 +12,13 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
"github.com/FloatTech/ZeroBot-Plugin/utils/web"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/file"
"github.com/FloatTech/zbputils/web"
)
var (
cachedir = file.BOT_PATH + "/data/hs/"
cachedir = file.BOTPATH + "/data/hs/"
reqconf = [...]string{"GET", "https://hs.fbigame.com",
"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36"}
)

View File

@@ -8,10 +8,9 @@ import (
"net/http"
"time"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
type resultjson struct {
@@ -103,7 +102,7 @@ func soutuapi(keyword string) *resultjson {
}
// randintn 从json里的30条数据中随机获取一条返回
func randintn(len int) int {
func randintn(n int) int {
rand.Seed(time.Now().UnixNano())
return rand.Intn(len)
return rand.Intn(n)
}

View File

@@ -0,0 +1,78 @@
// Package juejuezi 绝绝子
package juejuezi
import (
"fmt"
"io"
"net/http"
"strings"
"time"
control "github.com/FloatTech/zbputils/control"
log "github.com/sirupsen/logrus"
"github.com/tidwall/gjson"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
)
const (
juejueziURL = "https://www.offjuan.com/api/juejuezi/text"
prio = 15
referer = "https://juejuezi.offjuan.com/"
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
)
var (
limit = rate.NewManager(time.Minute, 20)
)
func init() {
control.Register("juejuezi", &control.Options{
DisableOnDefault: false,
Help: "绝绝子生成器\n" +
"- 喝奶茶绝绝子|绝绝子吃饭",
}).OnRegex("[\u4E00-\u9FA5]{0,10}绝绝子[\u4E00-\u9FA5]{0,10}").SetBlock(true).SetPriority(prio).Handle(func(ctx *zero.Ctx) {
if !limit.Load(ctx.Event.GroupID).Acquire() {
return
}
toDealStr := []rune(strings.ReplaceAll(ctx.ExtractPlainText(), "绝绝子", ""))
switch len(toDealStr) {
case 0, 1:
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("不要只输入绝绝子"))
case 2:
data, err := juejuezi(string(toDealStr[0]), string(toDealStr[1]))
if err != nil {
ctx.SendChain(message.Text(err))
}
ctx.SendChain(message.Text(gjson.Get(helper.BytesToString(data), "text").String()))
default:
params := ctx.GetWordSlices(string(toDealStr)).Get("slices").Array()
data, err := juejuezi(params[0].String(), params[1].String())
if err != nil {
ctx.SendChain(message.Text(err))
}
ctx.SendChain(message.Text(gjson.Get(helper.BytesToString(data), "text").String()))
}
})
}
func juejuezi(verb, noun string) (data []byte, err error) {
juejueziStr := fmt.Sprintf("{\"verb\":\"%s\",\"noun\":\"%s\"}", verb, noun)
client := &http.Client{}
// 提交请求
request, err := http.NewRequest("POST", juejueziURL, strings.NewReader(juejueziStr))
if err != nil {
log.Errorln("[juejuezi]:", err)
}
request.Header.Add("Referer", referer)
request.Header.Add("User-Agent", ua)
response, err := client.Do(request)
if err != nil {
log.Errorln("[juejuezi]:", err)
}
data, err = io.ReadAll(response.Body)
response.Body.Close()
return
}

View File

@@ -11,8 +11,8 @@ import (
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/FloatTech/ZeroBot-Plugin/utils/math"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/math"
)
const (

View File

@@ -10,8 +10,8 @@ import (
"github.com/sirupsen/logrus"
"github.com/wdvxdr1123/ZeroBot/utils/helper"
"github.com/FloatTech/ZeroBot-Plugin/utils/math"
"github.com/FloatTech/ZeroBot-Plugin/utils/web"
"github.com/FloatTech/zbputils/math"
"github.com/FloatTech/zbputils/web"
)
// user hash file
@@ -33,7 +33,7 @@ func checkNewUser(qq, gid int64, ghun, hash string) (bool, string) {
// 600s 内验证成功
ok := math.Abs(int(time.Now().Unix()-st)) < 600
if ok {
_ = db.Insert("member", &Member{QQ: qq, Ghun: ghun})
_ = db.Insert("member", &member{QQ: qq, Ghun: ghun})
return true, ""
}
return false, "时间戳超时"

View File

@@ -1,11 +1,11 @@
package manager
type Welcome struct {
type welcome struct {
GrpID int64 `db:"gid"`
Msg string `db:"msg"`
}
type Member struct {
type member struct {
QQ int64 `db:"qq"`
// github username
Ghun string `db:"ghun"`

View File

@@ -4,6 +4,7 @@ package manager
import (
"fmt"
"math/rand"
"os"
"sort"
"strconv"
"strings"
@@ -14,11 +15,13 @@ import (
"github.com/wdvxdr1123/ZeroBot/extension/rate"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
control "github.com/FloatTech/zbputils/control"
"github.com/FloatTech/zbputils/ctxext"
"github.com/FloatTech/zbputils/math"
"github.com/FloatTech/zbputils/process"
"github.com/FloatTech/zbputils/sql"
"github.com/FloatTech/ZeroBot-Plugin/plugin_manager/timer"
"github.com/FloatTech/ZeroBot-Plugin/utils/math"
"github.com/FloatTech/ZeroBot-Plugin/utils/process"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
)
const (
@@ -65,21 +68,28 @@ var engine = control.Register("manager", &control.Options{
func init() { // 插件主体
go func() {
process.SleepAbout1sTo2s()
_ = os.MkdirAll(datapath, 0755)
clock = timer.NewClock(db)
db.Create("welcome", &Welcome{})
db.Create("member", &Member{})
err := db.Create("welcome", &welcome{})
if err != nil {
panic(err)
}
err = db.Create("member", &member{})
if err != nil {
panic(err)
}
}()
// 升为管理
engine.OnRegex(`^升为管理.*?(\d+)`, zero.OnlyGroup, zero.SuperUserPermission).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupAdmin(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq
true,
)
nickname := ctx.GetGroupMemberInfo( // 被升为管理的人的昵称
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq
false,
).Get("nickname").Str
ctx.SendChain(message.Text(nickname + " 升为了管理~"))
@@ -89,12 +99,12 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupAdmin(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq
false,
)
nickname := ctx.GetGroupMemberInfo( // 被取消管理的人的昵称
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq
false,
).Get("nickname").Str
ctx.SendChain(message.Text("残念~ " + nickname + " 暂时失去了管理员的资格"))
@@ -104,12 +114,12 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupKick(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq
false,
)
nickname := ctx.GetGroupMemberInfo( // 被踢出群聊的人的昵称
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq
false,
).Get("nickname").Str
ctx.SendChain(message.Text("残念~ " + nickname + " 被放逐"))
@@ -118,7 +128,7 @@ func init() { // 插件主体
engine.OnRegex(`^退出群聊.*?(\d+)`, zero.OnlyToMe, zero.SuperUserPermission).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupLeave(
strToInt(ctx.State["regex_matched"].([]string)[1]), // 要退出的群的群号
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 要退出的群的群号
true,
)
})
@@ -143,7 +153,7 @@ func init() { // 插件主体
// 禁言
engine.OnRegex(`^禁言.*?(\d+).*?\s(\d+)(.*)`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
duration := strToInt(ctx.State["regex_matched"].([]string)[2])
duration := math.Str2Int64(ctx.State["regex_matched"].([]string)[2])
switch ctx.State["regex_matched"].([]string)[3] {
case "分钟":
//
@@ -159,7 +169,7 @@ func init() { // 插件主体
}
ctx.SetGroupBan(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 要禁言的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 要禁言的人的qq
duration*60, // 要禁言的时间(分钟)
)
ctx.SendChain(message.Text("小黑屋收留成功~"))
@@ -169,7 +179,7 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupBan(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 要解除禁言的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 要解除禁言的人的qq
0,
)
ctx.SendChain(message.Text("小黑屋释放成功~"))
@@ -177,7 +187,7 @@ func init() { // 插件主体
// 自闭禁言
engine.OnRegex(`^(我要自闭|禅定).*?(\d+)(.*)`, zero.OnlyGroup).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
duration := strToInt(ctx.State["regex_matched"].([]string)[2])
duration := math.Str2Int64(ctx.State["regex_matched"].([]string)[2])
switch ctx.State["regex_matched"].([]string)[3] {
case "分钟", "min", "mins", "m":
break
@@ -203,8 +213,8 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupCard(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被修改群名片的人
ctx.State["regex_matched"].([]string)[2], // 修改成的群名片
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被修改群名片的人
ctx.State["regex_matched"].([]string)[2], // 修改成的群名片
)
ctx.SendChain(message.Text("嗯!已经修改了"))
})
@@ -213,8 +223,8 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
ctx.SetGroupSpecialTitle(
ctx.Event.GroupID,
strToInt(ctx.State["regex_matched"].([]string)[1]), // 被修改群头衔的人
ctx.State["regex_matched"].([]string)[2], // 修改成的群头衔
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被修改群头衔的人
ctx.State["regex_matched"].([]string)[2], // 修改成的群头衔
)
ctx.SendChain(message.Text("嗯!已经修改了"))
})
@@ -236,7 +246,7 @@ func init() { // 插件主体
content = strings.ReplaceAll(content, "&#91;", "[")
content = strings.ReplaceAll(content, "&#93;", "]")
ctx.SendGroupMessage(
strToInt(ctx.State["regex_matched"].([]string)[1]), // 需要发送的群
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 需要发送的群
content, // 需要发送的信息
)
ctx.SendChain(message.Text("📧 --> " + ctx.State["regex_matched"].([]string)[1]))
@@ -249,7 +259,7 @@ func init() { // 插件主体
content = strings.ReplaceAll(content, "&#91;", "[")
content = strings.ReplaceAll(content, "&#93;", "]")
ctx.SendPrivateMessage(
strToInt(ctx.State["regex_matched"].([]string)[1]), // 需要发送的人的qq
math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 需要发送的人的qq
content, // 需要发送的信息
)
ctx.SendChain(message.Text("📧 --> " + ctx.State["regex_matched"].([]string)[1]))
@@ -306,7 +316,7 @@ func init() { // 插件主体
engine.OnRegex(`^取消在"(.*)"的提醒`, zero.AdminPermission, zero.OnlyGroup).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
dateStrs := ctx.State["regex_matched"].([]string)
ts := timer.Timer{Cron: dateStrs[1], GrpId: ctx.Event.GroupID}
ts := timer.Timer{Cron: dateStrs[1], GrpID: ctx.Event.GroupID}
ti := ts.GetTimerID()
ok := clock.CancelTimer(ti)
if ok {
@@ -362,7 +372,7 @@ func init() { // 插件主体
engine.OnNotice().SetBlock(false).FirstPriority().
Handle(func(ctx *zero.Ctx) {
if ctx.Event.NoticeType == "group_increase" && ctx.Event.SelfID != ctx.Event.UserID {
var w Welcome
var w welcome
err := db.Find("welcome", &w, "where gid = "+strconv.FormatInt(ctx.Event.GroupID, 10))
if err == nil {
ctx.SendChain(message.Text(w.Msg))
@@ -415,14 +425,13 @@ func init() { // 插件主体
Handle(func(ctx *zero.Ctx) {
if ctx.Event.NoticeType == "group_decrease" {
userid := ctx.Event.UserID
nickname := ctx.GetStrangerInfo(userid, false).Get("nickname").String()
ctx.SendChain(message.Text(nickname, "(", userid, ")", "离开了我们..."))
ctx.SendChain(message.Text(ctxext.CardOrNickName(ctx, userid), "(", userid, ")", "离开了我们..."))
}
})
// 设置欢迎语
engine.OnRegex(`^设置欢迎语([\s\S]*)$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true).SetPriority(40).
Handle(func(ctx *zero.Ctx) {
w := &Welcome{
w := &welcome{
GrpID: ctx.Event.GroupID,
Msg: ctx.State["regex_matched"].([]string)[1],
}
@@ -493,8 +502,8 @@ func init() { // 插件主体
ctx.Send(cmd)
})
// 根据 gist 自动同意加群
// 加群请在github新建一个gist其文件名为本群群号的字符串的md5内容为一行是当前unix时间戳。
// 然后请将您的用户名和gist哈希按照username/gisthash的格式填写到回答即可。
// 加群请在github新建一个gist其文件名为本群群号的字符串的md5(小写)内容为一行是当前unix时间戳(10分钟内有效)
// 然后请将您的用户名和gist哈希(小写)按照username/gisthash的格式填写到回答即可。
engine.OnRequest().SetBlock(false).FirstPriority().Handle(func(ctx *zero.Ctx) {
/*if ctx.Event.RequestType == "friend" {
ctx.SetFriendAddRequest(ctx.Event.Flag, true, "")
@@ -505,20 +514,21 @@ func init() { // 插件主体
// gist 内容是当前 uinx 时间戳,在 10 分钟内视为有效
ans := ctx.Event.Comment[strings.Index(ctx.Event.Comment, "答案:")+len("答案:"):]
divi := strings.Index(ans, "/")
if divi <= 0 {
ctx.SetGroupAddRequest(ctx.Event.Flag, "add", false, "格式错误!")
return
}
ghun := ans[:divi]
hash := ans[divi+1:]
logrus.Infoln("[manager]收到加群申请, 用户:", ghun, ", hash:", hash)
ok, reason := checkNewUser(ctx.Event.UserID, ctx.Event.GroupID, ghun, hash)
if ok {
ctx.SetGroupAddRequest(ctx.Event.Flag, "add", true, "")
process.SleepAbout1sTo2s()
ctx.SetGroupCard(ctx.Event.GroupID, ctx.Event.UserID, ghun)
} else {
ctx.SetGroupAddRequest(ctx.Event.Flag, "add", false, reason)
}
}
})
}
func strToInt(str string) int64 {
val, _ := strconv.ParseInt(str, 10, 64)
return val
}

View File

@@ -5,12 +5,12 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
)
func (ts *Timer) sendmsg(grp int64, ctx *zero.Ctx) {
func (t *Timer) sendmsg(grp int64, ctx *zero.Ctx) {
ctx.Event = new(zero.Event)
ctx.Event.GroupID = grp
if ts.Url == "" {
ctx.SendChain(atall, message.Text(ts.Alert))
if t.URL == "" {
ctx.SendChain(atall, message.Text(t.Alert))
} else {
ctx.SendChain(atall, message.Text(ts.Alert), message.Image(ts.Url).Add("cache", "0"))
ctx.SendChain(atall, message.Text(t.Alert), message.Image(t.URL).Add("cache", "0"))
}
}

View File

@@ -14,29 +14,29 @@ import (
)
// GetTimerInfo 获得标准化定时字符串
func (ts *Timer) GetTimerInfo() string {
if ts.Cron != "" {
return fmt.Sprintf("[%d]%s", ts.GrpId, ts.Cron)
func (t *Timer) GetTimerInfo() string {
if t.Cron != "" {
return fmt.Sprintf("[%d]%s", t.GrpID, t.Cron)
}
return fmt.Sprintf("[%d]%d月%d日%d周%d:%d", ts.GrpId, ts.Month(), ts.Day(), ts.Week(), ts.Hour(), ts.Minute())
return fmt.Sprintf("[%d]%d月%d日%d周%d:%d", t.GrpID, t.Month(), t.Day(), t.Week(), t.Hour(), t.Minute())
}
// GetTimerInfo 获得标准化 ID
func (ts *Timer) GetTimerID() uint32 {
key := ts.GetTimerInfo()
// GetTimerID 获得标准化 ID
func (t *Timer) GetTimerID() uint32 {
key := t.GetTimerInfo()
m := md5.Sum(helper.StringToBytes(key))
return binary.LittleEndian.Uint32(m[:4])
}
// GetFilledCronTimer 获得以cron填充好的ts
func GetFilledCronTimer(croncmd string, alert string, img string, botqq, gid int64) *Timer {
var ts Timer
ts.Alert = alert
ts.Cron = croncmd
ts.Url = img
ts.Selfid = botqq
ts.GrpId = gid
return &ts
var t Timer
t.Alert = alert
t.Cron = croncmd
t.URL = img
t.SelfID = botqq
t.GrpID = gid
return &t
}
// GetFilledTimer 获得填充好的ts
@@ -46,79 +46,79 @@ func GetFilledTimer(dateStrs []string, botqq, grp int64, matchDateOnly bool) *Ti
hourStr := []rune(dateStrs[3])
minuteStr := []rune(dateStrs[4])
var ts Timer
var t Timer
mon := time.Month(chineseNum2Int(monthStr))
if (mon != -1 && mon <= 0) || mon > 12 { // 月份非法
ts.Alert = "月份非法!"
return &ts
t.Alert = "月份非法!"
return &t
}
ts.SetMonth(mon)
t.SetMonth(mon)
lenOfDW := len(dayWeekStr)
switch {
case lenOfDW == 4: // 包括末尾的"日"
dayWeekStr = []rune{dayWeekStr[0], dayWeekStr[2]} // 去除中间的十
d := chineseNum2Int(dayWeekStr)
if (d != -1 && d <= 0) || d > 31 { // 日期非法
ts.Alert = "日期非法1"
return &ts
t.Alert = "日期非法1"
return &t
}
ts.SetDay(d)
t.SetDay(d)
case dayWeekStr[lenOfDW-1] == rune('日'): // xx日
dayWeekStr = dayWeekStr[:lenOfDW-1]
d := chineseNum2Int(dayWeekStr)
if (d != -1 && d <= 0) || d > 31 { // 日期非法
ts.Alert = "日期非法2"
return &ts
t.Alert = "日期非法2"
return &t
}
ts.SetDay(d)
t.SetDay(d)
case dayWeekStr[0] == rune('每'): // 每周
ts.SetWeek(-1)
t.SetWeek(-1)
default: // 周x
w := chineseNum2Int(dayWeekStr[1:])
if w == 7 { // 周天是0
w = 0
}
if w < 0 || w > 6 { // 星期非法
ts.Alert = "星期非法!"
return &ts
t.Alert = "星期非法!"
return &t
}
ts.SetWeek(time.Weekday(w))
t.SetWeek(time.Weekday(w))
}
if len(hourStr) == 3 {
hourStr = []rune{hourStr[0], hourStr[2]} // 去除中间的十
}
h := chineseNum2Int(hourStr)
if h < -1 || h > 23 { // 小时非法
ts.Alert = "小时非法!"
return &ts
t.Alert = "小时非法!"
return &t
}
ts.SetHour(h)
t.SetHour(h)
if len(minuteStr) == 3 {
minuteStr = []rune{minuteStr[0], minuteStr[2]} // 去除中间的十
}
min := chineseNum2Int(minuteStr)
if min < -1 || min > 59 { // 分钟非法
ts.Alert = "分钟非法!"
return &ts
t.Alert = "分钟非法!"
return &t
}
ts.SetMinute(min)
t.SetMinute(min)
if !matchDateOnly {
urlStr := dateStrs[5]
if urlStr != "" { // 是图片url
ts.Url = urlStr[3:] // utf-8下用为3字节
logrus.Println("[群管]" + ts.Url)
if !strings.HasPrefix(ts.Url, "http") {
ts.Url = "illegal"
t.URL = urlStr[3:] // utf-8下用为3字节
logrus.Println("[群管]" + t.URL)
if !strings.HasPrefix(t.URL, "http") {
t.URL = "illegal"
logrus.Println("[群管]url非法")
return &ts
return &t
}
}
ts.Alert = dateStrs[6]
ts.SetEn(true)
t.Alert = dateStrs[6]
t.SetEn(true)
}
ts.Selfid = botqq
ts.GrpId = grp
return &ts
t.SelfID = botqq
t.GrpID = grp
return &t
}
// chineseNum2Int 汉字数字转int仅支持-1099最多两位数其中"每"解释为-1"每二"为-2以此类推
@@ -155,13 +155,12 @@ func chineseNum2Int(rs []rune) int {
func chineseChar2Int(c rune) int {
if c == rune('日') || c == rune('天') { // 周日/周天
return 7
} else {
match := []rune("零一二三四五六七八九十")
for i, m := range match {
if c == m {
return i
}
}
return 0
}
match := []rune("零一二三四五六七八九十")
for i, m := range match {
if c == m {
return i
}
}
return 0
}

View File

@@ -15,13 +15,13 @@ func firstWeek(date *time.Time, week time.Weekday) (d time.Time) {
return
}
func (ts *Timer) nextWakeTime() (date time.Time) {
func (t *Timer) nextWakeTime() (date time.Time) {
date = time.Now()
m := ts.Month()
d := ts.Day()
h := ts.Hour()
mn := ts.Minute()
w := ts.Week()
m := t.Month()
d := t.Day()
h := t.Hour()
mn := t.Minute()
w := t.Week()
var unit time.Duration
logrus.Debugln("[timer] unit init:", unit)
if mn >= 0 {
@@ -74,35 +74,35 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
}
switch stable {
case 0b0101:
if ts.Day() != time.Now().Day() || ts.Month() != time.Now().Month() {
if t.Day() != time.Now().Day() || t.Month() != time.Now().Month() {
h = 0
}
case 0b1001:
if ts.Month() != time.Now().Month() {
if t.Month() != time.Now().Month() {
d = 0
}
case 0b0001:
if ts.Month() != time.Now().Month() {
if t.Month() != time.Now().Month() {
d = 0
h = 0
}
}
logrus.Debugln("[timer] stable:", stable)
logrus.Debugln("[timer] m:", m, "d:", d, "h:", h, "mn:", mn, "w:", w)
date = time.Date(date.Year(), time.Month(m), int(d), int(h), int(mn), date.Second(), date.Nanosecond(), date.Location())
date = time.Date(date.Year(), m, d, h, mn, date.Second(), date.Nanosecond(), date.Location())
logrus.Debugln("[timer] date original:", date)
if unit > 0 {
date = date.Add(unit)
}
logrus.Debugln("[timer] date after add:", date)
if time.Until(date) <= 0 {
if ts.Month() < 0 {
if ts.Day() > 0 || (ts.Day() == 0 && ts.Week() >= 0) {
if t.Month() < 0 {
if t.Day() > 0 || (t.Day() == 0 && t.Week() >= 0) {
date = date.AddDate(0, 1, 0)
} else if ts.Day() < 0 || ts.Week() < 0 {
if ts.Hour() > 0 {
} else if t.Day() < 0 || t.Week() < 0 {
if t.Hour() > 0 {
date = date.AddDate(0, 0, 1)
} else if ts.Minute() > 0 {
} else if t.Minute() > 0 {
date = date.Add(time.Hour)
}
}
@@ -111,7 +111,7 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
}
}
logrus.Debugln("[timer] date after fix:", date)
if stable&0x8 != 0 && date.Hour() != int(h) {
if stable&0x8 != 0 && date.Hour() != h {
switch {
case stable&0x4 == 0:
date = date.AddDate(0, 0, 1).Add(-time.Hour)
@@ -124,7 +124,7 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
}
}
logrus.Debugln("[timer] date after s8:", date)
if stable&0x4 != 0 && date.Day() != int(d) {
if stable&0x4 != 0 && date.Day() != d {
switch {
case stable*0x1 == 0:
date = date.AddDate(0, 1, -1)
@@ -140,7 +140,7 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
default:
date = date.AddDate(1, 0, 0)
}
date = firstWeek(&date, time.Weekday(w))
date = firstWeek(&date, w)
}
logrus.Debugln("[timer] date after s2:", date)
if time.Until(date) <= 0 {
@@ -149,14 +149,14 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
return date
}
func (ts *Timer) judgeHM() {
if ts.Hour() < 0 || ts.Hour() == time.Now().Hour() {
if ts.Minute() < 0 || ts.Minute() == time.Now().Minute() {
if ts.Selfid != 0 {
ts.sendmsg(ts.GrpId, zero.GetBot(ts.Selfid))
func (t *Timer) judgeHM() {
if t.Hour() < 0 || t.Hour() == time.Now().Hour() {
if t.Minute() < 0 || t.Minute() == time.Now().Minute() {
if t.SelfID != 0 {
t.sendmsg(t.GrpID, zero.GetBot(t.SelfID))
} else {
zero.RangeBot(func(id int64, ctx *zero.Ctx) (_ bool) {
ts.sendmsg(ts.GrpId, ctx)
t.sendmsg(t.GrpID, ctx)
return
})
}

View File

@@ -1,26 +1,28 @@
package timer
import (
"strconv"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
"github.com/FloatTech/zbputils/sql"
)
// Timer 计时器
type Timer struct {
Id uint32 `db:"id"`
ID uint32 `db:"id"`
En1Month4Day5Week3Hour5Min6 int32 `db:"emdwhm"`
Selfid int64 `db:"sid"`
GrpId int64 `db:"gid"`
SelfID int64 `db:"sid"`
GrpID int64 `db:"gid"`
Alert string `db:"alert"`
Cron string `db:"cron"`
Url string `db:"url"`
URL string `db:"url"`
}
// InsertInto 插入自身
func (t *Timer) InsertInto(db *sql.Sqlite) error {
return db.Insert("timer", t)
}
/*
func getTimerFrom(db *sql.Sqlite, id uint32) (t Timer, err error) {
err = db.Find("timer", &t, "where id = "+strconv.Itoa(int(id)))
return
}
*/

View File

@@ -12,10 +12,10 @@ import (
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/utils/file"
"github.com/FloatTech/ZeroBot-Plugin/utils/sql"
"github.com/FloatTech/zbputils/sql"
)
// Clock 时钟
type Clock struct {
db *sql.Sqlite
timers *(map[uint32]*Timer)
@@ -37,10 +37,12 @@ var (
}
)
// NewClock 添加一个新时钟
func NewClock(db *sql.Sqlite) (c Clock) {
c.loadTimers(db)
c.cron = cron.New()
c.entries = make(map[uint32]cron.EntryID)
c.timers = &map[uint32]*Timer{}
c.cron.Start()
return
}
@@ -50,9 +52,9 @@ func (c *Clock) RegisterTimer(ts *Timer, save bool) bool {
var key uint32
if save {
key = ts.GetTimerID()
ts.Id = key
ts.ID = key
} else {
key = ts.Id
key = ts.ID
}
t, ok := c.GetTimer(key)
if t != ts && ok { // 避免重复注册定时器
@@ -61,30 +63,34 @@ func (c *Clock) RegisterTimer(ts *Timer, save bool) bool {
logrus.Println("[群管]注册计时器", key)
if ts.Cron != "" {
var ctx *zero.Ctx
if ts.Selfid != 0 {
ctx = zero.GetBot(ts.Selfid)
if ts.SelfID != 0 {
ctx = zero.GetBot(ts.SelfID)
} else {
zero.RangeBot(func(id int64, c *zero.Ctx) bool {
ctx = c
ts.Selfid = id
ts.SelfID = id
return false
})
}
eid, err := c.cron.AddFunc(ts.Cron, func() { ts.sendmsg(ts.GrpId, ctx) })
eid, err := c.cron.AddFunc(ts.Cron, func() { ts.sendmsg(ts.GrpID, ctx) })
if err == nil {
c.entmu.Lock()
c.entries[key] = eid
c.entmu.Unlock()
if save {
err = c.AddTimer(ts)
err = c.AddTimerIntoDB(ts)
}
if err == nil {
err = c.AddTimerIntoMap(ts)
}
return err == nil
}
ts.Alert = err.Error()
} else {
if save {
_ = c.AddTimer(ts)
_ = c.AddTimerIntoDB(ts)
}
_ = c.AddTimerIntoMap(ts)
for ts.En() {
nextdate := ts.nextWakeTime()
sleepsec := time.Until(nextdate)
@@ -135,7 +141,7 @@ func (c *Clock) ListTimers(grpID int64) []string {
c.timersmu.RLock()
keys := make([]string, 0, len(*c.timers))
for _, v := range *c.timers {
if v.GrpId == grpID {
if v.GrpID == grpID {
k := v.GetTimerInfo()
start := strings.Index(k, "]")
msg := strings.ReplaceAll(k[start+1:]+"\n", "-1", "每")
@@ -147,11 +153,11 @@ func (c *Clock) ListTimers(grpID int64) []string {
}
c.timersmu.RUnlock()
return keys
} else {
return nil
}
return nil
}
// GetTimer 获得定时器
func (c *Clock) GetTimer(key uint32) (t *Timer, ok bool) {
c.timersmu.RLock()
t, ok = (*c.timers)[key]
@@ -159,25 +165,31 @@ func (c *Clock) GetTimer(key uint32) (t *Timer, ok bool) {
return
}
func (c *Clock) AddTimer(t *Timer) (err error) {
// AddTimerIntoDB 添加定时器
func (c *Clock) AddTimerIntoDB(t *Timer) (err error) {
c.timersmu.Lock()
(*c.timers)[t.Id] = t
err = c.db.Insert("timer", t)
c.timersmu.Unlock()
return
}
// AddTimerIntoMap 添加定时器到缓存
func (c *Clock) AddTimerIntoMap(t *Timer) (err error) {
c.timersmu.Lock()
(*c.timers)[t.ID] = t
c.timersmu.Unlock()
return
}
func (c *Clock) loadTimers(db *sql.Sqlite) {
if file.IsExist(db.DBPath) {
c.db = db
err := c.db.Create("timer", &Timer{})
if err == nil {
var t Timer
c.db.FindFor("timer", &t, "", func() error {
tescape := t
go c.RegisterTimer(&tescape, false)
return nil
})
}
c.db = db
err := c.db.Create("timer", &Timer{})
if err == nil {
var t Timer
_ = c.db.FindFor("timer", &t, "", func() error {
tescape := t
go c.RegisterTimer(&tescape, false)
return nil
})
}
}

View File

@@ -4,6 +4,7 @@ import (
"testing"
"time"
"github.com/FloatTech/zbputils/sql"
"github.com/sirupsen/logrus"
)
@@ -22,3 +23,11 @@ func TestNextWakeTime(t *testing.T) {
t.Log(t1)
t.Fail()
}
func TestClock(t *testing.T) {
db := &sql.Sqlite{DBPath: "test.db"}
c := NewClock(db)
c.AddTimerIntoDB(GetFilledTimer([]string{"", "12", "-1", "12", "0", "", "test"}, 0, 0, false))
t.Log(c.ListTimers(0))
t.Fail()
}

View File

@@ -3,13 +3,13 @@ package timer
import "time"
// En isEnabled 1bit
func (m *Timer) En() (en bool) {
return m.En1Month4Day5Week3Hour5Min6&0x800000 != 0
func (t *Timer) En() (en bool) {
return t.En1Month4Day5Week3Hour5Min6&0x800000 != 0
}
// Month 4bits
func (m *Timer) Month() (mon time.Month) {
mon = time.Month((m.En1Month4Day5Week3Hour5Min6 & 0x780000) >> 19)
func (t *Timer) Month() (mon time.Month) {
mon = time.Month((t.En1Month4Day5Week3Hour5Min6 & 0x780000) >> 19)
if mon == 0b1111 {
mon = -1
}
@@ -17,8 +17,8 @@ func (m *Timer) Month() (mon time.Month) {
}
// Day 5bits
func (m *Timer) Day() (d int) {
d = int((m.En1Month4Day5Week3Hour5Min6 & 0x07c000) >> 14)
func (t *Timer) Day() (d int) {
d = int((t.En1Month4Day5Week3Hour5Min6 & 0x07c000) >> 14)
if d == 0b11111 {
d = -1
}
@@ -26,8 +26,8 @@ func (m *Timer) Day() (d int) {
}
// Week 3bits
func (m *Timer) Week() (w time.Weekday) {
w = time.Weekday((m.En1Month4Day5Week3Hour5Min6 & 0x003800) >> 11)
func (t *Timer) Week() (w time.Weekday) {
w = time.Weekday((t.En1Month4Day5Week3Hour5Min6 & 0x003800) >> 11)
if w == 0b111 {
w = -1
}
@@ -35,8 +35,8 @@ func (m *Timer) Week() (w time.Weekday) {
}
// Hour 5bits
func (m *Timer) Hour() (h int) {
h = int((m.En1Month4Day5Week3Hour5Min6 & 0x0007c0) >> 6)
func (t *Timer) Hour() (h int) {
h = int((t.En1Month4Day5Week3Hour5Min6 & 0x0007c0) >> 6)
if h == 0b11111 {
h = -1
}
@@ -44,8 +44,8 @@ func (m *Timer) Hour() (h int) {
}
// Minute 6bits
func (m *Timer) Minute() (min int) {
min = int(m.En1Month4Day5Week3Hour5Min6 & 0x00003f)
func (t *Timer) Minute() (min int) {
min = int(t.En1Month4Day5Week3Hour5Min6 & 0x00003f)
if min == 0b111111 {
min = -1
}
@@ -53,35 +53,35 @@ func (m *Timer) Minute() (min int) {
}
// SetEn ...
func (m *Timer) SetEn(en bool) {
func (t *Timer) SetEn(en bool) {
if en {
m.En1Month4Day5Week3Hour5Min6 |= 0x800000
t.En1Month4Day5Week3Hour5Min6 |= 0x800000
} else {
m.En1Month4Day5Week3Hour5Min6 &= 0x7fffff
t.En1Month4Day5Week3Hour5Min6 &= 0x7fffff
}
}
// SetMonth ...
func (m *Timer) SetMonth(mon time.Month) {
m.En1Month4Day5Week3Hour5Min6 = ((int32(mon) << 19) & 0x780000) | (m.En1Month4Day5Week3Hour5Min6 & 0x87ffff)
func (t *Timer) SetMonth(mon time.Month) {
t.En1Month4Day5Week3Hour5Min6 = ((int32(mon) << 19) & 0x780000) | (t.En1Month4Day5Week3Hour5Min6 & 0x87ffff)
}
// SetDay ...
func (m *Timer) SetDay(d int) {
m.En1Month4Day5Week3Hour5Min6 = ((int32(d) << 14) & 0x07c000) | (m.En1Month4Day5Week3Hour5Min6 & 0xf83fff)
func (t *Timer) SetDay(d int) {
t.En1Month4Day5Week3Hour5Min6 = ((int32(d) << 14) & 0x07c000) | (t.En1Month4Day5Week3Hour5Min6 & 0xf83fff)
}
// SetWeek ...
func (m *Timer) SetWeek(w time.Weekday) {
m.En1Month4Day5Week3Hour5Min6 = ((int32(w) << 11) & 0x003800) | (m.En1Month4Day5Week3Hour5Min6 & 0xffc7ff)
func (t *Timer) SetWeek(w time.Weekday) {
t.En1Month4Day5Week3Hour5Min6 = ((int32(w) << 11) & 0x003800) | (t.En1Month4Day5Week3Hour5Min6 & 0xffc7ff)
}
// SetHour ...
func (m *Timer) SetHour(h int) {
m.En1Month4Day5Week3Hour5Min6 = ((int32(h) << 6) & 0x0007c0) | (m.En1Month4Day5Week3Hour5Min6 & 0xfff83f)
func (t *Timer) SetHour(h int) {
t.En1Month4Day5Week3Hour5Min6 = ((int32(h) << 6) & 0x0007c0) | (t.En1Month4Day5Week3Hour5Min6 & 0xfff83f)
}
// SetMinute ...
func (m *Timer) SetMinute(min int) {
m.En1Month4Day5Week3Hour5Min6 = (int32(min) & 0x00003f) | (m.En1Month4Day5Week3Hour5Min6 & 0xffffc0)
func (t *Timer) SetMinute(min int) {
t.En1Month4Day5Week3Hour5Min6 = (int32(min) & 0x00003f) | (t.En1Month4Day5Week3Hour5Min6 & 0xffffc0)
}

View File

@@ -6,11 +6,10 @@ import (
"io/ioutil"
"net/http"
control "github.com/FloatTech/zbputils/control"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/extension"
"github.com/wdvxdr1123/ZeroBot/message"
"github.com/FloatTech/ZeroBot-Plugin/control"
)
// 此功能实现依赖MCSManager项目对服务器的管理apimc服务器如果没有在该管理平台部署此功能无效

View File

@@ -0,0 +1,64 @@
package moyu
import (
"fmt"
"testing"
"time"
reg "github.com/fumiama/go-registry"
)
var sr = reg.NewRegedit("reilia.fumiama.top:32664", "fumiama", "--")
func TestGetHoliday(t *testing.T) {
registry.Connect()
holidaymap = make(map[string]*Holiday)
h := GetHoliday("元旦")
registry.Close()
t.Fatal(h)
}
func TestSetHoliday(t *testing.T) {
err := sr.Connect()
if err != nil {
t.Fatal(err)
}
err = SetHoliday("元旦", 1, 2023, 1, 1)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("春节", 7, 2022, 1, 31)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("清明节", 1, 2022, 4, 3)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("劳动节", 1, 2022, 4, 30)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("端午节", 1, 2022, 6, 3)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("中秋节", 1, 2022, 9, 10)
if err != nil {
t.Fatal(err)
}
err = SetHoliday("国庆节", 7, 2022, 10, 1)
if err != nil {
t.Fatal(err)
}
err = sr.Close()
if err != nil {
t.Fatal(err)
}
}
func SetHoliday(name string, dur, year int, month time.Month, day int) error {
return sr.Set("holiday/"+name, fmt.Sprintf("%d_%d_%d_%d", dur, year, month, day))
}

View File

@@ -4,37 +4,65 @@ import (
"fmt"
"strconv"
"time"
reg "github.com/fumiama/go-registry"
"github.com/sirupsen/logrus"
)
type holiday struct {
// Holiday 节日
type Holiday struct {
name string
date time.Time
dur time.Duration
}
// NewHoliday 节日名 天数 年 月 日
func NewHoliday(name string, dur, year int, month time.Month, day int) *holiday {
return &holiday{name: name, date: time.Date(year, month, day, 0, 0, 0, 0, time.Local), dur: time.Duration(dur) * time.Hour * 24}
func NewHoliday(name string, dur, year int, month time.Month, day int) *Holiday {
return &Holiday{name: name, date: time.Date(year, month, day, 0, 0, 0, 0, time.Local), dur: time.Duration(dur) * time.Hour * 24}
}
// 获取两个时间相差
func (h *holiday) String() string {
var (
registry = reg.NewRegReader("reilia.fumiama.top:32664", "fumiama")
holidaymap map[string]*Holiday
)
// GetHoliday 从 reg 服务器获取节日
func GetHoliday(name string) *Holiday {
var dur, year int
var month time.Month
var day int
h, ok := holidaymap[name]
if ok {
return h
}
ret, err := registry.Get("holiday/" + name)
if err != nil {
return NewHoliday(name+err.Error(), 0, 0, 0, 0)
}
fmt.Sscanf(ret, "%d_%d_%d_%d", &dur, &year, &month, &day)
logrus.Debugln("[moyu]获取节日:", name, dur, year, month, day)
h = NewHoliday(name, dur, year, month, day)
holidaymap[name] = h
return h
}
// String 获取两个时间相差
func (h *Holiday) String() string {
d := time.Until(h.date)
if d >= 0 {
switch {
case d >= 0:
return "距离" + h.name + "还有: " + strconv.FormatFloat(d.Hours()/24.0, 'f', 2, 64) + "天!"
} else if d+h.dur >= 0 {
case d+h.dur >= 0:
return "好好享受 " + h.name + " 假期吧!"
} else {
default:
return "今年 " + h.name + " 假期已过"
}
}
func weekend() string {
t := time.Now().Weekday()
switch t {
case time.Sunday, time.Saturday:
if t == time.Sunday || t == time.Saturday {
return "好好享受周末吧!"
default:
return fmt.Sprintf("距离周末还有:%d天", 5-t)
}
return fmt.Sprintf("距离周末还有:%d天", 5-t)
}

Some files were not shown because too many files have changed in this diff Show More