diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
index ae35d5b..0641406 100644
--- a/.github/CODE_OF_CONDUCT.md
+++ b/.github/CODE_OF_CONDUCT.md
@@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
-lianmengkexin@gmail.com.
+@MotooriKashin.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml
index bb00dee..3c24c45 100644
--- a/.github/workflows/github-pages.yml
+++ b/.github/workflows/github-pages.yml
@@ -9,7 +9,8 @@ on:
branches:
- 'master'
paths:
- - 'src/docs/**'
+ - 'src/options/**'
+ - 'src/player/**'
# 也可以在 GitHub Actions 手动运行
workflow_dispatch:
@@ -48,11 +49,11 @@ jobs:
- name: Build and release
run: npm run github-pages
- # 上传网页资源(位于 /src/docs/ 目录)
+ # 上传网页资源(位于 /dist/options/ 目录)
- name: Upload Artifact
uses: actions/upload-pages-artifact@v3
with:
- path: './src/docs/'
+ path: './dist/options/'
# 部署网页
- name: Deploy to GitHub Pages
diff --git a/.gitignore b/.gitignore
index c61e686..4aa0f46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,5 @@
node_modules
-dist/_metadata
-dist/**/*.js
-dist/**/*.css
+dist
*.crx
*.pem
*.map
\ No newline at end of file
diff --git a/.vscode/css.css-data.json b/.vscode/css.css-data.json
deleted file mode 100644
index 6558d2e..0000000
--- a/.vscode/css.css-data.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "version": 1.1,
- "atDirectives": [
- {
- "name": "@scope",
- "browsers": [
- "S17.4",
- "C118",
- "O106"
- ],
- "references": [
- {
- "name": "MDN Reference",
- "url": "https://developer.mozilla.org/docs/Web/CSS/@scope"
- }
- ],
- "description": "Creates scoped style rules using CSS syntax."
- },
- {
- "name": "@starting-style",
- "browsers": [
- "S17.5",
- "C117",
- "O103"
- ],
- "references": [
- {
- "name": "MDN Reference",
- "url": "https://developer.mozilla.org/docs/Web/CSS/@starting-style"
- }
- ],
- "description": "Define starting values for properties set on an element that you want to transition from when the element receives its first style update, i.e. when an element is first displayed on a previously loaded page."
- }
- ]
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 3cdd1f7..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "css.customData": [
- ".vscode/css.css-data.json"
- ],
- "json.schemas": [
- {
- "fileMatch": [
- "dist/manifest.json"
- ],
- "url": "https://json.schemastore.org/chrome-manifest"
- }
- ],
-}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 2584fd9..b1ba047 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -10,7 +10,7 @@
},
"problemMatcher": [],
"label": "npm: build",
- "detail": "node scripts/build.mjs"
+ "detail": "node --experimental-strip-types ./src/build/index.ts"
}
]
}
\ No newline at end of file
diff --git a/README.md b/README.md
index cf0739b..53b7a3d 100644
--- a/README.md
+++ b/README.md
@@ -1,55 +1 @@
-
-
-
-# Bilibili 2019
-恢复 2019 年 12 月 09 日前的部分[B站](https://www.bilibili.com/)页面,为了那些念旧的人
-
-
-
----
-这是一个[Google Chrome](https://www.google.com/chrome/)的[manifest V3](https://developer.chrome.com/docs/extensions/mv3/manifest/)扩展项目,恢复 2019 年 12 月 09 日前的部分[B站](https://www.bilibili.com/)页面,尤其是那个小电视播放器。
-项目前身是[Bilibili-Old](https://github.com/MotooriKashin/Bilibili-Old)油猴脚本,在B站原始页面的基础上修修补补了四年多,奈何实在老旧,难以为继,于是有了推倒重来的念头。加上[manifest V3](https://developer.chrome.com/docs/extensions/mv3/manifest/)标准的推行,油猴脚本前途未卜,索性转为扩展项目。
-由于 HTML + js + css 都不再复用,从零开始手搓,肯定做不到完全复刻当年的模样,请多见谅!
-
----
-# 功能
-各种页面正在慢慢搭建中……
-- 播放器
- + 视频
- - [x] DASH
- - [x] flv
- - [x] 本地视频文件
- + 弹幕
- - [x] 普通弹幕(mode1/4/5/6)
- - [x] 高级弹幕(mode7)
- - [x] 代码弹幕(mode8)
- - [x] BAS弹幕(mode9)
- - [x] 本地弹幕文件
- + 字幕
- - [x] 在线 CC 字幕
- - [x] 本地 vtt 文件
-- 评论
- + [x] 翻页
-- 页面
- + [x] B站主页
- + [x] av
- + [x] Bangumi
-
----
-# 安装
-- 欢迎在安装之前访问核心[播放器页面](https://motoorikashin.github.io/Bilibili-2019/)体验一下旧版播放器
-- 若要安装,则要求使用最新的[Google Chrome](https://www.google.com/chrome/)浏览器(当前要求核心版本 125 以上,以后只会更高,恕不另行通知,且暂时无暇理会任何兼容性需求)。
- 1. 在[RELEASE](https://github.com/MotooriKashin/Bilibili-2019/releases)页面下载最新的版本
- 2. 解压到本地磁盘任意目录
- 3. 打开 Chrome [管理扩展程序](chrome://extensions/)页面打开右上角的【开发者模式】
- 4. 点击【加载已解压的扩展程序】按钮加载刚解压出的文件所在目录
- 5. 更新版本请重复上述步骤
-
-另外,也可以克隆项目到本地手动构建,参看[代码贡献指南](.github/contributing.md)
-
-# 维护
-欢迎念旧的人一起搭建记忆中的Bilibili,这里有一份简易的[代码贡献指南](.github/contributing.md)供参考
-
----
-# 开源
-[MIT License](LICENSE)
+重构 B 站旧版页面
\ No newline at end of file
diff --git a/package.json b/package.json
index 8e4eb99..d9597a4 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,16 @@
{
- "scripts": {
- "build": "node scripts/build.mjs",
- "arbitrary-extensions": "node scripts/arbitrary-extensions.mjs",
- "github-pages": "node scripts/github-pages.mjs"
+ "dependencies": {
+ "flv.js": "*",
+ "protobufjs": "*"
},
"devDependencies": {
- "@types/chrome": "*",
+ "@types/fs-extra": "*",
"esbuild": "*",
- "navigation-api-types": "*"
+ "fs-extra": "*"
},
- "dependencies": {
- "buffer": "*",
- "events": "*",
- "protobufjs": "*"
- }
+ "scripts": {
+ "build": "node --no-warnings --experimental-strip-types ./src/build/index.ts",
+ "arbitrary-extensions": "node --no-warnings --experimental-strip-types ./src/build/arbitrary-extensions.ts"
+ },
+ "type": "module"
}
\ No newline at end of file
diff --git a/scripts/README.md b/scripts/README.md
deleted file mode 100644
index 98c6e16..0000000
--- a/scripts/README.md
+++ /dev/null
@@ -1 +0,0 @@
-负责开发编译过程中各种任务处理的脚本,依赖[Node.js](https://nodejs.org/)环境
\ No newline at end of file
diff --git a/scripts/build.mjs b/scripts/build.mjs
deleted file mode 100644
index f59e611..0000000
--- a/scripts/build.mjs
+++ /dev/null
@@ -1,72 +0,0 @@
-import { build } from "esbuild";
-
-const style = await build({
- entryPoints: [
- 'src/player/style/index.css',
- 'src/main/bilibili/html/style/index.css',
- 'src/main/bilibili/player/style/index.css',
- 'src/main/bilibili/header/style/index.css',
- 'src/main/bilibili/footer/style/index.css',
- 'src/main/bilibili/comment/style/index.css',
- 'src/main/bilibili/info/style/index.css',
- 'src/main/bilibili/desc/style/index.css',
- 'src/main/bilibili/home/style/index.css',
- ],
- bundle: true,
- minify: true,
- outdir: 'dist',
- outbase: "src",
- format: 'iife',
- // 内嵌源映射以便于调试
- sourcemap: 'inline',
- treeShaking: true,
- charset: 'utf8',
- loader: {
- '.woff': 'dataurl',
- '.gif': 'dataurl',
- '.png': 'dataurl',
- },
- write: false,
-});
-
-// 编译代码文件
-await build({
- entryPoints: [
- 'src/sw/index.ts',
- 'src/main/index.ts',
- 'src/main/WebRTC.ts',
- 'src/main/bilibili/space/index.ts',
- 'src/main/bilibili/live/index.ts',
- ],
- bundle: true,
- minify: true,
- outdir: 'dist',
- outbase: "src",
- format: 'iife',
- // 内嵌源映射以便于调试
- sourcemap: 'inline',
- treeShaking: true,
- charset: 'utf8',
- loader: {
- '.svg': 'text',
- '.css': 'text',
- },
- define: {
- /** 基于哈希消息认证码的一次性口令的密钥 */
- __TOTP_KEY__: `'${crypto.randomUUID()}'`,
- /** 播放器样式文件 */
- __BOFQI_STYLE__: `'${style.outputFiles[0].text.replaceAll('\n', '\\n')}'`,
- __HTML_STYLE__: `'${style.outputFiles[1].text.replaceAll('\n', '\\n')}'`,
- __BILI_PLAYER_STYLE__: `'${style.outputFiles[2].text.replaceAll('\n', '\\n')}'`,
- __BILI_HEADER_STYLE__: `'${style.outputFiles[3].text.replaceAll('\n', '\\n')}'`,
- __BILI_FOOTER_STYLE__: `'${style.outputFiles[4].text.replaceAll('\n', '\\n')}'`,
- __BILI_COMMENT_STYLE__: `'${style.outputFiles[5].text.replaceAll('\n', '\\n')}'`,
- __BILI_INFO_STYLE__: `'${style.outputFiles[6].text.replaceAll('\n', '\\n')}'`,
- __BILI_DESC_STYLE__: `'${style.outputFiles[7].text.replaceAll('\n', '\\n')}'`,
- __BILI_HOME_STYLE__: `'${style.outputFiles[8].text.replaceAll('\n', '\\n')}'`,
- },
- supported: {
- // 装饰器暂未得到任何浏览器支持
- decorators: false,
- }
-});
diff --git a/scripts/github-pages.mjs b/scripts/github-pages.mjs
deleted file mode 100644
index 1591dd0..0000000
--- a/scripts/github-pages.mjs
+++ /dev/null
@@ -1,49 +0,0 @@
-import { build } from "esbuild";
-
-const style = await build({
- entryPoints: [
- 'src/player/style/index.css'
- ],
- bundle: true,
- minify: true,
- outbase: "src",
- format: 'iife',
- // 内嵌源映射以便于调试
- sourcemap: 'inline',
- treeShaking: true,
- charset: 'utf8',
- loader: {
- '.woff': 'dataurl',
- '.gif': 'dataurl',
- '.png': 'dataurl',
- },
- write: false,
-});
-
-// 编译代码文件
-await build({
- entryPoints: [
- 'src/docs/index.ts'
- ],
- bundle: true,
- minify: true,
- outdir: 'src/docs/',
- outbase: "src/docs/",
- format: 'iife',
- // 内嵌源映射以便于调试
- treeShaking: true,
- charset: 'utf8',
- loader: {
- '.svg': 'text',
- },
- define: {
- /** 基于哈希消息认证码的一次性口令的密钥 */
- __TOTP_KEY__: `'${crypto.randomUUID()}'`,
- /** 播放器样式文件 */
- __BOFQI_STYLE__: `'${style.outputFiles[0].text.replaceAll('\n', '\\n')}'`,
- },
- supported: {
- // 装饰器暂未得到任何浏览器支持
- decorators: false,
- }
-});
\ No newline at end of file
diff --git a/src/README.md b/src/README.md
deleted file mode 100644
index 0575e33..0000000
--- a/src/README.md
+++ /dev/null
@@ -1 +0,0 @@
-源代码及资源所在,开发过程基本上在此目录内进行
\ No newline at end of file
diff --git a/dist/_locales/zh/messages.json b/src/_locales/zh/messages.json
similarity index 100%
rename from dist/_locales/zh/messages.json
rename to src/_locales/zh/messages.json
diff --git a/src/player/assets/image/color.png b/src/assets/color.png
similarity index 100%
rename from src/player/assets/image/color.png
rename to src/assets/color.png
diff --git a/dist/assets/declarative_rules/track.json b/src/assets/declarative_rules/track.json
similarity index 92%
rename from dist/assets/declarative_rules/track.json
rename to src/assets/declarative_rules/track.json
index 6b332b0..a74471c 100644
--- a/dist/assets/declarative_rules/track.json
+++ b/src/assets/declarative_rules/track.json
@@ -140,5 +140,20 @@
"xmlhttprequest"
]
}
+ },
+ {
+ "id": 7,
+ "action": {
+ "type": "block"
+ },
+ "condition": {
+ "requestDomains": [
+ "s1.hdslb.com"
+ ],
+ "urlFilter": "reporter-pb",
+ "resourceTypes": [
+ "script"
+ ]
+ }
}
]
\ No newline at end of file
diff --git a/src/docs/favicon.ico b/src/assets/favicon.ico
similarity index 100%
rename from src/docs/favicon.ico
rename to src/assets/favicon.ico
diff --git a/dist/assets/icon.png b/src/assets/icon.png
similarity index 100%
rename from dist/assets/icon.png
rename to src/assets/icon.png
diff --git a/src/assets/loading.gif b/src/assets/loading.gif
new file mode 100644
index 0000000..31f8504
Binary files /dev/null and b/src/assets/loading.gif differ
diff --git a/src/player/assets/image/panel.gif b/src/assets/panel.gif
similarity index 100%
rename from src/player/assets/image/panel.gif
rename to src/assets/panel.gif
diff --git a/src/assets/svg/12blocksetting.d.svg.ts b/src/assets/svg/12blocksetting.d.svg.ts
new file mode 100644
index 0000000..bd6c4ce
--- /dev/null
+++ b/src/assets/svg/12blocksetting.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12blocksetting: string;
+export default svg_12blocksetting;
\ No newline at end of file
diff --git a/src/player/assets/svg/block-setting.svg b/src/assets/svg/12blocksetting.svg
similarity index 100%
rename from src/player/assets/svg/block-setting.svg
rename to src/assets/svg/12blocksetting.svg
diff --git a/src/assets/svg/12checkbox.d.svg.ts b/src/assets/svg/12checkbox.d.svg.ts
new file mode 100644
index 0000000..e76e43f
--- /dev/null
+++ b/src/assets/svg/12checkbox.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12checkbox: string;
+export default svg_12checkbox;
\ No newline at end of file
diff --git a/src/player/assets/svg/checkbox.svg b/src/assets/svg/12checkbox.svg
similarity index 100%
rename from src/player/assets/svg/checkbox.svg
rename to src/assets/svg/12checkbox.svg
diff --git a/src/assets/svg/12close.d.svg.ts b/src/assets/svg/12close.d.svg.ts
new file mode 100644
index 0000000..d45e2d5
--- /dev/null
+++ b/src/assets/svg/12close.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12close: string;
+export default svg_12close;
\ No newline at end of file
diff --git a/src/player/assets/svg/close.svg b/src/assets/svg/12close.svg
similarity index 100%
rename from src/player/assets/svg/close.svg
rename to src/assets/svg/12close.svg
diff --git a/src/assets/svg/12danmuhistory.d.svg.ts b/src/assets/svg/12danmuhistory.d.svg.ts
new file mode 100644
index 0000000..c21af6b
--- /dev/null
+++ b/src/assets/svg/12danmuhistory.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12danmuhistory: string;
+export default svg_12danmuhistory;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-history.svg b/src/assets/svg/12danmuhistory.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-history.svg
rename to src/assets/svg/12danmuhistory.svg
diff --git a/src/assets/svg/12danmulist.d.svg.ts b/src/assets/svg/12danmulist.d.svg.ts
new file mode 100644
index 0000000..b1c7ef5
--- /dev/null
+++ b/src/assets/svg/12danmulist.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12danmulist: string;
+export default svg_12danmulist;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-list.svg b/src/assets/svg/12danmulist.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-list.svg
rename to src/assets/svg/12danmulist.svg
diff --git a/src/assets/svg/12delete.d.svg.ts b/src/assets/svg/12delete.d.svg.ts
new file mode 100644
index 0000000..bd3da52
--- /dev/null
+++ b/src/assets/svg/12delete.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12delete: string;
+export default svg_12delete;
\ No newline at end of file
diff --git a/src/player/assets/svg/delete.svg b/src/assets/svg/12delete.svg
similarity index 100%
rename from src/player/assets/svg/delete.svg
rename to src/assets/svg/12delete.svg
diff --git a/src/assets/svg/12down.d.svg.ts b/src/assets/svg/12down.d.svg.ts
new file mode 100644
index 0000000..3eebafc
--- /dev/null
+++ b/src/assets/svg/12down.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12down: string;
+export default svg_12down;
\ No newline at end of file
diff --git a/src/player/assets/svg/down.svg b/src/assets/svg/12down.svg
similarity index 100%
rename from src/player/assets/svg/down.svg
rename to src/assets/svg/12down.svg
diff --git a/src/assets/svg/12iconcomment.d.svg.ts b/src/assets/svg/12iconcomment.d.svg.ts
new file mode 100644
index 0000000..9f2ca12
--- /dev/null
+++ b/src/assets/svg/12iconcomment.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12iconcomment: string;
+export default svg_12iconcomment;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-comment.svg b/src/assets/svg/12iconcomment.svg
similarity index 100%
rename from src/player/assets/svg/icon-comment.svg
rename to src/assets/svg/12iconcomment.svg
diff --git a/src/assets/svg/12icondanmu.d.svg.ts b/src/assets/svg/12icondanmu.d.svg.ts
new file mode 100644
index 0000000..905136c
--- /dev/null
+++ b/src/assets/svg/12icondanmu.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12icondanmu: string;
+export default svg_12icondanmu;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-danmaku.svg b/src/assets/svg/12icondanmu.svg
similarity index 100%
rename from src/player/assets/svg/icon-danmaku.svg
rename to src/assets/svg/12icondanmu.svg
diff --git a/src/assets/svg/12iconfollowed.d.svg.ts b/src/assets/svg/12iconfollowed.d.svg.ts
new file mode 100644
index 0000000..094f701
--- /dev/null
+++ b/src/assets/svg/12iconfollowed.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12iconfollowed: string;
+export default svg_12iconfollowed;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-follow.svg b/src/assets/svg/12iconfollowed.svg
similarity index 100%
rename from src/player/assets/svg/icon-follow.svg
rename to src/assets/svg/12iconfollowed.svg
diff --git a/src/assets/svg/12iconplayed.d.svg.ts b/src/assets/svg/12iconplayed.d.svg.ts
new file mode 100644
index 0000000..c950240
--- /dev/null
+++ b/src/assets/svg/12iconplayed.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12iconplayed: string;
+export default svg_12iconplayed;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-played.svg b/src/assets/svg/12iconplayed.svg
similarity index 100%
rename from src/player/assets/svg/icon-played.svg
rename to src/assets/svg/12iconplayed.svg
diff --git a/src/assets/svg/12left.d.svg.ts b/src/assets/svg/12left.d.svg.ts
new file mode 100644
index 0000000..bb571ac
--- /dev/null
+++ b/src/assets/svg/12left.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12left: string;
+export default svg_12left;
\ No newline at end of file
diff --git a/src/player/assets/svg/left.svg b/src/assets/svg/12left.svg
similarity index 100%
rename from src/player/assets/svg/left.svg
rename to src/assets/svg/12left.svg
diff --git a/src/assets/svg/12more.d.svg.ts b/src/assets/svg/12more.d.svg.ts
new file mode 100644
index 0000000..d0926af
--- /dev/null
+++ b/src/assets/svg/12more.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12more: string;
+export default svg_12more;
\ No newline at end of file
diff --git a/src/player/assets/svg/more.svg b/src/assets/svg/12more.svg
similarity index 100%
rename from src/player/assets/svg/more.svg
rename to src/assets/svg/12more.svg
diff --git a/src/assets/svg/12refresh.d.svg.ts b/src/assets/svg/12refresh.d.svg.ts
new file mode 100644
index 0000000..7e1d46f
--- /dev/null
+++ b/src/assets/svg/12refresh.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12refresh: string;
+export default svg_12refresh;
\ No newline at end of file
diff --git a/src/player/assets/svg/reflesh.svg b/src/assets/svg/12refresh.svg
similarity index 100%
rename from src/player/assets/svg/reflesh.svg
rename to src/assets/svg/12refresh.svg
diff --git a/src/assets/svg/12right.d.svg.ts b/src/assets/svg/12right.d.svg.ts
new file mode 100644
index 0000000..9775eb6
--- /dev/null
+++ b/src/assets/svg/12right.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12right: string;
+export default svg_12right;
\ No newline at end of file
diff --git a/src/player/assets/svg/right.svg b/src/assets/svg/12right.svg
similarity index 100%
rename from src/player/assets/svg/right.svg
rename to src/assets/svg/12right.svg
diff --git a/src/assets/svg/12selected2.d.svg.ts b/src/assets/svg/12selected2.d.svg.ts
new file mode 100644
index 0000000..dea6913
--- /dev/null
+++ b/src/assets/svg/12selected2.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12selected2: string;
+export default svg_12selected2;
\ No newline at end of file
diff --git a/src/player/assets/svg/checkbox-selected.svg b/src/assets/svg/12selected2.svg
similarity index 100%
rename from src/player/assets/svg/checkbox-selected.svg
rename to src/assets/svg/12selected2.svg
diff --git a/src/assets/svg/12sellect.d.svg.ts b/src/assets/svg/12sellect.d.svg.ts
new file mode 100644
index 0000000..1668526
--- /dev/null
+++ b/src/assets/svg/12sellect.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12sellect: string;
+export default svg_12sellect;
\ No newline at end of file
diff --git a/src/player/assets/svg/select.svg b/src/assets/svg/12sellect.svg
similarity index 100%
rename from src/player/assets/svg/select.svg
rename to src/assets/svg/12sellect.svg
diff --git a/src/assets/svg/12sent.d.svg.ts b/src/assets/svg/12sent.d.svg.ts
new file mode 100644
index 0000000..68d8343
--- /dev/null
+++ b/src/assets/svg/12sent.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12sent: string;
+export default svg_12sent;
\ No newline at end of file
diff --git a/src/player/assets/svg/sent.svg b/src/assets/svg/12sent.svg
similarity index 100%
rename from src/player/assets/svg/sent.svg
rename to src/assets/svg/12sent.svg
diff --git a/src/assets/svg/12spedanmu.d.svg.ts b/src/assets/svg/12spedanmu.d.svg.ts
new file mode 100644
index 0000000..aff5fcc
--- /dev/null
+++ b/src/assets/svg/12spedanmu.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12spedanmu: string;
+export default svg_12spedanmu;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-special.svg b/src/assets/svg/12spedanmu.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-special.svg
rename to src/assets/svg/12spedanmu.svg
diff --git a/src/assets/svg/12suggest.d.svg.ts b/src/assets/svg/12suggest.d.svg.ts
new file mode 100644
index 0000000..9b7ff4f
--- /dev/null
+++ b/src/assets/svg/12suggest.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12suggest: string;
+export default svg_12suggest;
\ No newline at end of file
diff --git a/src/player/assets/svg/suggest.svg b/src/assets/svg/12suggest.svg
similarity index 100%
rename from src/player/assets/svg/suggest.svg
rename to src/assets/svg/12suggest.svg
diff --git a/src/assets/svg/12up.d.svg.ts b/src/assets/svg/12up.d.svg.ts
new file mode 100644
index 0000000..6ec5cda
--- /dev/null
+++ b/src/assets/svg/12up.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_12up: string;
+export default svg_12up;
\ No newline at end of file
diff --git a/src/player/assets/svg/up.svg b/src/assets/svg/12up.svg
similarity index 100%
rename from src/player/assets/svg/up.svg
rename to src/assets/svg/12up.svg
diff --git a/src/assets/svg/24back.d.svg.ts b/src/assets/svg/24back.d.svg.ts
new file mode 100644
index 0000000..89e2cde
--- /dev/null
+++ b/src/assets/svg/24back.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24back: string;
+export default svg_24back;
\ No newline at end of file
diff --git a/src/player/assets/svg/back.svg b/src/assets/svg/24back.svg
similarity index 100%
rename from src/player/assets/svg/back.svg
rename to src/assets/svg/24back.svg
diff --git a/src/assets/svg/24color.d.svg.ts b/src/assets/svg/24color.d.svg.ts
new file mode 100644
index 0000000..43caa5c
--- /dev/null
+++ b/src/assets/svg/24color.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24color: string;
+export default svg_24color;
\ No newline at end of file
diff --git a/src/player/assets/svg/color.svg b/src/assets/svg/24color.svg
similarity index 100%
rename from src/player/assets/svg/color.svg
rename to src/assets/svg/24color.svg
diff --git a/src/assets/svg/24danmucurrent.d.svg.ts b/src/assets/svg/24danmucurrent.d.svg.ts
new file mode 100644
index 0000000..ce3e195
--- /dev/null
+++ b/src/assets/svg/24danmucurrent.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24danmucurrent: string;
+export default svg_24danmucurrent;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-current.svg b/src/assets/svg/24danmucurrent.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-current.svg
rename to src/assets/svg/24danmucurrent.svg
diff --git a/src/assets/svg/24danmuforbid.d.svg.ts b/src/assets/svg/24danmuforbid.d.svg.ts
new file mode 100644
index 0000000..8d8f6ce
--- /dev/null
+++ b/src/assets/svg/24danmuforbid.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24danmuforbid: string;
+export default svg_24danmuforbid;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-forbid.svg b/src/assets/svg/24danmuforbid.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-forbid.svg
rename to src/assets/svg/24danmuforbid.svg
diff --git a/src/assets/svg/24danmuoff.d.svg.ts b/src/assets/svg/24danmuoff.d.svg.ts
new file mode 100644
index 0000000..64cf079
--- /dev/null
+++ b/src/assets/svg/24danmuoff.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24danmuoff: string;
+export default svg_24danmuoff;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-off.svg b/src/assets/svg/24danmuoff.svg
similarity index 93%
rename from src/player/assets/svg/danmaku-off.svg
rename to src/assets/svg/24danmuoff.svg
index 7662d90..563a056 100644
--- a/src/player/assets/svg/danmaku-off.svg
+++ b/src/assets/svg/24danmuoff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24danmuon.d.svg.ts b/src/assets/svg/24danmuon.d.svg.ts
new file mode 100644
index 0000000..480d05e
--- /dev/null
+++ b/src/assets/svg/24danmuon.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24danmuon: string;
+export default svg_24danmuon;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku.svg b/src/assets/svg/24danmuon.svg
similarity index 85%
rename from src/player/assets/svg/danmaku.svg
rename to src/assets/svg/24danmuon.svg
index 5868303..d7e2728 100644
--- a/src/player/assets/svg/danmaku.svg
+++ b/src/assets/svg/24danmuon.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24danmusetting.d.svg.ts b/src/assets/svg/24danmusetting.d.svg.ts
new file mode 100644
index 0000000..e7defba
--- /dev/null
+++ b/src/assets/svg/24danmusetting.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24danmusetting: string;
+export default svg_24danmusetting;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-setting.svg b/src/assets/svg/24danmusetting.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-setting.svg
rename to src/assets/svg/24danmusetting.svg
diff --git a/src/assets/svg/24exitfullscreen.d.svg.ts b/src/assets/svg/24exitfullscreen.d.svg.ts
new file mode 100644
index 0000000..93da660
--- /dev/null
+++ b/src/assets/svg/24exitfullscreen.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24exitfullscreen: string;
+export default svg_24exitfullscreen;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-full-web-exit.svg b/src/assets/svg/24exitfullscreen.svg
similarity index 89%
rename from src/player/assets/svg/screen-full-web-exit.svg
rename to src/assets/svg/24exitfullscreen.svg
index 6249f30..392e22d 100644
--- a/src/player/assets/svg/screen-full-web-exit.svg
+++ b/src/assets/svg/24exitfullscreen.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24exitpip.d.svg.ts b/src/assets/svg/24exitpip.d.svg.ts
new file mode 100644
index 0000000..cb4f654
--- /dev/null
+++ b/src/assets/svg/24exitpip.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24exitpip: string;
+export default svg_24exitpip;
\ No newline at end of file
diff --git a/src/assets/svg/24exitpip.svg b/src/assets/svg/24exitpip.svg
new file mode 100644
index 0000000..f4e77c9
--- /dev/null
+++ b/src/assets/svg/24exitpip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/24exitwebfull.d.svg.ts b/src/assets/svg/24exitwebfull.d.svg.ts
new file mode 100644
index 0000000..a90c4ec
--- /dev/null
+++ b/src/assets/svg/24exitwebfull.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24exitwebfull: string;
+export default svg_24exitwebfull;
\ No newline at end of file
diff --git a/src/assets/svg/24exitwebfull.svg b/src/assets/svg/24exitwebfull.svg
new file mode 100644
index 0000000..a54755e
--- /dev/null
+++ b/src/assets/svg/24exitwebfull.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/24fullscreen.d.svg.ts b/src/assets/svg/24fullscreen.d.svg.ts
new file mode 100644
index 0000000..2747434
--- /dev/null
+++ b/src/assets/svg/24fullscreen.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24fullscreen: string;
+export default svg_24fullscreen;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-full.svg b/src/assets/svg/24fullscreen.svg
similarity index 96%
rename from src/player/assets/svg/screen-full.svg
rename to src/assets/svg/24fullscreen.svg
index 8631c51..96b29fb 100644
--- a/src/player/assets/svg/screen-full.svg
+++ b/src/assets/svg/24fullscreen.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24more.d.svg.ts b/src/assets/svg/24more.d.svg.ts
new file mode 100644
index 0000000..5c5041c
--- /dev/null
+++ b/src/assets/svg/24more.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24more: string;
+export default svg_24more;
\ No newline at end of file
diff --git a/src/player/assets/svg/setting-more.svg b/src/assets/svg/24more.svg
similarity index 100%
rename from src/player/assets/svg/setting-more.svg
rename to src/assets/svg/24more.svg
diff --git a/src/assets/svg/24pause.d.svg.ts b/src/assets/svg/24pause.d.svg.ts
new file mode 100644
index 0000000..ad8f096
--- /dev/null
+++ b/src/assets/svg/24pause.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24pause: string;
+export default svg_24pause;
\ No newline at end of file
diff --git a/src/player/assets/svg/pause.svg b/src/assets/svg/24pause.svg
similarity index 100%
rename from src/player/assets/svg/pause.svg
rename to src/assets/svg/24pause.svg
diff --git a/src/assets/svg/24pip.d.svg.ts b/src/assets/svg/24pip.d.svg.ts
new file mode 100644
index 0000000..3152953
--- /dev/null
+++ b/src/assets/svg/24pip.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24pip: string;
+export default svg_24pip;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-pip.svg b/src/assets/svg/24pip.svg
similarity index 69%
rename from src/player/assets/svg/screen-pip.svg
rename to src/assets/svg/24pip.svg
index 347d629..2732d18 100644
--- a/src/player/assets/svg/screen-pip.svg
+++ b/src/assets/svg/24pip.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24play.d.svg.ts b/src/assets/svg/24play.d.svg.ts
new file mode 100644
index 0000000..320f50f
--- /dev/null
+++ b/src/assets/svg/24play.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24play: string;
+export default svg_24play;
\ No newline at end of file
diff --git a/src/player/assets/svg/play.svg b/src/assets/svg/24play.svg
similarity index 89%
rename from src/player/assets/svg/play.svg
rename to src/assets/svg/24play.svg
index 6f0d67c..4c64414 100644
--- a/src/player/assets/svg/play.svg
+++ b/src/assets/svg/24play.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24repeatoff.d.svg.ts b/src/assets/svg/24repeatoff.d.svg.ts
new file mode 100644
index 0000000..80eba6d
--- /dev/null
+++ b/src/assets/svg/24repeatoff.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24repeatoff: string;
+export default svg_24repeatoff;
\ No newline at end of file
diff --git a/src/player/assets/svg/repeat.svg b/src/assets/svg/24repeatoff.svg
similarity index 94%
rename from src/player/assets/svg/repeat.svg
rename to src/assets/svg/24repeatoff.svg
index 81525cb..7ecd771 100644
--- a/src/player/assets/svg/repeat.svg
+++ b/src/assets/svg/24repeatoff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24repeaton.d.svg.ts b/src/assets/svg/24repeaton.d.svg.ts
new file mode 100644
index 0000000..ef800df
--- /dev/null
+++ b/src/assets/svg/24repeaton.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24repeaton: string;
+export default svg_24repeaton;
\ No newline at end of file
diff --git a/src/player/assets/svg/repeat-on.svg b/src/assets/svg/24repeaton.svg
similarity index 92%
rename from src/player/assets/svg/repeat-on.svg
rename to src/assets/svg/24repeaton.svg
index eaf2557..7026b1a 100644
--- a/src/player/assets/svg/repeat-on.svg
+++ b/src/assets/svg/24repeaton.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24setting.d.svg.ts b/src/assets/svg/24setting.d.svg.ts
new file mode 100644
index 0000000..fc82ad0
--- /dev/null
+++ b/src/assets/svg/24setting.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24setting: string;
+export default svg_24setting;
\ No newline at end of file
diff --git a/src/player/assets/svg/setting.svg b/src/assets/svg/24setting.svg
similarity index 100%
rename from src/player/assets/svg/setting.svg
rename to src/assets/svg/24setting.svg
diff --git a/src/assets/svg/24soundlarge.d.svg.ts b/src/assets/svg/24soundlarge.d.svg.ts
new file mode 100644
index 0000000..bc2538d
--- /dev/null
+++ b/src/assets/svg/24soundlarge.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24soundlarge: string;
+export default svg_24soundlarge;
\ No newline at end of file
diff --git a/src/player/assets/svg/volume-large.svg b/src/assets/svg/24soundlarge.svg
similarity index 88%
rename from src/player/assets/svg/volume-large.svg
rename to src/assets/svg/24soundlarge.svg
index 38c2ae3..4a57c8b 100644
--- a/src/player/assets/svg/volume-large.svg
+++ b/src/assets/svg/24soundlarge.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24soundoff.d.svg.ts b/src/assets/svg/24soundoff.d.svg.ts
new file mode 100644
index 0000000..6d07c81
--- /dev/null
+++ b/src/assets/svg/24soundoff.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24soundoff: string;
+export default svg_24soundoff;
\ No newline at end of file
diff --git a/src/player/assets/svg/volume-muted.svg b/src/assets/svg/24soundoff.svg
similarity index 95%
rename from src/player/assets/svg/volume-muted.svg
rename to src/assets/svg/24soundoff.svg
index f1451c7..b1ab9af 100644
--- a/src/player/assets/svg/volume-muted.svg
+++ b/src/assets/svg/24soundoff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24soundsmall.d.svg.ts b/src/assets/svg/24soundsmall.d.svg.ts
new file mode 100644
index 0000000..cdd8c04
--- /dev/null
+++ b/src/assets/svg/24soundsmall.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24soundsmall: string;
+export default svg_24soundsmall;
\ No newline at end of file
diff --git a/src/player/assets/svg/volume.svg b/src/assets/svg/24soundsmall.svg
similarity index 89%
rename from src/player/assets/svg/volume.svg
rename to src/assets/svg/24soundsmall.svg
index 93892f7..c6e2ffc 100644
--- a/src/player/assets/svg/volume.svg
+++ b/src/assets/svg/24soundsmall.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24subtitle.d.svg.ts b/src/assets/svg/24subtitle.d.svg.ts
new file mode 100644
index 0000000..9af2978
--- /dev/null
+++ b/src/assets/svg/24subtitle.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24subtitle: string;
+export default svg_24subtitle;
\ No newline at end of file
diff --git a/src/player/assets/svg/closed-caption.svg b/src/assets/svg/24subtitle.svg
similarity index 100%
rename from src/player/assets/svg/closed-caption.svg
rename to src/assets/svg/24subtitle.svg
diff --git a/src/assets/svg/24subtitleon.d.svg.ts b/src/assets/svg/24subtitleon.d.svg.ts
new file mode 100644
index 0000000..a9a64d7
--- /dev/null
+++ b/src/assets/svg/24subtitleon.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24subtitleon: string;
+export default svg_24subtitleon;
\ No newline at end of file
diff --git a/src/player/assets/svg/closed-caption-on.svg b/src/assets/svg/24subtitleon.svg
similarity index 100%
rename from src/player/assets/svg/closed-caption-on.svg
rename to src/assets/svg/24subtitleon.svg
diff --git a/src/assets/svg/24webfull.d.svg.ts b/src/assets/svg/24webfull.d.svg.ts
new file mode 100644
index 0000000..df028a4
--- /dev/null
+++ b/src/assets/svg/24webfull.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24webfull: string;
+export default svg_24webfull;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-full-web.svg b/src/assets/svg/24webfull.svg
similarity index 97%
rename from src/player/assets/svg/screen-full-web.svg
rename to src/assets/svg/24webfull.svg
index 526bbeb..191d633 100644
--- a/src/player/assets/svg/screen-full-web.svg
+++ b/src/assets/svg/24webfull.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24wideoff.d.svg.ts b/src/assets/svg/24wideoff.d.svg.ts
new file mode 100644
index 0000000..a1ba609
--- /dev/null
+++ b/src/assets/svg/24wideoff.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24wideoff: string;
+export default svg_24wideoff;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-wide.svg b/src/assets/svg/24wideoff.svg
similarity index 91%
rename from src/player/assets/svg/screen-wide.svg
rename to src/assets/svg/24wideoff.svg
index 30af02e..253e5bb 100644
--- a/src/player/assets/svg/screen-wide.svg
+++ b/src/assets/svg/24wideoff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/24wideon.d.svg.ts b/src/assets/svg/24wideon.d.svg.ts
new file mode 100644
index 0000000..8d8feb7
--- /dev/null
+++ b/src/assets/svg/24wideon.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_24wideon: string;
+export default svg_24wideon;
\ No newline at end of file
diff --git a/src/player/assets/svg/screen-wide-on.svg b/src/assets/svg/24wideon.svg
similarity index 94%
rename from src/player/assets/svg/screen-wide-on.svg
rename to src/assets/svg/24wideon.svg
index 4e654d6..79c2360 100644
--- a/src/player/assets/svg/screen-wide-on.svg
+++ b/src/assets/svg/24wideon.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/assets/svg/32coin.d.svg.ts b/src/assets/svg/32coin.d.svg.ts
new file mode 100644
index 0000000..a4042fc
--- /dev/null
+++ b/src/assets/svg/32coin.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_32coin: string;
+export default svg_32coin;
\ No newline at end of file
diff --git a/src/player/assets/svg/coin.svg b/src/assets/svg/32coin.svg
similarity index 100%
rename from src/player/assets/svg/coin.svg
rename to src/assets/svg/32coin.svg
diff --git a/src/assets/svg/32replay.d.svg.ts b/src/assets/svg/32replay.d.svg.ts
new file mode 100644
index 0000000..812691c
--- /dev/null
+++ b/src/assets/svg/32replay.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_32replay: string;
+export default svg_32replay;
\ No newline at end of file
diff --git a/src/player/assets/svg/replay.svg b/src/assets/svg/32replay.svg
similarity index 100%
rename from src/player/assets/svg/replay.svg
rename to src/assets/svg/32replay.svg
diff --git a/src/assets/svg/32share.d.svg.ts b/src/assets/svg/32share.d.svg.ts
new file mode 100644
index 0000000..d6101aa
--- /dev/null
+++ b/src/assets/svg/32share.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_32share: string;
+export default svg_32share;
\ No newline at end of file
diff --git a/src/player/assets/svg/share.svg b/src/assets/svg/32share.svg
similarity index 100%
rename from src/player/assets/svg/share.svg
rename to src/assets/svg/32share.svg
diff --git a/src/assets/svg/48danmuback.d.svg.ts b/src/assets/svg/48danmuback.d.svg.ts
new file mode 100644
index 0000000..c9727e6
--- /dev/null
+++ b/src/assets/svg/48danmuback.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmuback: string;
+export default svg_48danmuback;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-6.svg b/src/assets/svg/48danmuback.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-6.svg
rename to src/assets/svg/48danmuback.svg
diff --git a/src/assets/svg/48danmubottom.d.svg.ts b/src/assets/svg/48danmubottom.d.svg.ts
new file mode 100644
index 0000000..cc00210
--- /dev/null
+++ b/src/assets/svg/48danmubottom.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmubottom: string;
+export default svg_48danmubottom;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-4.svg b/src/assets/svg/48danmubottom.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-4.svg
rename to src/assets/svg/48danmubottom.svg
diff --git a/src/assets/svg/48danmucode.d.svg.ts b/src/assets/svg/48danmucode.d.svg.ts
new file mode 100644
index 0000000..6786222
--- /dev/null
+++ b/src/assets/svg/48danmucode.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmucode: string;
+export default svg_48danmucode;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-8.svg b/src/assets/svg/48danmucode.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-8.svg
rename to src/assets/svg/48danmucode.svg
diff --git a/src/assets/svg/48danmucolor.d.svg.ts b/src/assets/svg/48danmucolor.d.svg.ts
new file mode 100644
index 0000000..4a131e5
--- /dev/null
+++ b/src/assets/svg/48danmucolor.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmucolor: string;
+export default svg_48danmucolor;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-color.svg b/src/assets/svg/48danmucolor.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-color.svg
rename to src/assets/svg/48danmucolor.svg
diff --git a/src/assets/svg/48danmunorm.d.svg.ts b/src/assets/svg/48danmunorm.d.svg.ts
new file mode 100644
index 0000000..bd061a8
--- /dev/null
+++ b/src/assets/svg/48danmunorm.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmunorm: string;
+export default svg_48danmunorm;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-normal.svg b/src/assets/svg/48danmunorm.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-normal.svg
rename to src/assets/svg/48danmunorm.svg
diff --git a/src/assets/svg/48danmunormal.d.svg.ts b/src/assets/svg/48danmunormal.d.svg.ts
new file mode 100644
index 0000000..d15d22a
--- /dev/null
+++ b/src/assets/svg/48danmunormal.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmunormal: string;
+export default svg_48danmunormal;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-1.svg b/src/assets/svg/48danmunormal.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-1.svg
rename to src/assets/svg/48danmunormal.svg
diff --git a/src/assets/svg/48danmuspe.d.svg.ts b/src/assets/svg/48danmuspe.d.svg.ts
new file mode 100644
index 0000000..455d8f7
--- /dev/null
+++ b/src/assets/svg/48danmuspe.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmuspe: string;
+export default svg_48danmuspe;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-7.svg b/src/assets/svg/48danmuspe.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-7.svg
rename to src/assets/svg/48danmuspe.svg
diff --git a/src/assets/svg/48danmutext.d.svg.ts b/src/assets/svg/48danmutext.d.svg.ts
new file mode 100644
index 0000000..b12f914
--- /dev/null
+++ b/src/assets/svg/48danmutext.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmutext: string;
+export default svg_48danmutext;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-text.svg b/src/assets/svg/48danmutext.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-text.svg
rename to src/assets/svg/48danmutext.svg
diff --git a/src/assets/svg/48danmutop.d.svg.ts b/src/assets/svg/48danmutop.d.svg.ts
new file mode 100644
index 0000000..98a038a
--- /dev/null
+++ b/src/assets/svg/48danmutop.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmutop: string;
+export default svg_48danmutop;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-mode-5.svg b/src/assets/svg/48danmutop.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-mode-5.svg
rename to src/assets/svg/48danmutop.svg
diff --git a/src/assets/svg/48danmuunreg.d.svg.ts b/src/assets/svg/48danmuunreg.d.svg.ts
new file mode 100644
index 0000000..19a6a64
--- /dev/null
+++ b/src/assets/svg/48danmuunreg.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48danmuunreg: string;
+export default svg_48danmuunreg;
\ No newline at end of file
diff --git a/src/player/assets/svg/danmaku-unregister.svg b/src/assets/svg/48danmuunreg.svg
similarity index 100%
rename from src/player/assets/svg/danmaku-unregister.svg
rename to src/assets/svg/48danmuunreg.svg
diff --git a/src/assets/svg/48kongjian.d.svg.ts b/src/assets/svg/48kongjian.d.svg.ts
new file mode 100644
index 0000000..057d92d
--- /dev/null
+++ b/src/assets/svg/48kongjian.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48kongjian: string;
+export default svg_48kongjian;
\ No newline at end of file
diff --git a/src/player/assets/svg/qqzone.svg b/src/assets/svg/48kongjian.svg
similarity index 100%
rename from src/player/assets/svg/qqzone.svg
rename to src/assets/svg/48kongjian.svg
diff --git a/src/assets/svg/48qq.d.svg.ts b/src/assets/svg/48qq.d.svg.ts
new file mode 100644
index 0000000..071d77f
--- /dev/null
+++ b/src/assets/svg/48qq.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48qq: string;
+export default svg_48qq;
\ No newline at end of file
diff --git a/src/player/assets/svg/qq.svg b/src/assets/svg/48qq.svg
similarity index 100%
rename from src/player/assets/svg/qq.svg
rename to src/assets/svg/48qq.svg
diff --git a/src/assets/svg/48tieba.d.svg.ts b/src/assets/svg/48tieba.d.svg.ts
new file mode 100644
index 0000000..3d7c2ca
--- /dev/null
+++ b/src/assets/svg/48tieba.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48tieba: string;
+export default svg_48tieba;
\ No newline at end of file
diff --git a/src/player/assets/svg/tieba.svg b/src/assets/svg/48tieba.svg
similarity index 100%
rename from src/player/assets/svg/tieba.svg
rename to src/assets/svg/48tieba.svg
diff --git a/src/assets/svg/48weibo.d.svg.ts b/src/assets/svg/48weibo.d.svg.ts
new file mode 100644
index 0000000..985661c
--- /dev/null
+++ b/src/assets/svg/48weibo.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_48weibo: string;
+export default svg_48weibo;
\ No newline at end of file
diff --git a/src/player/assets/svg/weibo.svg b/src/assets/svg/48weibo.svg
similarity index 100%
rename from src/player/assets/svg/weibo.svg
rename to src/assets/svg/48weibo.svg
diff --git a/src/assets/svg/Navbar_logo.d.svg.ts b/src/assets/svg/Navbar_logo.d.svg.ts
new file mode 100644
index 0000000..6aa6e3b
--- /dev/null
+++ b/src/assets/svg/Navbar_logo.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_Navbar_logo: string;
+export default svg_Navbar_logo;
\ No newline at end of file
diff --git a/src/player/assets/svg/bilibili.svg b/src/assets/svg/Navbar_logo.svg
similarity index 100%
rename from src/player/assets/svg/bilibili.svg
rename to src/assets/svg/Navbar_logo.svg
diff --git a/src/assets/svg/Navbar_mobile.d.svg.ts b/src/assets/svg/Navbar_mobile.d.svg.ts
new file mode 100644
index 0000000..35f9fbf
--- /dev/null
+++ b/src/assets/svg/Navbar_mobile.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_Navbar_mobile: string;
+export default svg_Navbar_mobile;
\ No newline at end of file
diff --git a/src/player/assets/svg/mobile.svg b/src/assets/svg/Navbar_mobile.svg
similarity index 100%
rename from src/player/assets/svg/mobile.svg
rename to src/assets/svg/Navbar_mobile.svg
diff --git a/src/assets/svg/UP.d.svg.ts b/src/assets/svg/UP.d.svg.ts
new file mode 100644
index 0000000..fc6d93c
--- /dev/null
+++ b/src/assets/svg/UP.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_UP: string;
+export default svg_UP;
\ No newline at end of file
diff --git a/src/player/assets/svg/upper.svg b/src/assets/svg/UP.svg
similarity index 100%
rename from src/player/assets/svg/upper.svg
rename to src/assets/svg/UP.svg
diff --git a/src/assets/svg/activit.d.svg.ts b/src/assets/svg/activit.d.svg.ts
new file mode 100644
index 0000000..08d5e6e
--- /dev/null
+++ b/src/assets/svg/activit.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_activit: string;
+export default svg_activit;
\ No newline at end of file
diff --git a/src/player/assets/svg/activity.svg b/src/assets/svg/activit.svg
similarity index 100%
rename from src/player/assets/svg/activity.svg
rename to src/assets/svg/activit.svg
diff --git a/src/player/assets/svg/ad.d.svg.ts b/src/assets/svg/ad.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/ad.d.svg.ts
rename to src/assets/svg/ad.d.svg.ts
diff --git a/src/player/assets/svg/ad.svg b/src/assets/svg/ad.svg
similarity index 100%
rename from src/player/assets/svg/ad.svg
rename to src/assets/svg/ad.svg
diff --git a/src/player/assets/svg/anime.d.svg.ts b/src/assets/svg/anime.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/anime.d.svg.ts
rename to src/assets/svg/anime.d.svg.ts
diff --git a/src/player/assets/svg/anime.svg b/src/assets/svg/anime.svg
similarity index 100%
rename from src/player/assets/svg/anime.svg
rename to src/assets/svg/anime.svg
diff --git a/src/assets/svg/biankuangxiaosanjiaoyoushang.d.svg.ts b/src/assets/svg/biankuangxiaosanjiaoyoushang.d.svg.ts
new file mode 100644
index 0000000..83ab7a9
--- /dev/null
+++ b/src/assets/svg/biankuangxiaosanjiaoyoushang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biankuangxiaosanjiaoyoushang: string;
+export default svg_biankuangxiaosanjiaoyoushang;
\ No newline at end of file
diff --git a/src/player/assets/svg/triangle-start-end.svg b/src/assets/svg/biankuangxiaosanjiaoyoushang.svg
similarity index 100%
rename from src/player/assets/svg/triangle-start-end.svg
rename to src/assets/svg/biankuangxiaosanjiaoyoushang.svg
diff --git a/src/assets/svg/biankuangxiaosanjiaoyouxia.d.svg.ts b/src/assets/svg/biankuangxiaosanjiaoyouxia.d.svg.ts
new file mode 100644
index 0000000..30fcaa2
--- /dev/null
+++ b/src/assets/svg/biankuangxiaosanjiaoyouxia.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biankuangxiaosanjiaoyouxia: string;
+export default svg_biankuangxiaosanjiaoyouxia;
\ No newline at end of file
diff --git a/src/player/assets/svg/triangle-end-end.svg b/src/assets/svg/biankuangxiaosanjiaoyouxia.svg
similarity index 100%
rename from src/player/assets/svg/triangle-end-end.svg
rename to src/assets/svg/biankuangxiaosanjiaoyouxia.svg
diff --git a/src/assets/svg/biankuangxiaosanjiaozuoshang.d.svg.ts b/src/assets/svg/biankuangxiaosanjiaozuoshang.d.svg.ts
new file mode 100644
index 0000000..39a7b63
--- /dev/null
+++ b/src/assets/svg/biankuangxiaosanjiaozuoshang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biankuangxiaosanjiaozuoshang: string;
+export default svg_biankuangxiaosanjiaozuoshang;
\ No newline at end of file
diff --git a/src/player/assets/svg/triangle-start-start.svg b/src/assets/svg/biankuangxiaosanjiaozuoshang.svg
similarity index 100%
rename from src/player/assets/svg/triangle-start-start.svg
rename to src/assets/svg/biankuangxiaosanjiaozuoshang.svg
diff --git a/src/assets/svg/biankuangxiaosanjiaozuoxia.d.svg.ts b/src/assets/svg/biankuangxiaosanjiaozuoxia.d.svg.ts
new file mode 100644
index 0000000..6206fdc
--- /dev/null
+++ b/src/assets/svg/biankuangxiaosanjiaozuoxia.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biankuangxiaosanjiaozuoxia: string;
+export default svg_biankuangxiaosanjiaozuoxia;
\ No newline at end of file
diff --git a/src/player/assets/svg/triangle-end-start.svg b/src/assets/svg/biankuangxiaosanjiaozuoxia.svg
similarity index 100%
rename from src/player/assets/svg/triangle-end-start.svg
rename to src/assets/svg/biankuangxiaosanjiaozuoxia.svg
diff --git a/src/assets/svg/biaotizhuangshiyou.d.svg.ts b/src/assets/svg/biaotizhuangshiyou.d.svg.ts
new file mode 100644
index 0000000..4ad77f0
--- /dev/null
+++ b/src/assets/svg/biaotizhuangshiyou.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biaotizhuangshiyou: string;
+export default svg_biaotizhuangshiyou;
\ No newline at end of file
diff --git a/src/player/assets/svg/nailhead-right.svg b/src/assets/svg/biaotizhuangshiyou.svg
similarity index 100%
rename from src/player/assets/svg/nailhead-right.svg
rename to src/assets/svg/biaotizhuangshiyou.svg
diff --git a/src/assets/svg/biaotizhuangshizuo.d.svg.ts b/src/assets/svg/biaotizhuangshizuo.d.svg.ts
new file mode 100644
index 0000000..7d4b958
--- /dev/null
+++ b/src/assets/svg/biaotizhuangshizuo.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_biaotizhuangshizuo: string;
+export default svg_biaotizhuangshizuo;
\ No newline at end of file
diff --git a/src/player/assets/svg/nailhead-left.svg b/src/assets/svg/biaotizhuangshizuo.svg
similarity index 100%
rename from src/player/assets/svg/nailhead-left.svg
rename to src/assets/svg/biaotizhuangshizuo.svg
diff --git a/src/assets/svg/bilibili-tv.d.svg.ts b/src/assets/svg/bilibili-tv.d.svg.ts
new file mode 100644
index 0000000..76229b8
--- /dev/null
+++ b/src/assets/svg/bilibili-tv.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_bilibili_tv: string;
+export default svg_bilibili_tv;
\ No newline at end of file
diff --git a/src/player/assets/svg/tv.svg b/src/assets/svg/bilibili-tv.svg
similarity index 100%
rename from src/player/assets/svg/tv.svg
rename to src/assets/svg/bilibili-tv.svg
diff --git a/src/player/assets/svg/blackroom.d.svg.ts b/src/assets/svg/blackroom.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/blackroom.d.svg.ts
rename to src/assets/svg/blackroom.d.svg.ts
diff --git a/src/player/assets/svg/blackroom.svg b/src/assets/svg/blackroom.svg
similarity index 100%
rename from src/player/assets/svg/blackroom.svg
rename to src/assets/svg/blackroom.svg
diff --git a/src/assets/svg/blingblingl.d.svg.ts b/src/assets/svg/blingblingl.d.svg.ts
new file mode 100644
index 0000000..77bea33
--- /dev/null
+++ b/src/assets/svg/blingblingl.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_blingblingl: string;
+export default svg_blingblingl;
\ No newline at end of file
diff --git a/src/player/assets/svg/blingbling-left.svg b/src/assets/svg/blingblingl.svg
similarity index 100%
rename from src/player/assets/svg/blingbling-left.svg
rename to src/assets/svg/blingblingl.svg
diff --git a/src/assets/svg/blingblingr.d.svg.ts b/src/assets/svg/blingblingr.d.svg.ts
new file mode 100644
index 0000000..e36ac9a
--- /dev/null
+++ b/src/assets/svg/blingblingr.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_blingblingr: string;
+export default svg_blingblingr;
\ No newline at end of file
diff --git a/src/player/assets/svg/blingbling-right.svg b/src/assets/svg/blingblingr.svg
similarity index 100%
rename from src/player/assets/svg/blingbling-right.svg
rename to src/assets/svg/blingblingr.svg
diff --git a/src/assets/svg/bofang.d.svg.ts b/src/assets/svg/bofang.d.svg.ts
new file mode 100644
index 0000000..917ce1d
--- /dev/null
+++ b/src/assets/svg/bofang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_bofang: string;
+export default svg_bofang;
\ No newline at end of file
diff --git a/src/assets/svg/bofang.svg b/src/assets/svg/bofang.svg
new file mode 100644
index 0000000..e8454d3
--- /dev/null
+++ b/src/assets/svg/bofang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/player/assets/svg/cinema.d.svg.ts b/src/assets/svg/cinema.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/cinema.d.svg.ts
rename to src/assets/svg/cinema.d.svg.ts
diff --git a/src/player/assets/svg/cinema.svg b/src/assets/svg/cinema.svg
similarity index 100%
rename from src/player/assets/svg/cinema.svg
rename to src/assets/svg/cinema.svg
diff --git a/src/player/assets/svg/cinephile.d.svg.ts b/src/assets/svg/cinephile.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/cinephile.d.svg.ts
rename to src/assets/svg/cinephile.d.svg.ts
diff --git a/src/player/assets/svg/cinephile.svg b/src/assets/svg/cinephile.svg
similarity index 100%
rename from src/player/assets/svg/cinephile.svg
rename to src/assets/svg/cinephile.svg
diff --git a/src/player/assets/svg/close.d.svg.ts b/src/assets/svg/close.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/close.d.svg.ts
rename to src/assets/svg/close.d.svg.ts
diff --git a/src/player/assets/svg/cancel.svg b/src/assets/svg/close.svg
similarity index 100%
rename from src/player/assets/svg/cancel.svg
rename to src/assets/svg/close.svg
diff --git a/src/player/assets/svg/complete.d.svg.ts b/src/assets/svg/complete.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/complete.d.svg.ts
rename to src/assets/svg/complete.d.svg.ts
diff --git a/src/player/assets/svg/complete.svg b/src/assets/svg/complete.svg
similarity index 100%
rename from src/player/assets/svg/complete.svg
rename to src/assets/svg/complete.svg
diff --git a/src/player/assets/svg/dance.d.svg.ts b/src/assets/svg/dance.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/dance.d.svg.ts
rename to src/assets/svg/dance.d.svg.ts
diff --git a/src/player/assets/svg/dance.svg b/src/assets/svg/dance.svg
similarity index 100%
rename from src/player/assets/svg/dance.svg
rename to src/assets/svg/dance.svg
diff --git a/src/assets/svg/daoxubofang.d.svg.ts b/src/assets/svg/daoxubofang.d.svg.ts
new file mode 100644
index 0000000..85b5f77
--- /dev/null
+++ b/src/assets/svg/daoxubofang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_daoxubofang: string;
+export default svg_daoxubofang;
\ No newline at end of file
diff --git a/src/player/assets/svg/reverse.svg b/src/assets/svg/daoxubofang.svg
similarity index 100%
rename from src/player/assets/svg/reverse.svg
rename to src/assets/svg/daoxubofang.svg
diff --git a/src/player/assets/svg/digital.d.svg.ts b/src/assets/svg/digital.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/digital.d.svg.ts
rename to src/assets/svg/digital.d.svg.ts
diff --git a/src/player/assets/svg/digital.svg b/src/assets/svg/digital.svg
similarity index 100%
rename from src/player/assets/svg/digital.svg
rename to src/assets/svg/digital.svg
diff --git a/src/player/assets/svg/douga.d.svg.ts b/src/assets/svg/douga.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/douga.d.svg.ts
rename to src/assets/svg/douga.d.svg.ts
diff --git a/src/player/assets/svg/douga.svg b/src/assets/svg/douga.svg
similarity index 100%
rename from src/player/assets/svg/douga.svg
rename to src/assets/svg/douga.svg
diff --git a/src/player/assets/svg/ent.d.svg.ts b/src/assets/svg/ent.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/ent.d.svg.ts
rename to src/assets/svg/ent.d.svg.ts
diff --git a/src/player/assets/svg/ent.svg b/src/assets/svg/ent.svg
similarity index 100%
rename from src/player/assets/svg/ent.svg
rename to src/assets/svg/ent.svg
diff --git a/src/player/assets/svg/fashion.d.svg.ts b/src/assets/svg/fashion.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/fashion.d.svg.ts
rename to src/assets/svg/fashion.d.svg.ts
diff --git a/src/player/assets/svg/fashion.svg b/src/assets/svg/fashion.svg
similarity index 100%
rename from src/player/assets/svg/fashion.svg
rename to src/assets/svg/fashion.svg
diff --git a/src/player/assets/svg/game.d.svg.ts b/src/assets/svg/game.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/game.d.svg.ts
rename to src/assets/svg/game.d.svg.ts
diff --git a/src/player/assets/svg/game.svg b/src/assets/svg/game.svg
similarity index 100%
rename from src/player/assets/svg/game.svg
rename to src/assets/svg/game.svg
diff --git a/src/assets/svg/general_pullup_s.d.svg.ts b/src/assets/svg/general_pullup_s.d.svg.ts
new file mode 100644
index 0000000..1a0be11
--- /dev/null
+++ b/src/assets/svg/general_pullup_s.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_general_pullup_s: string;
+export default svg_general_pullup_s;
\ No newline at end of file
diff --git a/src/player/assets/svg/pull-up.svg b/src/assets/svg/general_pullup_s.svg
similarity index 100%
rename from src/player/assets/svg/pull-up.svg
rename to src/assets/svg/general_pullup_s.svg
diff --git a/src/assets/svg/general_search.d.svg.ts b/src/assets/svg/general_search.d.svg.ts
new file mode 100644
index 0000000..99fda62
--- /dev/null
+++ b/src/assets/svg/general_search.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_general_search: string;
+export default svg_general_search;
\ No newline at end of file
diff --git a/src/player/assets/svg/search.svg b/src/assets/svg/general_search.svg
similarity index 100%
rename from src/player/assets/svg/search.svg
rename to src/assets/svg/general_search.svg
diff --git a/src/assets/svg/general_upload.d.svg.ts b/src/assets/svg/general_upload.d.svg.ts
new file mode 100644
index 0000000..12bef7a
--- /dev/null
+++ b/src/assets/svg/general_upload.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_general_upload: string;
+export default svg_general_upload;
\ No newline at end of file
diff --git a/src/player/assets/svg/upload.svg b/src/assets/svg/general_upload.svg
similarity index 100%
rename from src/player/assets/svg/upload.svg
rename to src/assets/svg/general_upload.svg
diff --git a/src/assets/svg/guochuang.d.svg.ts b/src/assets/svg/guochuang.d.svg.ts
new file mode 100644
index 0000000..9ac3525
--- /dev/null
+++ b/src/assets/svg/guochuang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_guochuang: string;
+export default svg_guochuang;
\ No newline at end of file
diff --git a/src/player/assets/svg/donghua.svg b/src/assets/svg/guochuang.svg
similarity index 100%
rename from src/player/assets/svg/donghua.svg
rename to src/assets/svg/guochuang.svg
diff --git a/src/assets/svg/ic_gamecenter_blue.d.svg.ts b/src/assets/svg/ic_gamecenter_blue.d.svg.ts
new file mode 100644
index 0000000..c7c3195
--- /dev/null
+++ b/src/assets/svg/ic_gamecenter_blue.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gamecenter_blue: string;
+export default svg_ic_gamecenter_blue;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gamecenter_blue.svg b/src/assets/svg/ic_gamecenter_blue.svg
new file mode 100644
index 0000000..b062816
--- /dev/null
+++ b/src/assets/svg/ic_gamecenter_blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_arrow_right_light.d.svg.ts b/src/assets/svg/ic_gc_arrow_right_light.d.svg.ts
new file mode 100644
index 0000000..ec7f6f4
--- /dev/null
+++ b/src/assets/svg/ic_gc_arrow_right_light.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_arrow_right_light: string;
+export default svg_ic_gc_arrow_right_light;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_arrow_right_light.svg b/src/assets/svg/ic_gc_arrow_right_light.svg
new file mode 100644
index 0000000..720f890
--- /dev/null
+++ b/src/assets/svg/ic_gc_arrow_right_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_biggift.d.svg.ts b/src/assets/svg/ic_gc_biggift.d.svg.ts
new file mode 100644
index 0000000..ff43802
--- /dev/null
+++ b/src/assets/svg/ic_gc_biggift.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_biggift: string;
+export default svg_ic_gc_biggift;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_biggift.svg b/src/assets/svg/ic_gc_biggift.svg
new file mode 100644
index 0000000..93c33fa
--- /dev/null
+++ b/src/assets/svg/ic_gc_biggift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_close_circle.d.svg.ts b/src/assets/svg/ic_gc_close_circle.d.svg.ts
new file mode 100644
index 0000000..01765f4
--- /dev/null
+++ b/src/assets/svg/ic_gc_close_circle.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_close_circle: string;
+export default svg_ic_gc_close_circle;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_close_circle.svg b/src/assets/svg/ic_gc_close_circle.svg
new file mode 100644
index 0000000..78a3fed
--- /dev/null
+++ b/src/assets/svg/ic_gc_close_circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_close_circle_full.d.svg.ts b/src/assets/svg/ic_gc_close_circle_full.d.svg.ts
new file mode 100644
index 0000000..b0ba2f2
--- /dev/null
+++ b/src/assets/svg/ic_gc_close_circle_full.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_close_circle_full: string;
+export default svg_ic_gc_close_circle_full;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_close_circle_full.svg b/src/assets/svg/ic_gc_close_circle_full.svg
new file mode 100644
index 0000000..be491d8
--- /dev/null
+++ b/src/assets/svg/ic_gc_close_circle_full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_comment_more.d.svg.ts b/src/assets/svg/ic_gc_comment_more.d.svg.ts
new file mode 100644
index 0000000..0ce4a0c
--- /dev/null
+++ b/src/assets/svg/ic_gc_comment_more.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_comment_more: string;
+export default svg_ic_gc_comment_more;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_comment_more.svg b/src/assets/svg/ic_gc_comment_more.svg
new file mode 100644
index 0000000..ef3b86f
--- /dev/null
+++ b/src/assets/svg/ic_gc_comment_more.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_follow_video.d.svg.ts b/src/assets/svg/ic_gc_follow_video.d.svg.ts
new file mode 100644
index 0000000..673a41a
--- /dev/null
+++ b/src/assets/svg/ic_gc_follow_video.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_follow_video: string;
+export default svg_ic_gc_follow_video;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_follow_video.svg b/src/assets/svg/ic_gc_follow_video.svg
new file mode 100644
index 0000000..cf335bf
--- /dev/null
+++ b/src/assets/svg/ic_gc_follow_video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_paused.d.svg.ts b/src/assets/svg/ic_gc_game_audio_paused.d.svg.ts
new file mode 100644
index 0000000..41afd11
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_paused.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_game_audio_paused: string;
+export default svg_ic_gc_game_audio_paused;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_paused.svg b/src/assets/svg/ic_gc_game_audio_paused.svg
new file mode 100644
index 0000000..61f78ff
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_paused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_play.d.svg.ts b/src/assets/svg/ic_gc_game_audio_play.d.svg.ts
new file mode 100644
index 0000000..6f2aa67
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_play.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_game_audio_play: string;
+export default svg_ic_gc_game_audio_play;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_play.svg b/src/assets/svg/ic_gc_game_audio_play.svg
new file mode 100644
index 0000000..7797324
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_play.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_wave.d.svg.ts b/src/assets/svg/ic_gc_game_audio_wave.d.svg.ts
new file mode 100644
index 0000000..2fec7ba
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_wave.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_game_audio_wave: string;
+export default svg_ic_gc_game_audio_wave;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_audio_wave.svg b/src/assets/svg/ic_gc_game_audio_wave.svg
new file mode 100644
index 0000000..696b4aa
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_audio_wave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_lamp.d.svg.ts b/src/assets/svg/ic_gc_game_lamp.d.svg.ts
new file mode 100644
index 0000000..7cc30ec
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_lamp.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_game_lamp: string;
+export default svg_ic_gc_game_lamp;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_game_lamp.svg b/src/assets/svg/ic_gc_game_lamp.svg
new file mode 100644
index 0000000..2ee899e
--- /dev/null
+++ b/src/assets/svg/ic_gc_game_lamp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_guide_all.d.svg.ts b/src/assets/svg/ic_gc_guide_all.d.svg.ts
new file mode 100644
index 0000000..69cd09e
--- /dev/null
+++ b/src/assets/svg/ic_gc_guide_all.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_guide_all: string;
+export default svg_ic_gc_guide_all;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_guide_all.svg b/src/assets/svg/ic_gc_guide_all.svg
new file mode 100644
index 0000000..5ff5733
--- /dev/null
+++ b/src/assets/svg/ic_gc_guide_all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_letters_bg.d.svg.ts b/src/assets/svg/ic_gc_letters_bg.d.svg.ts
new file mode 100644
index 0000000..6758ed9
--- /dev/null
+++ b/src/assets/svg/ic_gc_letters_bg.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_letters_bg: string;
+export default svg_ic_gc_letters_bg;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_letters_bg.svg b/src/assets/svg/ic_gc_letters_bg.svg
new file mode 100644
index 0000000..0fdd403
--- /dev/null
+++ b/src/assets/svg/ic_gc_letters_bg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_biggift.d.svg.ts b/src/assets/svg/ic_gc_me_biggift.d.svg.ts
new file mode 100644
index 0000000..2063476
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_biggift.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_biggift: string;
+export default svg_ic_gc_me_biggift;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_biggift.svg b/src/assets/svg/ic_gc_me_biggift.svg
new file mode 100644
index 0000000..26c6a0d
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_biggift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_blog.d.svg.ts b/src/assets/svg/ic_gc_me_blog.d.svg.ts
new file mode 100644
index 0000000..580130b
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_blog.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_blog: string;
+export default svg_ic_gc_me_blog;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_blog.svg b/src/assets/svg/ic_gc_me_blog.svg
new file mode 100644
index 0000000..e3d7f53
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_blog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_bought.d.svg.ts b/src/assets/svg/ic_gc_me_bought.d.svg.ts
new file mode 100644
index 0000000..7fcf83e
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_bought.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_bought: string;
+export default svg_ic_gc_me_bought;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_bought.svg b/src/assets/svg/ic_gc_me_bought.svg
new file mode 100644
index 0000000..c15dcbe
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_bought.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_focus.d.svg.ts b/src/assets/svg/ic_gc_me_focus.d.svg.ts
new file mode 100644
index 0000000..caa1543
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_focus.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_focus: string;
+export default svg_ic_gc_me_focus;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_focus.svg b/src/assets/svg/ic_gc_me_focus.svg
new file mode 100644
index 0000000..32b434d
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_focus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_gifts.d.svg.ts b/src/assets/svg/ic_gc_me_gifts.d.svg.ts
new file mode 100644
index 0000000..5b7c19a
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_gifts.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_gifts: string;
+export default svg_ic_gc_me_gifts;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_gifts.svg b/src/assets/svg/ic_gc_me_gifts.svg
new file mode 100644
index 0000000..86a7a8b
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_gifts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_mycomment.d.svg.ts b/src/assets/svg/ic_gc_me_mycomment.d.svg.ts
new file mode 100644
index 0000000..4ea3c10
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_mycomment.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_mycomment: string;
+export default svg_ic_gc_me_mycomment;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_mycomment.svg b/src/assets/svg/ic_gc_me_mycomment.svg
new file mode 100644
index 0000000..ab34b23
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_mycomment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_ordered.d.svg.ts b/src/assets/svg/ic_gc_me_ordered.d.svg.ts
new file mode 100644
index 0000000..2e112d5
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_ordered.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_ordered: string;
+export default svg_ic_gc_me_ordered;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_ordered.svg b/src/assets/svg/ic_gc_me_ordered.svg
new file mode 100644
index 0000000..848a0a5
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_ordered.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_played.d.svg.ts b/src/assets/svg/ic_gc_me_played.d.svg.ts
new file mode 100644
index 0000000..55ca682
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_played.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_played: string;
+export default svg_ic_gc_me_played;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_played.svg b/src/assets/svg/ic_gc_me_played.svg
new file mode 100644
index 0000000..8612414
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_played.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_services.d.svg.ts b/src/assets/svg/ic_gc_me_services.d.svg.ts
new file mode 100644
index 0000000..1d7d967
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_services.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_services: string;
+export default svg_ic_gc_me_services;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_services.svg b/src/assets/svg/ic_gc_me_services.svg
new file mode 100644
index 0000000..ba7b55d
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_services.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_setup.d.svg.ts b/src/assets/svg/ic_gc_me_setup.d.svg.ts
new file mode 100644
index 0000000..6cdfe2d
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_setup.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_setup: string;
+export default svg_ic_gc_me_setup;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_setup.svg b/src/assets/svg/ic_gc_me_setup.svg
new file mode 100644
index 0000000..32827d9
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_setup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_suggestion.d.svg.ts b/src/assets/svg/ic_gc_me_suggestion.d.svg.ts
new file mode 100644
index 0000000..41871d6
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_suggestion.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_suggestion: string;
+export default svg_ic_gc_me_suggestion;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_suggestion.svg b/src/assets/svg/ic_gc_me_suggestion.svg
new file mode 100644
index 0000000..4461efa
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_suggestion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_teenagers.d.svg.ts b/src/assets/svg/ic_gc_me_teenagers.d.svg.ts
new file mode 100644
index 0000000..70f1b66
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_teenagers.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_teenagers: string;
+export default svg_ic_gc_me_teenagers;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_teenagers.svg b/src/assets/svg/ic_gc_me_teenagers.svg
new file mode 100644
index 0000000..2ac9e26
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_teenagers.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_updata.d.svg.ts b/src/assets/svg/ic_gc_me_updata.d.svg.ts
new file mode 100644
index 0000000..7525a78
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_updata.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_me_updata: string;
+export default svg_ic_gc_me_updata;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_me_updata.svg b/src/assets/svg/ic_gc_me_updata.svg
new file mode 100644
index 0000000..d70bd13
--- /dev/null
+++ b/src/assets/svg/ic_gc_me_updata.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_message.d.svg.ts b/src/assets/svg/ic_gc_message.d.svg.ts
new file mode 100644
index 0000000..fb3c828
--- /dev/null
+++ b/src/assets/svg/ic_gc_message.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_message: string;
+export default svg_ic_gc_message;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_message.svg b/src/assets/svg/ic_gc_message.svg
new file mode 100644
index 0000000..f520523
--- /dev/null
+++ b/src/assets/svg/ic_gc_message.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_quote01.d.svg.ts b/src/assets/svg/ic_gc_quote01.d.svg.ts
new file mode 100644
index 0000000..29fe587
--- /dev/null
+++ b/src/assets/svg/ic_gc_quote01.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_quote01: string;
+export default svg_ic_gc_quote01;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_quote01.svg b/src/assets/svg/ic_gc_quote01.svg
new file mode 100644
index 0000000..9886489
--- /dev/null
+++ b/src/assets/svg/ic_gc_quote01.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_search_clear.d.svg.ts b/src/assets/svg/ic_gc_search_clear.d.svg.ts
new file mode 100644
index 0000000..05bbe44
--- /dev/null
+++ b/src/assets/svg/ic_gc_search_clear.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_search_clear: string;
+export default svg_ic_gc_search_clear;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_search_clear.svg b/src/assets/svg/ic_gc_search_clear.svg
new file mode 100644
index 0000000..66ceb47
--- /dev/null
+++ b/src/assets/svg/ic_gc_search_clear.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_star_full.d.svg.ts b/src/assets/svg/ic_gc_star_full.d.svg.ts
new file mode 100644
index 0000000..18dabad
--- /dev/null
+++ b/src/assets/svg/ic_gc_star_full.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_gc_star_full: string;
+export default svg_ic_gc_star_full;
\ No newline at end of file
diff --git a/src/assets/svg/ic_gc_star_full.svg b/src/assets/svg/ic_gc_star_full.svg
new file mode 100644
index 0000000..659fa3d
--- /dev/null
+++ b/src/assets/svg/ic_gc_star_full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/ic_partition_broadca.d.svg.ts b/src/assets/svg/ic_partition_broadca.d.svg.ts
new file mode 100644
index 0000000..322cbd4
--- /dev/null
+++ b/src/assets/svg/ic_partition_broadca.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ic_partition_broadca: string;
+export default svg_ic_partition_broadca;
\ No newline at end of file
diff --git a/src/player/assets/svg/broadcast.svg b/src/assets/svg/ic_partition_broadca.svg
similarity index 100%
rename from src/player/assets/svg/broadcast.svg
rename to src/assets/svg/ic_partition_broadca.svg
diff --git a/src/assets/svg/ico_backstage.d.svg.ts b/src/assets/svg/ico_backstage.d.svg.ts
new file mode 100644
index 0000000..e96b1b4
--- /dev/null
+++ b/src/assets/svg/ico_backstage.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_backstage: string;
+export default svg_ico_backstage;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-backstage.svg b/src/assets/svg/ico_backstage.svg
similarity index 100%
rename from src/player/assets/svg/icon-backstage.svg
rename to src/assets/svg/ico_backstage.svg
diff --git a/src/assets/svg/ico_collection_ful.d.svg.ts b/src/assets/svg/ico_collection_ful.d.svg.ts
new file mode 100644
index 0000000..3207486
--- /dev/null
+++ b/src/assets/svg/ico_collection_ful.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_collection_ful: string;
+export default svg_ico_collection_ful;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-collection-full.svg b/src/assets/svg/ico_collection_ful.svg
similarity index 100%
rename from src/player/assets/svg/icon-collection-full.svg
rename to src/assets/svg/ico_collection_ful.svg
diff --git a/src/assets/svg/ico_collection_lin.d.svg.ts b/src/assets/svg/ico_collection_lin.d.svg.ts
new file mode 100644
index 0000000..5ef33bb
--- /dev/null
+++ b/src/assets/svg/ico_collection_lin.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_collection_lin: string;
+export default svg_ico_collection_lin;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-collection.svg b/src/assets/svg/ico_collection_lin.svg
similarity index 100%
rename from src/player/assets/svg/icon-collection.svg
rename to src/assets/svg/ico_collection_lin.svg
diff --git a/src/assets/svg/ico_del.d.svg.ts b/src/assets/svg/ico_del.d.svg.ts
new file mode 100644
index 0000000..81edf9c
--- /dev/null
+++ b/src/assets/svg/ico_del.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_del: string;
+export default svg_ico_del;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-delete.svg b/src/assets/svg/ico_del.svg
similarity index 100%
rename from src/player/assets/svg/icon-delete.svg
rename to src/assets/svg/ico_del.svg
diff --git a/src/assets/svg/ico_ignore.d.svg.ts b/src/assets/svg/ico_ignore.d.svg.ts
new file mode 100644
index 0000000..f296295
--- /dev/null
+++ b/src/assets/svg/ico_ignore.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_ignore: string;
+export default svg_ico_ignore;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-ignore.svg b/src/assets/svg/ico_ignore.svg
similarity index 100%
rename from src/player/assets/svg/icon-ignore.svg
rename to src/assets/svg/ico_ignore.svg
diff --git a/src/assets/svg/ico_move.d.svg.ts b/src/assets/svg/ico_move.d.svg.ts
new file mode 100644
index 0000000..5864858
--- /dev/null
+++ b/src/assets/svg/ico_move.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_move: string;
+export default svg_ico_move;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-move.svg b/src/assets/svg/ico_move.svg
similarity index 100%
rename from src/player/assets/svg/icon-move.svg
rename to src/assets/svg/ico_move.svg
diff --git a/src/assets/svg/ico_protect.d.svg.ts b/src/assets/svg/ico_protect.d.svg.ts
new file mode 100644
index 0000000..f4cfbf2
--- /dev/null
+++ b/src/assets/svg/ico_protect.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_ico_protect: string;
+export default svg_ico_protect;
\ No newline at end of file
diff --git a/src/player/assets/svg/icon-protect.svg b/src/assets/svg/ico_protect.svg
similarity index 100%
rename from src/player/assets/svg/icon-protect.svg
rename to src/assets/svg/ico_protect.svg
diff --git a/src/player/assets/svg/kichiku.d.svg.ts b/src/assets/svg/kichiku.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/kichiku.d.svg.ts
rename to src/assets/svg/kichiku.d.svg.ts
diff --git a/src/player/assets/svg/kichiku.svg b/src/assets/svg/kichiku.svg
similarity index 100%
rename from src/player/assets/svg/kichiku.svg
rename to src/assets/svg/kichiku.svg
diff --git a/src/player/assets/svg/life.d.svg.ts b/src/assets/svg/life.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/life.d.svg.ts
rename to src/assets/svg/life.d.svg.ts
diff --git a/src/player/assets/svg/life.svg b/src/assets/svg/life.svg
similarity index 100%
rename from src/player/assets/svg/life.svg
rename to src/assets/svg/life.svg
diff --git a/src/player/assets/svg/light.d.svg.ts b/src/assets/svg/light.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/light.d.svg.ts
rename to src/assets/svg/light.d.svg.ts
diff --git a/src/player/assets/svg/light.svg b/src/assets/svg/light.svg
similarity index 100%
rename from src/player/assets/svg/light.svg
rename to src/assets/svg/light.svg
diff --git a/src/player/assets/svg/live.d.svg.ts b/src/assets/svg/live.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/live.d.svg.ts
rename to src/assets/svg/live.d.svg.ts
diff --git a/src/player/assets/svg/live.svg b/src/assets/svg/live.svg
similarity index 100%
rename from src/player/assets/svg/live.svg
rename to src/assets/svg/live.svg
diff --git a/src/assets/svg/match.d.svg.ts b/src/assets/svg/match.d.svg.ts
new file mode 100644
index 0000000..898862b
--- /dev/null
+++ b/src/assets/svg/match.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_match: string;
+export default svg_match;
\ No newline at end of file
diff --git a/src/assets/svg/match.svg b/src/assets/svg/match.svg
new file mode 100644
index 0000000..e36ef9e
--- /dev/null
+++ b/src/assets/svg/match.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/player/assets/svg/music.d.svg.ts b/src/assets/svg/music.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/music.d.svg.ts
rename to src/assets/svg/music.d.svg.ts
diff --git a/src/player/assets/svg/music.svg b/src/assets/svg/music.svg
similarity index 100%
rename from src/player/assets/svg/music.svg
rename to src/assets/svg/music.svg
diff --git a/src/player/assets/svg/play-state.d.svg.ts b/src/assets/svg/play-state.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/play-state.d.svg.ts
rename to src/assets/svg/play-state.d.svg.ts
diff --git a/src/player/assets/svg/play-state.svg b/src/assets/svg/play-state.svg
similarity index 100%
rename from src/player/assets/svg/play-state.svg
rename to src/assets/svg/play-state.svg
diff --git a/src/assets/svg/q.d.svg.ts b/src/assets/svg/q.d.svg.ts
new file mode 100644
index 0000000..45223ee
--- /dev/null
+++ b/src/assets/svg/q.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_q: string;
+export default svg_q;
\ No newline at end of file
diff --git a/src/player/assets/svg/question.svg b/src/assets/svg/q.svg
similarity index 100%
rename from src/player/assets/svg/question.svg
rename to src/assets/svg/q.svg
diff --git a/src/assets/svg/radio_default.d.svg.ts b/src/assets/svg/radio_default.d.svg.ts
new file mode 100644
index 0000000..5c2579d
--- /dev/null
+++ b/src/assets/svg/radio_default.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_radio_default: string;
+export default svg_radio_default;
\ No newline at end of file
diff --git a/src/player/assets/svg/radio.svg b/src/assets/svg/radio_default.svg
similarity index 100%
rename from src/player/assets/svg/radio.svg
rename to src/assets/svg/radio_default.svg
diff --git a/src/player/assets/svg/radio-selected.d.svg.ts b/src/assets/svg/radio_selected.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/radio-selected.d.svg.ts
rename to src/assets/svg/radio_selected.d.svg.ts
diff --git a/src/player/assets/svg/radio-selected.svg b/src/assets/svg/radio_selected.svg
similarity index 100%
rename from src/player/assets/svg/radio-selected.svg
rename to src/assets/svg/radio_selected.svg
diff --git a/src/player/assets/svg/read.d.svg.ts b/src/assets/svg/read.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/read.d.svg.ts
rename to src/assets/svg/read.d.svg.ts
diff --git a/src/player/assets/svg/read.svg b/src/assets/svg/read.svg
similarity index 100%
rename from src/player/assets/svg/read.svg
rename to src/assets/svg/read.svg
diff --git a/src/player/assets/svg/repeat-on.d.svg.ts b/src/assets/svg/repeat_on.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/repeat-on.d.svg.ts
rename to src/assets/svg/repeat_on.d.svg.ts
diff --git a/src/assets/svg/repeat_on.svg b/src/assets/svg/repeat_on.svg
new file mode 100644
index 0000000..2af6cee
--- /dev/null
+++ b/src/assets/svg/repeat_on.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/shanchu.d.svg.ts b/src/assets/svg/shanchu.d.svg.ts
new file mode 100644
index 0000000..2ff29dc
--- /dev/null
+++ b/src/assets/svg/shanchu.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_shanchu: string;
+export default svg_shanchu;
\ No newline at end of file
diff --git a/src/player/assets/svg/remove.svg b/src/assets/svg/shanchu.svg
similarity index 100%
rename from src/player/assets/svg/remove.svg
rename to src/assets/svg/shanchu.svg
diff --git a/src/assets/svg/shunxubofang.d.svg.ts b/src/assets/svg/shunxubofang.d.svg.ts
new file mode 100644
index 0000000..6ee7799
--- /dev/null
+++ b/src/assets/svg/shunxubofang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_shunxubofang: string;
+export default svg_shunxubofang;
\ No newline at end of file
diff --git a/src/player/assets/svg/sequence-inline.svg b/src/assets/svg/shunxubofang.svg
similarity index 100%
rename from src/player/assets/svg/sequence-inline.svg
rename to src/assets/svg/shunxubofang.svg
diff --git a/src/assets/svg/shunxubofang1.d.svg.ts b/src/assets/svg/shunxubofang1.d.svg.ts
new file mode 100644
index 0000000..a00d99a
--- /dev/null
+++ b/src/assets/svg/shunxubofang1.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_shunxubofang1: string;
+export default svg_shunxubofang1;
\ No newline at end of file
diff --git a/src/player/assets/svg/sequence-block.svg b/src/assets/svg/shunxubofang1.svg
similarity index 100%
rename from src/player/assets/svg/sequence-block.svg
rename to src/assets/svg/shunxubofang1.svg
diff --git a/src/assets/svg/suijibofang.d.svg.ts b/src/assets/svg/suijibofang.d.svg.ts
new file mode 100644
index 0000000..b77f43e
--- /dev/null
+++ b/src/assets/svg/suijibofang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_suijibofang: string;
+export default svg_suijibofang;
\ No newline at end of file
diff --git a/src/player/assets/svg/random.svg b/src/assets/svg/suijibofang.svg
similarity index 100%
rename from src/player/assets/svg/random.svg
rename to src/assets/svg/suijibofang.svg
diff --git a/src/player/assets/svg/technology.d.svg.ts b/src/assets/svg/technology.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/technology.d.svg.ts
rename to src/assets/svg/technology.d.svg.ts
diff --git a/src/player/assets/svg/technology.svg b/src/assets/svg/technology.svg
similarity index 100%
rename from src/player/assets/svg/technology.svg
rename to src/assets/svg/technology.svg
diff --git a/src/assets/svg/titlel.d.svg.ts b/src/assets/svg/titlel.d.svg.ts
new file mode 100644
index 0000000..b056002
--- /dev/null
+++ b/src/assets/svg/titlel.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_titlel: string;
+export default svg_titlel;
\ No newline at end of file
diff --git a/src/player/assets/svg/title-left.svg b/src/assets/svg/titlel.svg
similarity index 100%
rename from src/player/assets/svg/title-left.svg
rename to src/assets/svg/titlel.svg
diff --git a/src/assets/svg/titler.d.svg.ts b/src/assets/svg/titler.d.svg.ts
new file mode 100644
index 0000000..00a1382
--- /dev/null
+++ b/src/assets/svg/titler.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_titler: string;
+export default svg_titler;
\ No newline at end of file
diff --git a/src/player/assets/svg/title-right.svg b/src/assets/svg/titler.svg
similarity index 100%
rename from src/player/assets/svg/title-right.svg
rename to src/assets/svg/titler.svg
diff --git a/src/player/assets/svg/topic.d.svg.ts b/src/assets/svg/topic.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/topic.d.svg.ts
rename to src/assets/svg/topic.d.svg.ts
diff --git a/src/player/assets/svg/topic.svg b/src/assets/svg/topic.svg
similarity index 100%
rename from src/player/assets/svg/topic.svg
rename to src/assets/svg/topic.svg
diff --git a/src/assets/svg/tuoyuan11.d.svg.ts b/src/assets/svg/tuoyuan11.d.svg.ts
new file mode 100644
index 0000000..975d17b
--- /dev/null
+++ b/src/assets/svg/tuoyuan11.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_tuoyuan11: string;
+export default svg_tuoyuan11;
\ No newline at end of file
diff --git a/src/player/assets/svg/circle.svg b/src/assets/svg/tuoyuan11.svg
similarity index 100%
rename from src/player/assets/svg/circle.svg
rename to src/assets/svg/tuoyuan11.svg
diff --git a/src/assets/svg/txks.d.svg.ts b/src/assets/svg/txks.d.svg.ts
new file mode 100644
index 0000000..c6683f4
--- /dev/null
+++ b/src/assets/svg/txks.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_txks: string;
+export default svg_txks;
\ No newline at end of file
diff --git a/src/player/assets/svg/chat-on.svg b/src/assets/svg/txks.svg
similarity index 100%
rename from src/player/assets/svg/chat-on.svg
rename to src/assets/svg/txks.svg
diff --git a/src/player/assets/svg/wait-choice.d.svg.ts b/src/assets/svg/wait-choice.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/wait-choice.d.svg.ts
rename to src/assets/svg/wait-choice.d.svg.ts
diff --git a/src/player/assets/svg/wait-choice.svg b/src/assets/svg/wait-choice.svg
similarity index 100%
rename from src/player/assets/svg/wait-choice.svg
rename to src/assets/svg/wait-choice.svg
diff --git a/src/player/assets/svg/wait-normal.d.svg.ts b/src/assets/svg/wait-normal.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/wait-normal.d.svg.ts
rename to src/assets/svg/wait-normal.d.svg.ts
diff --git a/src/player/assets/svg/wait-normal.svg b/src/assets/svg/wait-normal.svg
similarity index 100%
rename from src/player/assets/svg/wait-normal.svg
rename to src/assets/svg/wait-normal.svg
diff --git a/src/player/assets/svg/x.d.svg.ts b/src/assets/svg/x.d.svg.ts
similarity index 100%
rename from src/player/assets/svg/x.d.svg.ts
rename to src/assets/svg/x.d.svg.ts
diff --git a/src/player/assets/svg/x.svg b/src/assets/svg/x.svg
similarity index 100%
rename from src/player/assets/svg/x.svg
rename to src/assets/svg/x.svg
diff --git a/src/assets/svg/xiayiji.d.svg.ts b/src/assets/svg/xiayiji.d.svg.ts
new file mode 100644
index 0000000..bc77be9
--- /dev/null
+++ b/src/assets/svg/xiayiji.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_xiayiji: string;
+export default svg_xiayiji;
\ No newline at end of file
diff --git a/src/player/assets/svg/next.svg b/src/assets/svg/xiayiji.svg
similarity index 100%
rename from src/player/assets/svg/next.svg
rename to src/assets/svg/xiayiji.svg
diff --git a/src/assets/svg/xuweixiaodianshitouxiang.d.svg.ts b/src/assets/svg/xuweixiaodianshitouxiang.d.svg.ts
new file mode 100644
index 0000000..6d01e78
--- /dev/null
+++ b/src/assets/svg/xuweixiaodianshitouxiang.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_xuweixiaodianshitouxiang: string;
+export default svg_xuweixiaodianshitouxiang;
\ No newline at end of file
diff --git a/src/player/assets/svg/tv-head.svg b/src/assets/svg/xuweixiaodianshitouxiang.svg
similarity index 100%
rename from src/player/assets/svg/tv-head.svg
rename to src/assets/svg/xuweixiaodianshitouxiang.svg
diff --git a/src/assets/svg/yinpin.d.svg.ts b/src/assets/svg/yinpin.d.svg.ts
new file mode 100644
index 0000000..228ccfd
--- /dev/null
+++ b/src/assets/svg/yinpin.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_yinpin: string;
+export default svg_yinpin;
\ No newline at end of file
diff --git a/src/assets/svg/yinpin.svg b/src/assets/svg/yinpin.svg
new file mode 100644
index 0000000..804bb90
--- /dev/null
+++ b/src/assets/svg/yinpin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg/yizhuifan.d.svg.ts b/src/assets/svg/yizhuifan.d.svg.ts
new file mode 100644
index 0000000..c1072c8
--- /dev/null
+++ b/src/assets/svg/yizhuifan.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_yizhuifan: string;
+export default svg_yizhuifan;
\ No newline at end of file
diff --git a/src/player/assets/svg/love-solid.svg b/src/assets/svg/yizhuifan.svg
similarity index 100%
rename from src/player/assets/svg/love-solid.svg
rename to src/assets/svg/yizhuifan.svg
diff --git a/src/assets/svg/zhuifanshu.d.svg.ts b/src/assets/svg/zhuifanshu.d.svg.ts
new file mode 100644
index 0000000..e346926
--- /dev/null
+++ b/src/assets/svg/zhuifanshu.d.svg.ts
@@ -0,0 +1,2 @@
+declare const svg_zhuifanshu: string;
+export default svg_zhuifanshu;
\ No newline at end of file
diff --git a/src/player/assets/svg/heart.svg b/src/assets/svg/zhuifanshu.svg
similarity index 100%
rename from src/player/assets/svg/heart.svg
rename to src/assets/svg/zhuifanshu.svg
diff --git a/src/build/README.md b/src/build/README.md
new file mode 100644
index 0000000..af74925
--- /dev/null
+++ b/src/build/README.md
@@ -0,0 +1 @@
+开发脚本目录
\ No newline at end of file
diff --git a/scripts/arbitrary-extensions.mjs b/src/build/arbitrary-extensions.ts
similarity index 89%
rename from scripts/arbitrary-extensions.mjs
rename to src/build/arbitrary-extensions.ts
index 06908ef..e28721a 100644
--- a/scripts/arbitrary-extensions.mjs
+++ b/src/build/arbitrary-extensions.ts
@@ -1,13 +1,11 @@
-/**
- * @file 生成非代码文件的定义文件
- */
import fs from 'fs/promises';
/** 非代码文件所在路径 */
const paths = [
- 'src/player/assets/svg',
+ 'src/assets/svg',
];
+// 为非代码文件生成声明文件
for (const path of paths) {
fs.readdir(path).then(d => {
d.forEach(d => {
diff --git a/src/build/esbuild.ts b/src/build/esbuild.ts
new file mode 100644
index 0000000..18b3b87
--- /dev/null
+++ b/src/build/esbuild.ts
@@ -0,0 +1,57 @@
+import { build } from "esbuild";
+import type { PluginBuild } from "esbuild";
+
+const cssConstructStylesheetPlugin = {
+ name: 'css imports',
+ setup(pluginBuild: PluginBuild) {
+ pluginBuild.onLoad({ filter: /\.css$/ }, async args => {
+ if (args.with.type === 'css') {
+ // 编译 CSS 样式文件
+ const result = await build({
+ bundle: true,
+ entryPoints: [args.path],
+ minify: pluginBuild.initialOptions.minify,
+ charset: 'utf8',
+ loader: {
+ '.png': 'base64',
+ '.gif': 'base64',
+ '.svg': 'base64',
+ },
+ write: false,
+ });
+ const contents = `
+ const styles = new CSSStyleSheet();
+ styles.replaceSync(\`${result.outputFiles[0].text}\`);
+ export default styles;`;
+ return { contents, loader: 'js' };
+ }
+ });
+ }
+}
+
+// 编译资源文件
+await build({
+ entryPoints: [
+ 'src/sidebar/index.ts',
+ 'src/options/index.ts',
+ 'src/main/index.ts',
+ ],
+ outdir: 'dist',
+ outbase: "src",
+ bundle: true,
+ minify: true,
+ format: 'iife',
+ sourcemap: true,
+ treeShaking: true,
+ charset: 'utf8',
+ supported: {
+ decorators: false, // 装饰器暂未得到任何浏览器支持
+ },
+ plugins: [cssConstructStylesheetPlugin],
+ define: {
+ __TOTP_KEY__: `'${crypto.randomUUID()}'`, // 基于哈希消息认证码的一次性口令的密钥
+ },
+ loader: {
+ '.svg': 'text',
+ },
+});
\ No newline at end of file
diff --git a/src/build/index.ts b/src/build/index.ts
new file mode 100644
index 0000000..2d564b0
--- /dev/null
+++ b/src/build/index.ts
@@ -0,0 +1,14 @@
+import { copy, emptyDir } from "fs-extra";
+
+// 清空目标文件夹
+await emptyDir("./dist");
+
+// 拷贝资源文件
+await Promise.all([
+ import('./esbuild.ts'),
+ import('./manifest.ts'),
+ copy('./src/_locales', './dist/_locales'),
+ copy('./src/assets', './dist/assets'),
+ copy('./src/sidebar', './dist/sidebar', { filter: e => e.endsWith('.ts') || e.endsWith('.css') ? false : true }),
+ copy('./src/options', './dist/options', { filter: e => e.endsWith('.ts') || e.endsWith('.css') ? false : true }),
+]);
\ No newline at end of file
diff --git a/src/build/manifest.ts b/src/build/manifest.ts
new file mode 100644
index 0000000..9508569
--- /dev/null
+++ b/src/build/manifest.ts
@@ -0,0 +1,7 @@
+import pkg from 'fs-extra';
+import manifest from "../manifest.json" with {type: 'json'}
+
+Reflect.deleteProperty(manifest, '$schema'); // 移除 $schema 键
+
+const { writeJson } = pkg;
+await writeJson('./dist/manifest.json', manifest, { spaces: '\t' });
\ No newline at end of file
diff --git a/src/danmaku/README.md b/src/danmaku/README.md
deleted file mode 100644
index 8228f46..0000000
--- a/src/danmaku/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-弹幕组件,代码弹幕基于B站[flash播放器](https://static.hdslb.com/play.swf)移植而来:
- - 支持普权弹幕使用【换行符】实现的高级排版效果,并基于屏幕分辨率等比放大
- - 支持代码弹幕【mode8】(当然完全复刻flash时代的效果是不现实的,另外弹幕游戏等与用户交互的内容也不支持)
-
-
-### 弹幕模式
-| mode | 1 | 4 | 5 | 6 | 7 | 8 | 9 |
-| :-:| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
-| 类型 | 普通 | 底部 | 顶部 | 逆向 | 高级 | 代码 | BAS |
-
-### 测试用例
-| 视频链接 | 弹幕类型 | 备注 |
-| - | - | - |
-| [【幸运星组曲】「らき☆すた動画」](https://www.bilibili.com/video/av2810) | 普权弹幕 | 普权弹幕使用【换行符】实现的高级排版效果 |
-| [【初音ミク】夢と葉桜【PV】](https://www.bilibili.com/video/av297197) | 高级弹幕 | mode7 时代代表作(原始弹幕池丢失严重,请下载[备份弹幕](test/av297197.xml)文件作为【本地弹幕】加载欣赏完全体效果) |
-| [【黑屏弹幕】旅(完成)](https://www.bilibili.com/video/av2735163) | 代码弹幕 | mode8 时代末期完美适应屏幕分辨率的集大成者 |
-| [【黑屏弹幕】在这狭小的鸟笼之中【SoundHorizon】](https://www.bilibili.com/video/av589840724) | BAS弹幕 | mode9 时代代表作 |
-| [\[游客权限弹幕\]キミとふたり-ClariS](https://www.bilibili.com/video/av75432) | 普权弹幕 | |
-| [\[黑屏普权弹幕\]白雪公主与变态王子的故事\[SH\]](https://www.bilibili.com/video/av189960) | 普权弹幕 | |
-| [【弹幕祭应援】 緋色月下、狂咲ノ絶-1st Anniversary Remix](https://www.bilibili.com/video/av39444/?p=3) | 普权弹幕 | 普权弹幕压力测试(原始弹幕池丢失严重,请下载[备份弹幕](test/av39444.xml)文件作为【本地弹幕】加载欣赏完全体效果) |
-| [【白屏弹幕】10 years after](https://www.bilibili.com/video/av202813) | 高级弹幕 | |
-| [【弹幕PV】里表一体](https://www.bilibili.com/video/av201763) | 代码弹幕 | 揭开 mode8 时代的先驱者之一 |
-| [【BILIBILI合作】2012夜神月圣诞祭](https://www.bilibili.com/video/av222938/) | 代码弹幕 | mode8 漏洞和死亡笔记捏他的完美契合 |
-| [\[例大祭⑨応援\]lonely dreaming girl\[敏敏翻唱\]](https://www.bilibili.com/video/av280613) | 代码弹幕 | 惊艳的 mode8 绘图,当然 mode7 部分同样优秀 |
-| [\[高级弹幕\]Rolling Girl](https://www.bilibili.com/video/av379138) | 代码弹幕 | |
-| [【弹幕】Crazy ∞ nighT](https://www.bilibili.com/video/av392859) | 代码弹幕 | |
-| [【黑屏弹幕】TSUBASA(海猫鸣泣之时)](https://www.bilibili.com/video/av393948/?p=2) | 代码弹幕 | |
-| [【黑屏弹幕】我们的报复政策](https://www.bilibili.com/video/av397395) | 代码弹幕 | |
-| [\[弹幕大赛\]Q&A リサイタル! ~TV ver~](https://www.bilibili.com/video/av399127) | 代码弹幕 | |
-| [Psy Phone short ver](https://www.bilibili.com/video/av402034) | 代码弹幕 | |
-| [【黑屏弹幕】魔法少女小圆OP-完整版](https://www.bilibili.com/video/av409835) | 代码弹幕 | mode8 制作的魔法少女小圆 OP ,当之无愧的神弹幕 |
-| [【弹幕】乾杯 - ( ゜- ゜)つロ \| 代码弹幕](https://www.bilibili.com/video/av411358) | 代码弹幕 | 时代的眼泪音乐绘卷 |
-| [【佐藤莎莎拉】不断被替换的渺小存在](https://www.bilibili.com/video/av606355) | 代码弹幕 | mode8 一图流 PV |
-| [【CLANNAD】谢谢 一直以来都最喜欢你~](https://www.bilibili.com/video/av856822) | 代码弹幕 | 普权弹幕 + mode7 + mode8 + mode9 群魔乱舞,非官方的高级弹幕试验场 |
-| [【黑屏弹幕】人造ENE](https://www.bilibili.com/video/av980264) | 代码弹幕 | |
\ No newline at end of file
diff --git a/src/danmaku/event.ts b/src/danmaku/event.ts
new file mode 100644
index 0000000..f8e5c99
--- /dev/null
+++ b/src/danmaku/event.ts
@@ -0,0 +1,18 @@
+import { IDanmaku } from ".";
+
+/** 弹幕事件 */
+export enum DanmakuEvent {
+
+ /** 添加弹幕,注意参数为新增弹幕 */
+ DANMAKU_ADD,
+
+ /** 发送弹幕 */
+ DANMAKU_SEND,
+}
+
+
+/** 弹幕事件对应的数据类型 */
+export interface IDanmakuEvent {
+ 0: IDanmaku[];
+ 1: IDanmaku;
+}
\ No newline at end of file
diff --git a/src/danmaku/index.css b/src/danmaku/index.css
new file mode 100644
index 0000000..21e644e
--- /dev/null
+++ b/src/danmaku/index.css
@@ -0,0 +1,61 @@
+@import url(./render/index.css);
+
+@scope {
+ :scope {
+ color-scheme: light dark;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ inset: 0;
+ container: danmaku / size;
+ pointer-events: none;
+ overflow: clip;
+
+ /* 字号缩放倍率 */
+ --fontSize: 1;
+ /* 弹幕字体大小 */
+ --fontsize: 25;
+ /* 是否等比放大 */
+ --full-screen-sync: 0;
+ /* 边框样式 */
+ --fontBorder: 0;
+ /* 弹幕阴影颜色 */
+ --text-shadow: #000;
+ /* 渐变弹幕 */
+ --colorful: 1;
+ /* 弹幕字体 */
+ --font-family: SimHei, "Microsoft JhengHei";
+ /* 弹幕字重 */
+ --font-weight: bold;
+ /* 弹幕透明度 */
+ --opacity: 1;
+
+ /* 弹幕动画状态 */
+ --animation-play-state: running;
+ /* 弹幕容器分辨率修正·行向 */
+ --inset-inline: 0;
+ /* 弹幕容器分辨率修正·块向 */
+ --inset-block: 0;
+ }
+
+ div {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ user-select: none;
+ }
+
+ button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: inherit;
+ background-color: transparent;
+ padding: 0;
+ border: none;
+ cursor: pointer;
+ }
+
+}
\ No newline at end of file
diff --git a/src/danmaku/index.d.css.ts b/src/danmaku/index.d.css.ts
new file mode 100644
index 0000000..eb9bc4f
--- /dev/null
+++ b/src/danmaku/index.d.css.ts
@@ -0,0 +1,2 @@
+declare const stylesheet: CSSStyleSheet;
+export default stylesheet;
\ No newline at end of file
diff --git a/src/danmaku/index.ts b/src/danmaku/index.ts
index 39cb8e4..dd9b6f0 100644
--- a/src/danmaku/index.ts
+++ b/src/danmaku/index.ts
@@ -1,5 +1,8 @@
+import { CSSStyleSheet2HTMLStyleElement } from "../utils/CSSStyleSheet2HTMLStyleElement";
import { customElement } from "../utils/Decorator/customElement";
import { DANMAKU } from "./block";
+import { DanmakuEvent, IDanmakuEvent } from "./event";
+import stylesheet from "./index.css" with {type: 'css'};
import { Mode1 } from "./render/mode1";
import { Mode4 } from "./render/mode4";
import { Mode5 } from "./render/mode5";
@@ -7,15 +10,12 @@ import { Mode6 } from "./render/mode6";
import { Mode7 } from "./render/mode7";
import { Mode8 } from "./render/mode8";
import { rootSprite } from "./render/mode8/Display/DisplayObject";
-import { Mode9 } from "./render/mode9";
+import { IDanmakuBAS, Mode9 } from "./render/mode9";
import ParserWorker from './render/mode9/bas-parser';
-/**
- * 弹幕组件
- * 需要引入`/style/index.css`
- */
-@customElement('div')
-export class Danmaku extends HTMLDivElement {
+/** 播放器核心 */
+@customElement(undefined, `danmaku-${Date.now()}`)
+export class Danmaku extends HTMLElement {
/**
* 需要监听变动的属性。
@@ -31,11 +31,8 @@ export class Danmaku extends HTMLDivElement {
*/
// attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
- /** 初始化标记 */
- // #inited = false;
-
/** 每当元素添加到文档中时调用。 */
- // connectedCallback() { }
+ // connectedCallback() {}
/** 每当元素从文档中移除时调用。 */
// disconnectedCallback() {}
@@ -43,65 +40,37 @@ export class Danmaku extends HTMLDivElement {
/** 每当元素被移动到新文档中时调用。 */
// adoptedCallback() {}
- /**
- * 事件监听(只监听一次)
- *
- * @param type 事件类型
- * @param listener 事件回调
- */
- one(type: K, listener: (evt: CustomEvent) => void) {
- this.addEventListener('bofqi' + type, listener, { once: true });
- }
-
- /**
- * 事件监听
- *
- * @param type 事件类型
- * @param listener 事件回调
- */
- bind = (type: K, listener: (evt: CustomEvent) => void) => {
- this.addEventListener('bofqi' + type, listener);
- }
-
- /**
- * 取消事件监听
- *
- * @param type 事件类型
- * @param listener 事件回调
- */
- unbind = (type: K, listener: (evt: CustomEvent) => void) => {
- this.removeEventListener('bofqi' + type, listener);
- }
-
- /**
- * 分发事件
- *
- * @param type 事件类型
- * @param detail 分发给回调的数据
- */
- trigger = (type: K, detail: IDanmakuEvent[K]) => {
- // Promise.resolve().then(() => {
- // 原生`dispatchEvent`方法只能同步发送消息,使用`Promise`转为异步以合乎正常事件处理流程
- this.dispatchEvent(new CustomEvent('bofqi' + type, { detail }));
- // });
- }
-
+ #video: HTMLVideoElement;
/** 原始弹幕序列 */
- $dms: IDanmaku[] = [];
+ #dms: IDanmaku[] = [];
/** 弹幕时间轴序列 */
- protected $timeLine: IDanmaku[] = [];
+ #timeLine: IDanmaku[] = [];
/** 排序延时句柄 */
- #timer?: number;
+ #timer?: ReturnType;
+
+ /** 渲染句柄 */
+ #animationTimer?: number;
/** 弹幕渲染起始游标 */
#i = 0;
- /** 弹幕基准存活时间 */
+ /** 弹幕可见性 */
+ #visible = true;
+
+ $host = this.attachShadow({ mode: 'closed' });
+
+ /** 弹幕基准时间 */
$duration = 4500;
+ /** 弹幕容器宽度 */
+ $width = 0;
+
+ /** 弹幕容器高度 */
+ $height = 0;
+
/** 速度 */
$speedPlus = 1;
@@ -111,37 +80,21 @@ export class Danmaku extends HTMLDivElement {
/** 弹幕速率倍率 */
$rate = 1;
- /** 弹幕区域宽度 */
- $width = 0;
-
- /** 弹幕区域高度 */
- $height = 0;
-
- get $heightFix() {
- return this.$preventShade ? this.$height * 0.85 : this.$height;
- }
-
- /** 当前弹幕数 */
+ /** 当前已渲染弹幕数 */
$danmakuNow = 0;
/** 显示区域:0-100(0为无限,50为半屏,100为满屏 */
$danmakuArea = 0;
+ /** 防挡字幕 */
+ $preventShade = false;
+
/** 弹幕渲染起始时间戳 */
$playTimeStamp = 0;
/** 弹幕渲染暂停时间戳 */
$pauseTimeStamp = 0;
- /** 当前弹幕时间戳:/s */
- $currentTime = 0;
-
- /** 渲染句柄 */
- #animationTimer?: number;
-
- /** 弹幕可见性 */
- #visible = true;
-
/** 上次渲染弹幕的时间戳 */
$progress = 0;
@@ -151,8 +104,14 @@ export class Danmaku extends HTMLDivElement {
/** 同屏弹幕密度 */
$danmakuNumber = 0;
- /** 防挡字幕 */
- $preventShade = false;
+ /** 弹幕屏蔽等级 */
+ $weiget = 0;
+
+ /** 当前弹幕时间戳:/s */
+ $currentTime = 0;
+
+ /** mode7 自适应 */
+ $mode7Scale = false;
#block = 0;
@@ -170,8 +129,9 @@ export class Danmaku extends HTMLDivElement {
this.#block = v;
}
- /** 弹幕屏蔽等级 */
- $weiget = 0;
+ get $heightFix() {
+ return this.$preventShade ? this.$height * 0.85 : this.$height;
+ }
private $worker?: Worker;
@@ -181,109 +141,161 @@ export class Danmaku extends HTMLDivElement {
this.$worker = new ParserWorker();
this.$worker.addEventListener('message', e => {
if (!e.data.error) {
- this.$dms = this.$dms.concat(e.data.map((d: IDanmakuBAS) => {
- Mode9.pretreatDanmaku(d);
- return d;
- }));
- this.sort();
+ this.#dms = this.#dms.concat(e.data);
+ this.#sort();
}
});
}
return this.$worker;
}
- constructor(
- /** 关联的视频元素 */
- private $video: HTMLVideoElement
- ) {
+ constructor(video: HTMLVideoElement) {
super();
- this.classList.add('b-danmaku');
+ this.#video = video;
+ // this.#host.adoptedStyleSheets = [stylesheet]; // 文档画中画模式会导致构造的样式表丢失,暂时取道 style 元素代替
+ this.$host.appendChild(CSSStyleSheet2HTMLStyleElement(stylesheet));
// 绑定代码弹幕容器
- rootSprite.$host = this;
+ rootSprite.$host = this.$host;
- this.$video.addEventListener('play', () => {
- if (!this.$video.paused) {
+ new ResizeObserver(this.#resizeObserver).observe(this);
+ video.addEventListener('play', () => {
+ if (!video.paused) {
this.$playTimeStamp = performance.now();
this.style.removeProperty('--animation-play-state');
- this.time();
+ this.#time();
this.dispatchEvent(new Event('play'));
}
});
- this.$video.addEventListener('pause', () => {
- if (this.$video.paused) {
+ video.addEventListener('pause', () => {
+ if (video.paused) {
this.$pauseTimeStamp = performance.now();
this.style.setProperty('--animation-play-state', 'paused');
- this.pause();
+ this.#pause();
this.dispatchEvent(new Event('pause'));
}
});
- this.$video.addEventListener('playing', () => {
+ video.addEventListener('playing', () => {
this.$playTimeStamp = performance.now();
this.style.removeProperty('--animation-play-state');
- this.time();
+ this.#time();
this.dispatchEvent(new Event('play'));
});
- this.$video.addEventListener('waiting', () => {
+ video.addEventListener('waiting', () => {
this.$pauseTimeStamp = performance.now();
this.style.setProperty('--animation-play-state', 'paused');
- this.pause();
+ this.#pause();
this.dispatchEvent(new Event('pause'));
});
- this.$video.addEventListener('ended', () => {
- if (this.$video.ended) {
+ video.addEventListener('ended', () => {
+ if (video.ended) {
this.$pauseTimeStamp = performance.now();
this.style.setProperty('--animation-play-state', 'paused');
- this.pause();
+ this.#pause();
this.dispatchEvent(new Event('ended'));
}
});
- this.$video.addEventListener('emptied', () => {
- if (this.$video.paused) {
+ video.addEventListener('emptied', () => {
+ if (video.paused) {
this.$pauseTimeStamp = performance.now();
this.style.setProperty('--animation-play-state', 'paused');
- this.pause();
+ this.#pause();
this.dispatchEvent(new Event('pause'));
}
});
- this.$video.addEventListener('ratechange', () => {
- this.$rate = this.$video.playbackRate;
+ video.addEventListener('ratechange', () => {
+ this.$rate = video.playbackRate;
});
- this.$video.addEventListener('timeupdate', () => {
- this.$currentTime = this.$video.currentTime * 1e3;
- this.$video.paused && this.pause();
+ video.addEventListener('timeupdate', () => {
+ this.$currentTime = video.currentTime * 1e3;
+ video.paused && this.#pause();
});
this.addEventListener('click', () => {
- this.$video.paused ? this.$video.play() : this.$video.pause();
+ video.paused ? video.play() : video.pause();
});
+ }
- new ResizeObserver(d => {
- for (const entry of d) {
- for (const size of entry.borderBoxSize) {
- this.$width = size.inlineSize;
- this.$height = size.blockSize;
- this.style.setProperty('--wraps', (size.blockSize / 440));
+ /**
+ * 事件监听(只监听一次)
+ *
+ * @param type 事件类型
+ * @param listener 事件回调
+ */
+ one(type: K, listener: (evt: CustomEvent) => void) {
+ this.addEventListener('bofqi' + type, listener, { once: true });
+ }
+
+ /**
+ * 事件监听
+ *
+ * @param type 事件类型
+ * @param listener 事件回调
+ */
+ bind = (type: K, listener: (evt: CustomEvent) => void) => {
+ this.addEventListener('bofqi' + type, listener);
+ }
+
+ /**
+ * 取消事件监听
+ *
+ * @param type 事件类型
+ * @param listener 事件回调
+ */
+ unbind = (type: K, listener: (evt: CustomEvent) => void) => {
+ this.removeEventListener('bofqi' + type, listener);
+ }
+
+ /**
+ * 分发事件
+ *
+ * @param type 事件类型
+ * @param detail 分发给回调的数据
+ */
+ trigger = (type: K, detail: IDanmakuEvent[K]) => {
+ // Promise.resolve().then(() => {
+ // 原生`dispatchEvent`方法只能同步发送消息,使用`Promise`转为异步以合乎正常事件处理流程
+ this.dispatchEvent(new CustomEvent('bofqi' + type, { detail }));
+ // });
+ }
+
+ /** 弹幕容器大小变化回调 */
+ #resizeObserver = (entries: ResizeObserverEntry[]) => {
+ for (const { contentBoxSize } of entries) {
+ for (const { inlineSize, blockSize } of contentBoxSize) {
+ this.$width = inlineSize;
+ this.$height = blockSize;
+ const { videoWidth, videoHeight } = this.#video;
+ const radio = inlineSize / blockSize;
+ const radioVideo = videoWidth / videoHeight;
+ if (radio > radioVideo) {
+ this.style.removeProperty('--inset-block');
+ this.style.setProperty('--inset-inline', `${(radio - radioVideo) / radio / 2 * 100}cqi`);
+ } else if (radio < radioVideo) {
+ this.style.setProperty('--inset-block', `${(radioVideo - radio) / radioVideo / 2 * 100}cqb`);
+ this.style.removeProperty('--inset-inline');
+ } else {
+ this.style.removeProperty('--inset-block');
+ this.style.removeProperty('--inset-inline');
}
}
- this.modeIdentity();
- }).observe(this);
+ }
}
/** 弹幕排序 */
- private sort() {
+ #sort() {
clearTimeout(this.#timer);
this.#timer = setTimeout(() => {
- this.$dms.sort((a, b) => this.compare(a.idStr, b.idStr));
- this.$dms.sort((a, b) => this.compare(a.progress, b.progress));
- this.$timeLine = this.$dms;
+ this.#dms.sort((a, b) => this.#compare(a.idStr, b.idStr));
+ this.#dms.sort((a, b) => this.#compare(a.progress, b.progress));
+ this.#timeLine = this.#dms;
this.#i = 0;
});
}
/** 排序比较算法 */
- private compare(num1: number | string | bigint = 0, num2: number | string | bigint = 0) {
+ #compare(num1: number | string | bigint = 0, num2: number | string | bigint = 0) {
typeof num1 === 'string' && (num1 = BigInt(num1));
typeof num2 === 'string' && (num2 = BigInt(num2));
if (num1 > num2) {
@@ -295,8 +307,124 @@ export class Danmaku extends HTMLDivElement {
}
}
+ /** 时间主循环 */
+ #time = () => {
+ this.#pause(); // 防止多个主循环触发
+ this.#render();
+ this.#animationTimer = requestAnimationFrame(this.#time);
+ }
+
+ /** 暂停循环 */
+ #pause = () => {
+ this.#animationTimer && cancelAnimationFrame(this.#animationTimer);
+ }
+
+ /** 渲染函数 */
+ #render() {
+ if (this.#visible) {
+ const time = this.$currentTime;
+ if (this.$progress > time + 3000 + this.#preTime * this.$rate) {
+ // 上次渲染弹幕的时间戳远大于视频时间,重置时间戳
+ this.#flesh();
+ }
+ for (; this.#i < this.#timeLine.length; this.#i++) {
+ const progress = this.#timeLine[this.#i].progress || 0;
+ if (progress < time - 1000) {
+ continue;
+ } else if (progress < time + this.#preTime * this.$rate) {
+ // 初次渲染未必从time=0开始,导致progress=0的弹幕渲染不到,何妨反向获取1000ms
+ this.#draw(this.#timeLine[this.#i], progress - time);
+ this.$progress = progress;
+ } else {
+ break;
+ }
+ }
+ }
+ }
+
+ /** 绘制弹幕 */
+ #draw(dm: IDanmaku, delay = 0) {
+ if (!dm.on) {
+ switch (dm.mode) {
+ case 1:
+ case 2:
+ case 3: {
+ if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
+ if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
+ break;
+ }
+ if (this.$block & DANMAKU.SCROLL) break;
+ if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
+ new Mode1(dm, this).execute(delay);
+ break;
+ }
+ case 4: {
+ if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
+ if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
+ break;
+ }
+ if (this.$block & DANMAKU.BOTTOM) break;
+ if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
+ new Mode4(dm, this).execute(delay);
+ break;
+ }
+ case 5: {
+ if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
+ if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
+ break;
+ }
+ if (this.$block & DANMAKU.TOP) break;
+ if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
+ new Mode5(dm, this).execute(delay);
+ break;
+ }
+ case 6: {
+ if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
+ break;
+ }
+ if (this.$block & DANMAKU.SCROLL) break;
+ if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
+ new Mode6(dm, this).execute(delay);
+ break;
+ }
+ case 7: {
+ if (this.$block & DANMAKU.ADVANCE) break;
+ new Mode7(dm, this).execute(delay);
+ break;
+ }
+ case 8: {
+ if (this.$block & DANMAKU.SCRIPT) break;
+ new Mode8(dm, this).execute();
+ break;
+ }
+ case 9: {
+ if (this.$block & DANMAKU.BAS) break;
+ new Mode9(dm, this).execute(delay);
+ break;
+ }
+ }
+ }
+ }
+
+ /** 刷新弹幕 */
+ #flesh() {
+ this.$host.replaceChildren(...this.$host.querySelectorAll('style'));
+ this.#i = 0;
+ this.$progress = 0;
+ this.$danmakuNow = 0;
+ this.#modeIdentity();
+ }
+
+ /** 重置渲染空间 */
+ #modeIdentity() {
+ Mode1.identity();
+ Mode4.identity();
+ Mode5.identity();
+ Mode6.identity();
+ }
+
/** 添加弹幕 */
- add(dms: IDanmaku | IDanmaku[]) {
+ $add(dms: IDanmaku | IDanmaku[]) {
Array.isArray(dms) || (dms = [dms]);
const arr: IDanmaku[] = [];
const bas: IDanmaku[] = [];
@@ -312,9 +440,9 @@ export class Danmaku extends HTMLDivElement {
}
}
}
- this.$dms = this.$dms.concat(arr);
+ this.#dms = this.#dms.concat(arr);
bas.length && this.worker.postMessage(bas);
- this.sort();
+ this.#sort();
this.trigger(DanmakuEvent.DANMAKU_ADD, dms);
}
@@ -323,7 +451,7 @@ export class Danmaku extends HTMLDivElement {
*
* @param xml xml文本字符串或文档
*/
- fromXML(xml: string | Document) {
+ $fromXML(xml: string | Document) {
if (typeof xml === 'string') {
// B站输出的xml可能包含不标准的字符,会引起浏览器自动解析失败
// remove-invalid-xml-characters.js
@@ -354,137 +482,17 @@ export class Danmaku extends HTMLDivElement {
dms.push(dm);
}
});
- this.add(dms);
- }
-
- /** 时间主循环 */
- private time = () => {
- this.pause(); // 防止多个主循环触发
- this.render();
- this.#animationTimer = requestAnimationFrame(this.time);
- }
-
- /** 暂停循环 */
- private pause = () => {
- this.#animationTimer && cancelAnimationFrame(this.#animationTimer);
- }
-
- /** 渲染函数 */
- private render() {
- if (this.#visible) {
- const time = this.$currentTime;
- if (this.$progress > time + 3000 + this.#preTime * this.$rate) {
- // 上次渲染弹幕的时间戳远大于视频时间,重置时间戳
- this.flesh();
- }
- for (; this.#i < this.$timeLine.length; this.#i++) {
- const progress = this.$timeLine[this.#i].progress || 0;
- if (progress < time - 1000) {
- continue;
- } else if (progress < time + this.#preTime * this.$rate) {
- // 初次渲染未必从time=0开始,导致progress=0的弹幕渲染不到,何妨反向获取1000ms
- this.draw(this.$timeLine[this.#i], progress - time);
- this.$progress = progress;
- } else {
- break;
- }
- }
- }
- }
-
- /** 绘制弹幕 */
- private draw(dm: IDanmaku, delay = 0) {
- switch (dm.mode) {
- case 1: {
- if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
- if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
- break;
- }
- if (this.$block & DANMAKU.SCROLL) break;
- if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
- new Mode1(this, dm).execute(delay);
- break;
- }
- case 2: {
- new Mode1(this, dm).execute(delay);
- break;
- }
- case 3: {
- new Mode1(this, dm).execute(delay);
- break;
- }
- case 4: {
- if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
- if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
- break;
- }
- if (this.$block & DANMAKU.BOTTOM) break;
- if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
- new Mode4(this, dm).execute(delay);
- break;
- }
- case 5: {
- if (this.$danmakuNumber && this.$danmakuNow > this.$danmakuNumber) break;
- if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
- break;
- }
- if (this.$block & DANMAKU.TOP) break;
- if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
- new Mode5(this, dm).execute(delay);
- break;
- }
- case 6: {
- if (this.$weiget && 'weight' in dm && dm.weight !== undefined && dm.weight < this.$weiget) {
- break;
- }
- if (this.$block & DANMAKU.SCROLL) break;
- if (dm.color && dm.color !== 0xFFFFFF && (this.$block & DANMAKU.COLOR)) break;
- new Mode6(this, dm).execute(delay);
- break;
- }
- case 7: {
- if (this.$block & DANMAKU.ADVANCE) break;
- new Mode7(this, dm).execute(delay);
- break;
- }
- case 8: {
- if (this.$block & DANMAKU.SCRIPT) break;
- new Mode8(this, dm).execute();
- break;
- }
- case 9: {
- if (this.$block & DANMAKU.BAS) break;
- new Mode9(this, dm).execute(delay);
- break;
- }
- }
- }
-
- /** 刷新弹幕 */
- private flesh() {
- this.replaceChildren();
- this.#i = 0;
- this.$progress = 0;
- this.$danmakuNow = 0;
- this.modeIdentity();
- }
-
- /** 重置渲染空间 */
- private modeIdentity() {
- Mode1.identity();
- Mode4.identity();
- Mode5.identity();
- Mode6.identity();
+ this.$add(dms);
}
/** 播放 */
$play() {
- this.$video.play();
+ this.#video.play();
}
$pause() {
- this.$video.pause();
+ this.#video.pause();
}
/**
@@ -493,23 +501,24 @@ export class Danmaku extends HTMLDivElement {
* @param t 目标时间:/s
*/
$seek(t: number) {
- this.$video.currentTime = t;
+ this.#video.currentTime = t;
}
/** 显示弹幕 */
- on() {
+ $on() {
this.#visible = true;
}
/** 关闭弹幕 */
- off() {
+ $off() {
this.#visible = false;
- this.flesh();
+ this.#flesh();
}
- identify = () => {
- this.$timeLine.length = 0;
- this.$dms.length = 0;
+ $indentify = () => {
+ clearTimeout(this.#timer);
+ this.#timeLine.length = 0;
+ this.#dms.length = 0;
this.$pauseTimeStamp = 0;
this.$playTimeStamp = 0;
this.$danmakuNow = 0;
@@ -517,7 +526,7 @@ export class Danmaku extends HTMLDivElement {
this.style.removeProperty('--animation-play-state');
this.$worker?.terminate();
delete this.$worker;
- this.flesh();
+ this.#flesh();
}
}
@@ -566,151 +575,9 @@ export interface IDanmaku {
animation?: string;
/** 笔触 */
colorful?: number;
-
/** 图片弹幕 */
picture?: string;
-}
-
-export interface IDanmakuElem {
-
- /** 唯一id,已超过JavaScript整数上限,如非必要切莫转化为数字 */
- $idStr: string;
-
- /** 弹幕位于视频中的时间点(单位毫秒) */
- $progress: number;
-
- /** 弹幕数据 */
- $dm: IDanmaku
-
- /**
- * 绘制
- *
- * @param delay 延时:/ms
- */
- execute(delay?: number): void;
-}
-
-export interface IDanmakuBAS extends IDanmaku {
- // 以下为BAS弹幕专用
- duration: number;
- def2set: Record;
- defs: IDef[];
- sets: ISet[];
- setsIntervals: Record;
-}
-
-export interface IAnimation {
- delay: number;
- duration: number;
- easing: string;
- group: number;
- name: string;
- valueStart?: IDefAttrs;
- valueEnd: IDefAttrs;
-}
-
-export interface IPercentNum {
- numType: 'number' | 'percent';
- value: number;
-}
-
-export interface IDef {
- attrs: IDefAttrs;
- name: string;
- obj_type: string;
- type: 'DefText' | 'DefButton' | 'DefPath';
- _reg_order: number;
-}
-
-export interface ISet {
- type: 'Serial' | 'Parallel' | 'Unit';
- items?: ISet[];
- attrs?: IDefAttrs;
- defaultEasing?: string;
- default_easing?: string;
- duration?: number;
- targetName?: string;
- target_name?: string;
-}
-
-/** 通用属性 */
-interface ICommon {
- x?: IPercentNum | number;
- y?: IPercentNum | number;
- zIndex?: IPercentNum | number;
- scale?: IPercentNum | number;
- duration?: number;
-}
-
-/** 文本属性 */
-interface IText extends ICommon {
- content?: string;
- alpha?: IPercentNum | number;
- color?: number;
- anchorX?: IPercentNum | number;
- anchorY?: IPercentNum | number;
- fontSize?: IPercentNum | number;
- fontFamily?: string;
- bold?: IPercentNum | number;
- textShadow?: IPercentNum | number;
- strokeWidth?: IPercentNum | number;
- strokeColor?: number;
- rotateX?: IPercentNum | number;
- rotateY?: IPercentNum | number;
- rotateZ?: IPercentNum | number;
- parent?: string;
-}
-
-/** 按钮属性 */
-interface IButton extends ICommon {
- text?: string;
- fontSize?: IPercentNum | number;
- textColor?: number;
- textAlpha?: IPercentNum | number;
- fillColor?: number;
- fillAlpha?: IPercentNum | number;
- target?: IButtonTarget;
-}
-
-/** 按钮回调 */
-interface IButtonTarget {
- objType: 'av' | 'bangumi' | 'seek';
- time?: number;
- page?: number;
- av?: number;
- bvid?: string;
- seasonId?: number;
- episodeId?: number;
-}
-
-interface IPath extends ICommon {
- d?: string;
- viewBox?: string;
- borderColor?: number;
- borderAlpha?: IPercentNum | number;
- borderWidth?: IPercentNum | number;
- fillColor?: number;
- fillAlpha?: IPercentNum | number;
-}
-
-export interface IDefAttrs extends IText, IButton, IPath {
- width?: number;
- height?: number;
-}
-
-/** 弹幕事件 */
-export enum DanmakuEvent {
-
- /** 添加弹幕,注意参数为新增弹幕 */
- DANMAKU_ADD,
-
- /** 发送弹幕 */
- DANMAKU_SEND,
-}
-
-/** 弹幕事件对应的数据类型 */
-export interface IDanmakuEvent {
- 0: IDanmaku[];
- 1: IDanmaku;
+ /** 是否正在渲染 */
+ on?: boolean;
}
\ No newline at end of file
diff --git a/src/danmaku/render/index.css b/src/danmaku/render/index.css
new file mode 100644
index 0000000..bf380ca
--- /dev/null
+++ b/src/danmaku/render/index.css
@@ -0,0 +1,68 @@
+@import url(./mode1.css);
+@import url(./mode4.css);
+@import url(./mode5.css);
+@import url(./mode6.css);
+@import url(./mode8/index.css);
+@import url(./mode9/index.css);
+
+.dm {
+ /* 弹幕基准放大倍率 */
+ --font-basis: calc(100cqb / 440);
+
+ line-height: 1.125;
+ white-space: pre;
+ pointer-events: none;
+ align-content: center;
+ font-size: calc(var(--fontsize) * var(--fontSize) * 1px);
+ text-shadow: 1px 0 1px var(--text-shadow), 0 1px 1px var(--text-shadow), 0 -1px 1px var(--text-shadow), -1px 0 1px var(--text-shadow);
+ font-family: var(--font-family);
+ font-weight: var(--font-weight);
+ opacity: var(--opacity);
+
+ &.wraps {
+ font-size: calc(var(--fontsize) * var(--font-basis));
+ }
+
+ @container danmaku style(--full-screen-sync: 1) {
+ &:not(.wraps) {
+ font-size: calc(var(--fontsize) * var(--fontSize) * var(--font-basis));
+ }
+ }
+
+ @container danmaku style(--fontBorder: 1) {
+ & {
+ text-shadow: 0px 0px 1px var(--text-shadow), 0 0 1px var(--text-shadow), 0 0 1px var(--text-shadow);
+ }
+ }
+
+ @container danmaku style(--fontBorder: 2) {
+ & {
+ text-shadow: 1px 1px 2px var(--text-shadow), 0 0 1px var(--text-shadow);
+ }
+ }
+
+ @container danmaku style(--colorful: 1) {
+ &.colorful {
+ background-size: cover;
+ text-shadow: none;
+ background-image: linear-gradient(to right, #F2509E, #308BCD);
+ background-clip: text;
+ -webkit-text-fill-color: #ffffff;
+ -webkit-text-stroke: 2px transparent;
+ }
+ }
+
+ @container danmaku style(--animation-play-state: paused) {
+ & {
+ animation-play-state: paused !important;
+ }
+ }
+
+ &.pause {
+ animation-play-state: paused;
+ }
+
+ >img {
+ block-size: 1.125em;
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/index.ts b/src/danmaku/render/index.ts
new file mode 100644
index 0000000..ad5931a
--- /dev/null
+++ b/src/danmaku/render/index.ts
@@ -0,0 +1,85 @@
+import { IDanmaku } from "..";
+import { Format } from "../../utils/fomat";
+
+/** 普通弹幕 */
+export abstract class Mode extends HTMLElement {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ // connectedCallback() {}
+
+ /** 每当元素从文档中移除时调用。 */
+ // disconnectedCallback() {}
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
+
+ /**
+ * @see 文档 {@link https://info.bilibili.co/pages/viewpage.action?pageId=95154953}
+ * @see 优先级 {@link https://www.tapd.bilibili.co/20062561/prong/stories/view/1120062561001659710}
+ */
+ static parseAction(dm: IDanmaku) {
+ if (typeof dm.action === 'string') {
+ const list = dm.action.split(';');
+ list.forEach(d => {
+ const ele = d.split(':');
+ if (ele[0] && ele[1]) {
+ Reflect.set(dm, ele[0], ele[1]);
+ }
+ });
+ }
+ }
+
+ /** 开始运动时间戳 */
+ $starttimeStamp = 0;
+
+ /** 结束运动时间戳 */
+ $endtimeStamp = 0;
+
+ /** 动画时长 */
+ $duration = 0;
+
+ /** 动画速度 */
+ $speed = 1;
+
+ /** 弹幕宽度 */
+ $width = 0;
+
+ /** 弹幕高度 */
+ $height = 0;
+
+ /** 是否换行弹幕 */
+ $wraps = false;
+
+ constructor(
+ /** 弹幕数据 */
+ protected $dm: IDanmaku,
+ ) {
+ super();
+
+ this.classList.add('dm');
+ Mode.parseAction($dm);
+ if ($dm.content) {
+ const text = this.innerText = $dm.content.replace(/(\/n|\\n|\n|\r\n)/g, '\n');
+ text.split('\n').length > 2 && (this.$wraps = true, this.classList.add('wraps'));
+ }
+ $dm.fontsize && this.style.setProperty('--fontsize', $dm.fontsize);
+ $dm.color || this.style.setProperty('--text-shadow', '#ffffff');
+ this.style.color = Format.hexColor($dm.color);
+ $dm.picture && (this.innerHTML = ``);
+ $dm.colorful && this.classList.add('colorful');
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/mode0.ts b/src/danmaku/render/mode0.ts
deleted file mode 100644
index 95e6254..0000000
--- a/src/danmaku/render/mode0.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-import { Danmaku, IDanmaku } from "..";
-import { customElement } from "../../utils/Decorator/customElement";
-import { Format } from "../../utils/fomat";
-import { ATTR } from "../attr";
-
-/** 普通弹幕 */
-@customElement('div')
-export class Mode0 extends HTMLDivElement {
-
- /**
- * 需要监听变动的属性。
- * 与实例方法`attributeChangedCallback`配合使用。
- * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
- */
- // static observedAttributes = [];
-
- /**
- * 在属性更改、添加、移除或替换时调用。
- * 需要与静态属性`observedAttributes`配合使用。
- * 此回调的第一个参数在`observedAttributes`数组中定义。
- */
- // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
-
- /** 初始化标记 */
- // #inited = false;
-
- /** 每当元素添加到文档中时调用。 */
- // connectedCallback() {}
-
- /** 每当元素从文档中移除时调用。 */
- // disconnectedCallback() {}
-
- /** 每当元素被移动到新文档中时调用。 */
- // adoptedCallback() {}
-
- /** 弹幕中换行符数量 */
- protected $wraps = 0;
-
- /** 是否允许渲染 */
- protected $render = true;
-
- /** 开始运动时间戳 */
- $starttimeStamp = 0;
-
- /** 结束运动时间戳 */
- $endtimeStamp = 0;
-
- /** 动画时长 */
- $duration = 0;
-
- /** 动画速度 */
- $speed = 1;
-
- /** 弹幕宽度 */
- $width = 0;
-
- /** 弹幕高度 */
- $height = 0;
-
- constructor(
- /** 弹幕管理组件 */
- protected $container: Danmaku,
- /** 弹幕数据 */
- public $dm: IDanmaku) {
- super();
- this.parseAction();
-
- this.classList.add('mode0');
- if ($dm.content) {
- const text = $dm.content.replace(/(\/n|\\n|\n|\r\n)/g, '\n');
- this.innerText = text;
- this.$wraps = text.split('\n').length;
- }
- $dm.fontsize && this.style.setProperty('--font-size', $dm.fontsize + 'px');
- if (this.$wraps > 10) {
- // 双排版弹幕
- this.classList.add('wraps');
- }
- $dm.color || this.style.setProperty('--text-shadow', '#ffffff');
- this.style.color = Format.hexColor($dm.color);
- if ($dm.picture) {
- // 图片弹幕
- this.innerHTML = ``;
- this.style.blockSize = `1.125em`;
- }
- if ($dm.colorful) {
- // 大会员弹幕
- this.classList.add('colorful');
- }
- if (this.$wraps < 2 && ($dm).attr & ATTR.LIKE) {
- this.classList.add('like');
- this.innerHTML = `
-
-
-
-${this.innerHTML}`;
- }
- }
-
- /**
- * @see 文档 {@link https://info.bilibili.co/pages/viewpage.action?pageId=95154953}
- * @see 优先级 {@link https://www.tapd.bilibili.co/20062561/prong/stories/view/1120062561001659710}
- */
- private parseAction() {
- if (typeof this.$dm.action === 'string') {
- const list = this.$dm.action.split(';');
- list.forEach(d => {
- const ele = d.split(':');
- if (ele[0] && ele[1]) {
- Reflect.set(this.$dm, ele[0], ele[1]);
- }
- });
- }
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/render/mode1.css b/src/danmaku/render/mode1.css
new file mode 100644
index 0000000..4232c2b
--- /dev/null
+++ b/src/danmaku/render/mode1.css
@@ -0,0 +1,15 @@
+.mode1 {
+ --dealy: 0;
+ --duation: 4500;
+
+ position: absolute;
+ will-change: translate;
+ translate: 100cqi;
+ animation: dmMode1 calc(var(--duation) * 1ms) linear calc(var(--dealy) * 1ms) both;
+}
+
+@keyframes dmMode1 {
+ to {
+ translate: -100%;
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/mode1.ts b/src/danmaku/render/mode1.ts
index 840e20d..b4bb440 100644
--- a/src/danmaku/render/mode1.ts
+++ b/src/danmaku/render/mode1.ts
@@ -1,9 +1,37 @@
+import { Mode } from ".";
+import { Danmaku, IDanmaku } from "..";
import { customElement } from "../../utils/Decorator/customElement";
-import { Mode0 } from "./mode0";
-/** 普通弹幕 */
-@customElement('div')
-export class Mode1 extends Mode0 {
+/** 一般弹幕 */
+@customElement(undefined, `mode1-${Date.now()}`)
+export class Mode1 extends Mode {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
static space: Mode1[][] = [];
@@ -11,12 +39,62 @@ export class Mode1 extends Mode0 {
this.space.length = 0;
}
- private $space() {
- if (this.$wraps < 2) {
+ constructor(
+ /** 弹幕数据 */
+ public $dm: IDanmaku,
+ /** 弹幕管理器 */
+ protected $container: Danmaku,
+
+ ) {
+ super($dm);
+ }
+
+ async execute($delay = 0) {
+ this.$starttimeStamp = this.$endtimeStamp = 0;
+ this.classList.add('mode1', 'pause');
+ this.$container.$host.appendChild(this);
+
+ const { clientWidth, clientHeight } = this;
+ const { $speedPlus, $speedSync, $rate, $duration, $width } = this.$container;
+ this.$width = clientWidth;
+ this.$height = clientHeight;
+ this.$duration = $duration / $speedPlus / ($speedSync ? $rate : 1) * (this.$width + $width) / (512 + this.$width);
+ this.$speed = (512 + this.$width) / ($duration / $speedPlus / ($speedSync ? $rate : 1));
+ this.addEventListener('animationstart', this.#animationstart, { once: true });
+ this.addEventListener('animationend', this.#animationend, { once: true });
+ this.style.setProperty('--duation', this.$duration);
+ this.style.setProperty('--dealy', $delay);
+ this.#space();
+ this.classList.remove('pause');
+ this.$wraps || this.$container.$danmakuNow++;
+ }
+
+ #animationstart = (ev: AnimationEvent) => {
+ this.$starttimeStamp = ev.timeStamp;
+ }
+
+ /** 运动结束处理 */
+ #animationend = (ev: AnimationEvent) => {
+ this.$endtimeStamp = ev.timeStamp;
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ /** 取消弹幕 */
+ #cancel() {
+ this.removeEventListener('animationend', this.#animationend);
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ #space() {
+ if (!this.$wraps) {
const { $danmakuArea, $heightFix } = this.$container;
for (let i = 0; i <= Mode1.space.length; i++) {
if ($danmakuArea && i) {
- return this.$cancel();
+ return this.#cancel();
}
if (!Mode1.space[i]) {
// 弹幕层尚未创建,直接创建
@@ -25,7 +103,7 @@ export class Mode1 extends Mode0 {
layer.fill(this, 0, Math.ceil(this.$height));
Mode1.space.push(layer);
break;
- } else if (this.$layer(Mode1.space[i])) {
+ } else if (this.#layer(Mode1.space[i])) {
// 弹幕层可以进入
break;
}
@@ -39,11 +117,11 @@ export class Mode1 extends Mode0 {
* @param layer 弹幕层
* @returns 是否可以添加弹幕
*/
- private $layer(layer: Mode1[]) {
+ #layer(layer: Mode1[]) {
const { $heightFix } = this.$container;
layer.length = Math.ceil($heightFix);
for (let i = 0; i + this.$height < $heightFix; i += this.$height) {
- if (this.$add(layer, i, i + this.$height)) {
+ if (this.#add(layer, i, i + this.$height)) {
return true;
}
}
@@ -58,7 +136,7 @@ export class Mode1 extends Mode0 {
* @param to 弹幕下限高度
* @returns 是否允许添加
*/
- private $add(layer: Mode1[], from: number, to: number) {
+ #add(layer: Mode1[], from: number, to: number) {
const set = new Set();
for (let i = Math.ceil(from); i < Math.ceil(to); i++) {
layer[i] && set.add(layer[i]);
@@ -75,7 +153,7 @@ export class Mode1 extends Mode0 {
return false;
}
// 计算弹幕距离
- const pauseStamp = this.$pause(pre);
+ const pauseStamp = this.#pause(pre);
if ((timeStamp - pre.$starttimeStamp - pauseStamp) * pre.$speed <= pre.$width) {
// 本行弹幕尚未完全显示,必定追尾,拒绝进入
return false;
@@ -95,7 +173,7 @@ export class Mode1 extends Mode0 {
return false;
}
}
- this.style.translate = `0 ${from}px`;
+ this.style.insetBlockStart = `${from}px`;
layer.fill(this, Math.ceil(from), Math.ceil(to));
return true;
}
@@ -106,7 +184,7 @@ export class Mode1 extends Mode0 {
* @param pre 当前行参数
* @returns
*/
- private $pause(pre: Mode1) {
+ #pause(pre: Mode1) {
if (!this.$container.$pauseTimeStamp) {
// 弹幕未曾暂停过,无需修正处理
return 0;
@@ -126,47 +204,4 @@ export class Mode1 extends Mode0 {
return 0;
}
}
-
- private $animationstart = (ev: AnimationEvent) => {
- this.$starttimeStamp = ev.timeStamp;
- }
-
- /** 运动结束处理 */
- private $animationend = (ev: AnimationEvent) => {
- this.$endtimeStamp = ev.timeStamp;
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- /** 取消弹幕 */
- private $cancel() {
- this.removeEventListener('animationend', this.$animationend);
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- async execute(delay = 0) {
- if (this.$render) {
- this.$render = false;
- this.$endtimeStamp = this.$starttimeStamp = 0;
- this.style.transform = 'translateX(100cqw)';
- this.$container.appendChild(this);
-
- const { clientWidth, clientHeight } = this;
- const { $speedPlus, $speedSync, $rate, $duration, $width } = this.$container
- this.$width = clientWidth;
- this.$height = clientHeight;
- this.$duration = $duration / $speedPlus / ($speedSync ? $rate : 1) * (this.$width + $width) / (512 + this.$width);
- this.$speed = (512 + this.$width) / ($duration / $speedPlus / ($speedSync ? $rate : 1));
- this.addEventListener('animationstart', this.$animationstart, { once: true });
- this.addEventListener('animationend', this.$animationend, { once: true });
- this.$space();
- this.style.animation = `${this.$duration}ms linear ${delay}ms both dmMode1`;
- this.$wraps > 1 || this.$container.$danmakuNow++;
- }
- }
}
\ No newline at end of file
diff --git a/src/danmaku/render/mode4.css b/src/danmaku/render/mode4.css
new file mode 100644
index 0000000..52630a6
--- /dev/null
+++ b/src/danmaku/render/mode4.css
@@ -0,0 +1,11 @@
+.mode4 {
+ --dealy: 0;
+ --duation: 4500;
+
+ position: absolute;
+ will-change: translate;
+ translate: calc(50cqi - 50%);
+ animation: dmMode4 calc(var(--duation) * 1ms) linear calc(var(--dealy) * 1ms) both;
+}
+
+@keyframes dmMode4 {}
\ No newline at end of file
diff --git a/src/danmaku/render/mode4.ts b/src/danmaku/render/mode4.ts
index 6abb38f..494b72d 100644
--- a/src/danmaku/render/mode4.ts
+++ b/src/danmaku/render/mode4.ts
@@ -1,9 +1,37 @@
+import { Mode } from ".";
+import { IDanmaku, Danmaku } from "..";
import { customElement } from "../../utils/Decorator/customElement";
-import { Mode0 } from "./mode0";
/** 底部弹幕 */
-@customElement('div')
-export class Mode4 extends Mode0 {
+@customElement(undefined, `mode4-${Date.now()}`)
+export class Mode4 extends Mode {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
static space: Mode4[][] = [];
@@ -11,12 +39,54 @@ export class Mode4 extends Mode0 {
this.space.length = 0;
}
- private $space() {
- if (this.$wraps < 2) {
- const { $danmakuArea, $heightFix } = this.$container
+ constructor(
+ /** 弹幕数据 */
+ public $dm: IDanmaku,
+ /** 弹幕管理器 */
+ protected $container: Danmaku,
+ ) {
+ super($dm);
+ }
+
+ async execute($delay = 0) {
+ this.$starttimeStamp = this.$endtimeStamp = 0;
+ this.classList.add('mode4', 'pause');
+ this.$container.$host.appendChild(this);
+
+ const { clientHeight } = this;
+ const { $duration } = this.$container
+ this.$height = clientHeight;
+ this.$duration = $duration;
+ this.addEventListener('animationend', this.#animationend, { once: true });
+ this.style.setProperty('--duation', this.$duration);
+ this.style.setProperty('--dealy', $delay);
+ this.#space();
+ this.classList.remove('pause');
+ this.$wraps || this.$container.$danmakuNow++;
+ }
+
+ /** 运动结束处理 */
+ #animationend = (ev: AnimationEvent) => {
+ this.$endtimeStamp = ev.timeStamp;
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ /** 取消弹幕 */
+ #cancel() {
+ this.removeEventListener('animationend', this.#animationend);
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ #space() {
+ if (!this.$wraps) {
+ const { $danmakuArea, $heightFix } = this.$container;
for (let i = 0; i <= Mode4.space.length; i++) {
if ($danmakuArea && i) {
- return this.$cancel();
+ return this.#cancel();
}
if (!Mode4.space[i]) {
// 弹幕层尚未创建,直接创建
@@ -25,7 +95,7 @@ export class Mode4 extends Mode0 {
layer.fill(this, 0, Math.ceil(this.$height));
Mode4.space.push(layer);
break;
- } else if (this.$layer(Mode4.space[i])) {
+ } else if (this.#layer(Mode4.space[i])) {
// 弹幕层可以进入
break;
}
@@ -39,11 +109,11 @@ export class Mode4 extends Mode0 {
* @param layer 弹幕层
* @returns 是否可以添加弹幕
*/
- private $layer(layer: Mode4[]) {
- const { $heightFix } = this.$container
+ #layer(layer: Mode4[]) {
+ const { $heightFix } = this.$container;
layer.length = Math.ceil($heightFix);
for (let i = 0; i + this.$height < $heightFix; i += this.$height) {
- if (this.$add(layer, i, i + this.$height)) {
+ if (this.#add(layer, i, i + this.$height)) {
return true;
}
}
@@ -58,7 +128,7 @@ export class Mode4 extends Mode0 {
* @param to 弹幕下限高度
* @returns 是否允许添加
*/
- private $add(layer: Mode4[], from: number, to: number) {
+ #add(layer: Mode4[], from: number, to: number) {
const set = new Set();
for (let i = Math.ceil(from); i < Math.ceil(to); i++) {
layer[i] && set.add(layer[i]);
@@ -70,44 +140,8 @@ export class Mode4 extends Mode0 {
return false
}
}
- this.style.translate = `0 ${this.$container.$heightFix - to}px`;
+ this.style.insetBlockEnd = `${from}px`;
layer.fill(this, Math.ceil(from), Math.ceil(to));
return true;
}
-
- /** 运动结束处理 */
- private $animationend = (ev: AnimationEvent) => {
- this.$endtimeStamp = ev.timeStamp;
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- /** 取消弹幕 */
- private $cancel() {
- this.removeEventListener('animationend', this.$animationend);
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- async execute(delay = 0) {
- if (this.$render) {
- this.$render = false;
- this.$endtimeStamp = this.$starttimeStamp = 0;
- this.style.transform = 'translateX(calc(50cqw - 50%))';
- this.$container.appendChild(this);
-
- const { clientHeight } = this;
- const { $duration } = this.$container
- this.$height = clientHeight;
- this.$duration = $duration;
- this.addEventListener('animationend', this.$animationend, { once: true });
- this.$space();
- this.style.animation = `0ms linear ${delay + this.$duration}ms both dmMode4`;
- this.$wraps > 1 || this.$container.$danmakuNow++;
- }
- }
}
\ No newline at end of file
diff --git a/src/danmaku/render/mode5.css b/src/danmaku/render/mode5.css
new file mode 100644
index 0000000..679d817
--- /dev/null
+++ b/src/danmaku/render/mode5.css
@@ -0,0 +1,11 @@
+.mode5 {
+ --dealy: 0;
+ --duation: 4500;
+
+ position: absolute;
+ will-change: translate;
+ translate: calc(50cqi - 50%);
+ animation: dmMode5 calc(var(--duation) * 1ms) linear calc(var(--dealy) * 1ms) both;
+}
+
+@keyframes dmMode5 {}
\ No newline at end of file
diff --git a/src/danmaku/render/mode5.ts b/src/danmaku/render/mode5.ts
index c689370..fd070b1 100644
--- a/src/danmaku/render/mode5.ts
+++ b/src/danmaku/render/mode5.ts
@@ -1,9 +1,37 @@
+import { Mode } from ".";
+import { IDanmaku, Danmaku } from "..";
import { customElement } from "../../utils/Decorator/customElement";
-import { Mode0 } from "./mode0";
-/** 顶部 */
-@customElement('div')
-export class Mode5 extends Mode0 {
+/** 顶部弹幕 */
+@customElement(undefined, `mode5-${Date.now()}`)
+export class Mode5 extends Mode {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
static space: Mode5[][] = [];
@@ -11,12 +39,54 @@ export class Mode5 extends Mode0 {
this.space.length = 0;
}
- private $space() {
- if (this.$wraps < 2) {
+ constructor(
+ /** 弹幕数据 */
+ public $dm: IDanmaku,
+ /** 弹幕管理器 */
+ protected $container: Danmaku,
+ ) {
+ super($dm);
+ }
+
+ async execute($delay = 0) {
+ this.$starttimeStamp = this.$endtimeStamp = 0;
+ this.classList.add('mode5', 'pause');
+ this.$container.$host.appendChild(this);
+
+ const { clientHeight } = this;
+ const { $duration } = this.$container
+ this.$height = clientHeight;
+ this.$duration = $duration;
+ this.addEventListener('animationend', this.#animationend, { once: true });
+ this.style.setProperty('--duation', this.$duration);
+ this.style.setProperty('--dealy', $delay);
+ this.#space();
+ this.classList.remove('pause');
+ this.$wraps || this.$container.$danmakuNow++;
+ }
+
+ /** 运动结束处理 */
+ #animationend = (ev: AnimationEvent) => {
+ this.$endtimeStamp = ev.timeStamp;
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ /** 取消弹幕 */
+ #cancel() {
+ this.removeEventListener('animationend', this.#animationend);
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ #space() {
+ if (!this.$wraps) {
const { $danmakuArea, $heightFix } = this.$container;
for (let i = 0; i <= Mode5.space.length; i++) {
if ($danmakuArea && i) {
- return this.$cancel();
+ return this.#cancel();
}
if (!Mode5.space[i]) {
// 弹幕层尚未创建,直接创建
@@ -25,7 +95,7 @@ export class Mode5 extends Mode0 {
layer.fill(this, 0, Math.ceil(this.$height));
Mode5.space.push(layer);
break;
- } else if (this.$layer(Mode5.space[i])) {
+ } else if (this.#layer(Mode5.space[i])) {
// 弹幕层可以进入
break;
}
@@ -39,11 +109,11 @@ export class Mode5 extends Mode0 {
* @param layer 弹幕层
* @returns 是否可以添加弹幕
*/
- private $layer(layer: Mode5[]) {
+ #layer(layer: Mode5[]) {
const { $heightFix } = this.$container;
layer.length = Math.ceil($heightFix);
for (let i = 0; i + this.$height < $heightFix; i += this.$height) {
- if (this.$add(layer, i, i + this.$height)) {
+ if (this.#add(layer, i, i + this.$height)) {
return true;
}
}
@@ -58,7 +128,7 @@ export class Mode5 extends Mode0 {
* @param to 弹幕下限高度
* @returns 是否允许添加
*/
- private $add(layer: Mode5[], from: number, to: number) {
+ #add(layer: Mode5[], from: number, to: number) {
const set = new Set();
for (let i = Math.ceil(from); i < Math.ceil(to); i++) {
layer[i] && set.add(layer[i]);
@@ -70,45 +140,8 @@ export class Mode5 extends Mode0 {
return false
}
}
- this.style.translate = `0 ${from}px`;
+ this.style.insetBlockStart = `${from}px`;
layer.fill(this, Math.ceil(from), Math.ceil(to));
return true;
}
-
-
- /** 运动结束处理 */
- private $animationend = (ev: AnimationEvent) => {
- this.$endtimeStamp = ev.timeStamp;
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- /** 取消弹幕 */
- private $cancel() {
- this.removeEventListener('animationend', this.$animationend);
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- async execute(delay = 0) {
- if (this.$render) {
- this.$render = false;
- this.$endtimeStamp = this.$starttimeStamp = 0;
- this.style.transform = 'translateX(calc(50cqw - 50%))';
- this.$container.appendChild(this);
-
- const { clientHeight } = this;
- const { $duration } = this.$container
- this.$height = clientHeight;
- this.$duration = $duration;
- this.addEventListener('animationend', this.$animationend, { once: true });
- this.$space();
- this.style.animation = `0ms linear ${delay + this.$duration}ms both dmMode5`;
- this.$wraps > 1 || this.$container.$danmakuNow++;
- }
- }
}
\ No newline at end of file
diff --git a/src/danmaku/render/mode6.css b/src/danmaku/render/mode6.css
new file mode 100644
index 0000000..9a95eb3
--- /dev/null
+++ b/src/danmaku/render/mode6.css
@@ -0,0 +1,15 @@
+.mode6 {
+ --dealy: 0;
+ --duation: 4500;
+
+ position: absolute;
+ will-change: translate;
+ translate: -100%;
+ animation: dmMode6 calc(var(--duation) * 1ms) linear calc(var(--dealy) * 1ms) both;
+}
+
+@keyframes dmMode6 {
+ to {
+ translate: 100cqi;
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/mode6.ts b/src/danmaku/render/mode6.ts
index a40b3fc..ac99d01 100644
--- a/src/danmaku/render/mode6.ts
+++ b/src/danmaku/render/mode6.ts
@@ -1,9 +1,37 @@
+import { Mode } from ".";
+import { IDanmaku, Danmaku } from "..";
import { customElement } from "../../utils/Decorator/customElement";
-import { Mode0 } from "./mode0";
/** 逆向弹幕 */
-@customElement('div')
-export class Mode6 extends Mode0 {
+@customElement(undefined, `mode6-${Date.now()}`)
+export class Mode6 extends Mode {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
static space: Mode6[][] = [];
@@ -11,12 +39,61 @@ export class Mode6 extends Mode0 {
this.space.length = 0;
}
+ constructor(
+ /** 弹幕数据 */
+ public $dm: IDanmaku,
+ /** 弹幕管理器 */
+ protected $container: Danmaku,
+ ) {
+ super($dm);
+ }
+
+ async execute($delay = 0) {
+ this.$starttimeStamp = this.$endtimeStamp = 0;
+ this.classList.add('mode6', 'pause');
+ this.$container.$host.appendChild(this);
+
+ const { clientWidth, clientHeight } = this;
+ const { $speedPlus, $speedSync, $rate, $duration, $width } = this.$container;
+ this.$width = clientWidth;
+ this.$height = clientHeight;
+ this.$duration = $duration / $speedPlus / ($speedSync ? $rate : 1) * (this.$width + $width) / (512 + this.$width);
+ this.$speed = (512 + this.$width) / ($duration / $speedPlus / ($speedSync ? $rate : 1));
+ this.addEventListener('animationstart', this.#animationstart, { once: true });
+ this.addEventListener('animationend', this.#animationend, { once: true });
+ this.style.setProperty('--duation', this.$duration);
+ this.style.setProperty('--dealy', $delay);
+ this.$space();
+ this.classList.remove('pause');
+ this.$wraps || this.$container.$danmakuNow++;
+ }
+
+ #animationstart = (ev: AnimationEvent) => {
+ this.$starttimeStamp = ev.timeStamp;
+ }
+
+ /** 运动结束处理 */
+ #animationend = (ev: AnimationEvent) => {
+ this.$endtimeStamp = ev.timeStamp;
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
+ /** 取消弹幕 */
+ #cancel() {
+ this.removeEventListener('animationend', this.#animationend);
+ this.remove();
+ this.style.animation = '';
+ this.$wraps || this.$container.$danmakuNow--;
+ }
+
private $space() {
- if (this.$wraps < 2) {
+ if (!this.$wraps) {
const { $danmakuArea, $heightFix } = this.$container;
for (let i = 0; i <= Mode6.space.length; i++) {
if ($danmakuArea && i) {
- return this.$cancel();
+ return this.#cancel();
}
if (!Mode6.space[i]) {
// 弹幕层尚未创建,直接创建
@@ -25,7 +102,7 @@ export class Mode6 extends Mode0 {
layer.fill(this, 0, Math.ceil(this.$height));
Mode6.space.push(layer);
break;
- } else if (this.$layer(Mode6.space[i])) {
+ } else if (this.#layer(Mode6.space[i])) {
// 弹幕层可以进入
break;
}
@@ -39,11 +116,11 @@ export class Mode6 extends Mode0 {
* @param layer 弹幕层
* @returns 是否可以添加弹幕
*/
- private $layer(layer: Mode6[]) {
+ #layer(layer: Mode6[]) {
const { $heightFix } = this.$container;
layer.length = Math.ceil($heightFix);
for (let i = 0; i + this.$height < $heightFix; i += this.$height) {
- if (this.$add(layer, i, i + this.$height)) {
+ if (this.#add(layer, i, i + this.$height)) {
return true;
}
}
@@ -58,7 +135,7 @@ export class Mode6 extends Mode0 {
* @param to 弹幕下限高度
* @returns 是否允许添加
*/
- private $add(layer: Mode6[], from: number, to: number) {
+ #add(layer: Mode6[], from: number, to: number) {
const set = new Set();
for (let i = Math.ceil(from); i < Math.ceil(to); i++) {
layer[i] && set.add(layer[i]);
@@ -75,7 +152,7 @@ export class Mode6 extends Mode0 {
return false;
}
// 计算弹幕距离
- const pauseStamp = this.$pause(pre);
+ const pauseStamp = this.#pause(pre);
if ((timeStamp - pre.$starttimeStamp - pauseStamp) * pre.$speed <= pre.$width) {
// 本行弹幕尚未完全显示,必定追尾,拒绝进入
return false;
@@ -95,7 +172,7 @@ export class Mode6 extends Mode0 {
return false;
}
}
- this.style.translate = `0 ${from}px`;
+ this.style.insetBlockStart = `${from}px`;
layer.fill(this, Math.ceil(from), Math.ceil(to));
return true;
}
@@ -106,7 +183,7 @@ export class Mode6 extends Mode0 {
* @param pre 当前行参数
* @returns
*/
- private $pause(pre: Mode6) {
+ #pause(pre: Mode6) {
if (!this.$container.$pauseTimeStamp) {
// 弹幕未曾暂停过,无需修正处理
return 0;
@@ -126,46 +203,4 @@ export class Mode6 extends Mode0 {
return 0;
}
}
-
- private $animationstart = (ev: AnimationEvent) => {
- this.$starttimeStamp = ev.timeStamp;
- }
-
- /** 运动结束处理 */
- private $animationend = (ev: AnimationEvent) => {
- this.$endtimeStamp = ev.timeStamp;
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- /** 取消弹幕 */
- private $cancel() {
- this.removeEventListener('animationend', this.$animationend);
- this.remove();
- this.style.animation = '';
- this.$wraps > 1 || this.$container.$danmakuNow--;
- this.$render = true;
- }
-
- async execute(delay = 0) {
- if (this.$render) {
- this.$render = false;
- this.$endtimeStamp = this.$starttimeStamp = 0;
- this.style.transform = 'translateX(-100%)';
- this.$container.appendChild(this);
-
- const { clientWidth, clientHeight } = this;
- const { $speedPlus, $speedSync, $rate, $duration, $width } = this.$container
- this.$width = clientWidth;
- this.$height = clientHeight;
- this.$duration = $duration / $speedPlus / ($speedSync ? $rate : 1) * (this.$width + $width) / (512 + this.$width);
- this.$speed = (512 + this.$width) / ($duration / $speedPlus / ($speedSync ? $rate : 1));
- this.addEventListener('animationstart', this.$animationstart, { once: true });
- this.addEventListener('animationend', this.$animationend, { once: true });
- this.$space();
- this.style.animation = `${this.$duration}ms linear ${delay}ms both dmMode6`;
- }
- }
}
\ No newline at end of file
diff --git a/src/danmaku/render/mode7.ts b/src/danmaku/render/mode7.ts
deleted file mode 100644
index 921ceba..0000000
--- a/src/danmaku/render/mode7.ts
+++ /dev/null
@@ -1,437 +0,0 @@
-import { Danmaku, IDanmaku } from "..";
-import { customElement } from "../../utils/Decorator/customElement";
-import { Element } from "../../utils/element";
-import { Format } from "../../utils/fomat";
-
-/** 高级弹幕 */
-@customElement('div')
-export class Mode7 extends HTMLDivElement {
-
- /** 初始透明度 */
- protected $sOpacity = 1;
-
- /** 最终透明度 */
- protected $eOpacity = 1;
-
- /** 初始横坐标 */
- protected $startX = 0;
-
- /** 初始纵坐标 */
- protected $startY = 0;
-
- /** 生存时间 */
- protected $duration = 4500;
-
- /** 显示文本 */
- protected $text = '';
-
- /** z轴旋转角 */
- protected $zRotate = 0;
-
- /** y轴旋转角 */
- protected $yRotate = 0;
-
- /** 最终横坐标 */
- protected $endX = 0;
-
- /** 最终纵坐标 */
- protected $endY = 0;
-
- /** 运动时间 */
- protected $aTime = 0;
-
- /** 初始位置暂停时间 */
- protected $aDelay = 0;
-
- /** 描边 */
- protected $stroked = 1;
-
- /** 字体 */
- protected $family = '黑体';
-
- /** 线性加速 */
- protected $linearSpeedUp = 0;
-
- /**
- * 路径追踪
- * 参考svg path算法
- *
- * @example
- * 'M107,82L108,83L109,84L111,88'
- */
- protected $path = '';
-
- /** 已解析路径 */
- protected $paths: [number, number][] = [];
-
- protected $root = this.attachShadow({ mode: 'closed' });
-
- protected $div = this.$root.appendChild(document.createElement('div'));
-
- protected $style = this.$root.appendChild(document.createElement('style'));
-
- protected $pre = Element.add('pre', undefined, this.$div);
-
- constructor(
- /** 弹幕管理组件 */
- protected $container: Danmaku,
- /** 弹幕数据 */
- public $dm: IDanmaku,
- ) {
- super();
-
- this.$decode();
- this.$initStyle();
- }
-
- private $decode() {
- try {
- typeof this.$dm.content === 'string' && (this.$dm.content = JSON.parse(this.$dm.content));
- const [
- startX,
- startY,
- opacity,
- duration,
- text,
- zRotate,
- yRotate,
- endX,
- endY,
- aTime,
- aDelay,
- stroked,
- family,
- linearSpeedUp,
- path,
- ] = this.$dm.content;
- startX && (this.$startX = +startX);
- startY && (this.$startY = +startY);
- opacity.split('-').forEach((d: number, i: number) => {
- if (i) {
- d >= 0 && (this.$eOpacity = +d);
- } else {
- d >= 0 && (this.$sOpacity = +d);
- }
- });
- duration >= 0 && (this.$duration = duration * 1000);
- text && (this.$text = text.replace(/(\/n|\\n|\n|\r\n)/g, '\n'));
- zRotate && (this.$zRotate = +zRotate);
- yRotate && (this.$yRotate = +yRotate);
- this.$endX = endX ?? this.$startX;
- this.$endY = endY ?? this.$startY;
- aTime && (this.$aTime = +aTime);
- aDelay && (this.$aDelay = +aDelay);
- stroked && stroked !== 'false' && (this.$stroked = 1);
- family && (this.$family = family);
- linearSpeedUp && linearSpeedUp !== '0' && (this.$linearSpeedUp = 1);
- if (path) {
- this.$path = path;
- this.$paths = this.$path.slice(1).split('L').map(d => d.split(','));
- }
- } catch { }
- }
-
- private $initStyle() {
- this.classList.add('mode7');
- this.$div.style.cssText = `display: inline-block; position: absolute; inset-block-start: 0px; inset-inline-start: 0px; inline-size: 100%; block-size: 100%; perspective: calc(100cqi / 2 / tan((${Math.PI} / 180) * (55 / 2))); opacity: 1;`;
- // 一般样式
- this.$pre.style.display = 'inline-block';
- this.$pre.style.lineHeight = '1';
- this.$pre.style.transformOrigin = '0% 0% 0px';
- this.$pre.style.setProperty('content-visibility', 'auto');
- this.$pre.style.fontFamily = 'bold';
- this.$pre.style.margin = '0';
- // 字体大小
- this.$pre.style.fontSize = `${this.$dm.fontsize}px`;
- // 字体颜色
- this.$pre.style.color = Format.hexColor(this.$dm.color || 0);
- // 描边
- const shadowColor = this.$dm.color !== 0 ? '#000' : '#fff';
- this.$stroked && (this.$pre.style.textShadow = `1px 0 1px ${shadowColor},0 1px 1px ${shadowColor},0 -1px 1px ${shadowColor},-1px 0 1px ${shadowColor}`);
- // 字体
- this.$family && (this.$pre.style.fontFamily = `${this.$family}, Arial, Helvetica, sans-serif`);
- // 文本
- this.$pre.innerText = this.$text;
- }
-
- private initPath() {
- const pre = `matrix3d(calc(cos(${this.$yRotate}deg) * cos(${this.$zRotate}deg)),calc(cos(${this.$yRotate}deg) * sin(${this.$zRotate}deg)),calc(sin(${this.$yRotate}deg)),0,calc(0 - sin(${this.$zRotate}deg)),calc(cos(${this.$zRotate}deg)),0,0,calc(0 - sin(${this.$yRotate}deg) * cos(${this.$zRotate}deg)),calc(0 - sin(${this.$yRotate}deg) * sin(${this.$zRotate}deg)),calc(cos(${this.$yRotate}deg)),0,`;
- if (!this.$aTime) {
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- }
- to {
- opacity: ${this.$eOpacity};
- }
-}`;
- } else if (this.$paths.length) {
- // 使用路径跟随
- if (this.$paths.length === 1) {
- // 路径点只有一个,那就等于没动
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- }
- to {
- opacity: ${this.$eOpacity};
- }
-}`;
- } else {
- if (this.$aDelay) {
- // 有运动延时
- const aD = Math.min(this.$aDelay, this.$duration);
- if (aD < this.$duration) {
- // 运动延时小于存活时间
- const aT = Math.min(aD + this.$aTime, this.$duration);
- if (aT < this.$duration) {
- // 运动时间小于存活时间
- const s0 = aD / this.$duration;
- const dd = (this.$aTime / (this.$paths.length - 1)) / this.$duration;
- const arr = [`from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$paths.at(0)![0]) || 0},${this.getPx(this.$paths.at(0)![1], true) || 0},0,1);
-}`];
- for (let i = 0; i < this.$paths.length; i++) {
- const [x, y] = this.$paths[i];
- arr.push(`${(s0 + dd * i) * 100}% {
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- }
- arr.push(`to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$paths.at(-1)![0]) || 0},${this.getPx(this.$paths.at(-1)![1], true) || 0},0,1);
-}`);
- return `@keyframes dmMode7 {
-${arr.join('\n\t')}
-}`;
- } else {
- // 运动时间不小于存活时间
- const s0 = aD / this.$duration;
- const dd = (this.$aTime / (this.$paths.length - 1)) / this.$duration;
- const arr = [`from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$paths.at(0)![0]) || 0},${this.getPx(this.$paths.at(0)![1], true) || 0},0,1);
-}`];
- for (let i = 0; i < this.$paths.length; i++) {
- const [x, y] = this.$paths[i];
- switch (i) {
- case this.$paths.length - 1: {
- arr.push(`to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- default: {
- arr.push(`${(s0 + dd * i) * 100}% {
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- }
- }
- return `@keyframes dmMode7 {
-${arr.join('\n\t')}
-}`;
- }
- } else {
- // 运动延时不小于存活时间
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- }
- to {
- opacity: ${this.$eOpacity};
- }
-}`;
- }
- } else {
- // 无运动延时
- const aT = Math.min(this.$aTime, this.$duration);
- if (aT < this.$duration) {
- // 运动时间小于存活时间
- const dd = (this.$aTime / (this.$paths.length - 1)) / this.$duration;
- const arr: string[] = [];
- for (let i = 0; i < this.$paths.length; i++) {
- const [x, y] = this.$paths[i];
- switch (i) {
- case 0: {
- arr.push(`from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- default: {
- arr.push(`${dd * i * 100}% {
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- }
- }
- arr.push(`to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$paths.at(-1)![0]) || 0},${this.getPx(this.$paths.at(-1)![1], true) || 0},0,1);
-}`);
- return `@keyframes dmMode7 {
-${arr.join('\n\t')}
-}`;
- } else {
- // 运动时间不小于存活时间
- const dd = (this.$duration / (this.$paths.length - 1)) / this.$duration;
- const arr: string[] = [];
- for (let i = 0; i < this.$paths.length; i++) {
- const [x, y] = this.$paths[i];
- switch (i) {
- case 0: {
- arr.push(`from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- case this.$paths.length - 1: {
- arr.push(`to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break;
- }
- default: {
- arr.push(`${dd * i * 100}% {
- transform: ${pre}${this.getPx(x) || 0},${this.getPx(y, true) || 0},0,1);
-}`);
- break
- }
- }
- }
- return `@keyframes dmMode7 {
-${arr.join('\n\t')}
-}`;
- }
- }
- }
- } else {
- // 使用起始路径
- if (this.$aDelay) {
- // 有运动延时
- const aD = Math.min(this.$aDelay, this.$duration);
- if (aD < this.$duration) {
- // 运动延时小于存活时间
- const aT = Math.min(aD + this.$aTime, this.$duration);
- if (aT < this.$duration) {
- // 运动时间小于存活时间
- const s0 = aD / this.$duration;
- const se = aT / this.$duration;
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- ${s0 * 100}% {
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- ${se * 100}% {
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
- to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
-}`;
- } else {
- // 运动时间不小于存活时间
- const s0 = aD / this.$duration;
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- ${s0 * 100}% {
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
-}`;
- }
- } else {
- // 运动延时不小于存活时间
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
-}`;
- }
- } else {
- // 无运动延时
- const aT = Math.min(this.$aTime, this.$duration);
- if (aT < this.$duration) {
- // 运动时间小于存活时间
- const se = aT / this.$duration;
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- ${se * 100}% {
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
- to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
-}`;
- } else {
- // 运动时间不小于存活时间
- return `@keyframes dmMode7 {
- from {
- opacity: ${this.$sOpacity};
- transform: ${pre}${this.getPx(this.$startX) || 0},${this.getPx(this.$startY, true) || 0},0,1);
- }
- to {
- opacity: ${this.$eOpacity};
- transform: ${pre}${this.getPx(this.$endX) || 0},${this.getPx(this.$endY, true) || 0},0,1);
- }
-}`;
- }
- }
- }
- }
-
- /**
- * 获取实际坐标值
- * 原始值可能是一个百分比
- *
- * @param v 原始值
- * @param x 改为基于纵坐标,默认基于横坐标
- */
- private getPx(v: number, x = true) {
- if (v > 0 && v < 1) {
- return x ? this.$container.$height * v : this.$container.$width * v;
- }
- return v;
- }
-
- /** 运动结束处理 */
- private $animationend = (ev: AnimationEvent) => {
- this.remove();
- this.style.animation = '';
- }
-
- async execute(delay = 0) {
- this.$style.textContent = this.initPath();
- this.$pre.addEventListener('animationend', this.$animationend, { once: true });
- this.$pre.style.animation = `${this.$duration}ms ${this.$linearSpeedUp ? 'ease-in' : 'linear'} ${delay}ms both dmMode7`;
- this.$pre.style.setProperty('animation-play-state', 'var(--animation-play-state)');
- this.$container.appendChild(this);
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/render/mode7/index.css b/src/danmaku/render/mode7/index.css
new file mode 100644
index 0000000..5b3aade
--- /dev/null
+++ b/src/danmaku/render/mode7/index.css
@@ -0,0 +1,129 @@
+@scope {
+ :scope {
+ display: inline-block;
+ position: absolute;
+ /* 修正弹幕容器分辨率以适应视频分辨率 */
+ inset-block: var(--inset-block);
+ inset-inline: var(--inset-inline);
+ /* 高级弹幕透视效果在原版是固定的 288 多一点,在不同播放器分辨率下显示会形变,要等比放大 */
+ perspective: calc((100cqb - var(--inset-block)) / 440 * 288.1473083496094);
+ opacity: 1;
+ container: mode7 / size;
+ }
+}
+
+pre {
+ /* 弹幕基准放大倍率 */
+ --font-basis: calc(100cqb / 440);
+
+ /** 初始透明度 */
+ --sOpacity: 1;
+ /** 最终透明度 */
+ --eOpacity: 1;
+ /** 初始横坐标 */
+ --startX: 0;
+ /** 初始纵坐标 */
+ --startY: 0;
+ /** 最终横坐标 */
+ --endX: 0;
+ /** 最终纵坐标 */
+ --endY: 0;
+ /** z轴旋转角 */
+ --zRotate: 0;
+ /** y轴旋转角 */
+ --yRotate: 0;
+ /** 生存时间 */
+ --duration: 4500;
+ /** 运动时间 */
+ --aTime: 0;
+ /** 初始位置暂停时间 */
+ --aDelay: 0;
+ /* 动画统一延时 */
+ --delay: 0;
+ /**
+ * 路径追踪
+ * 参考svg path算法
+ *
+ * @example
+ * 'M107,82L108,83L109,84L111,88'
+ */
+ --path: "";
+
+ position: absolute;
+ line-height: 1;
+ display: inline-block;
+ line-height: 1;
+ transform-origin: 0% 0% 0px;
+ content-visibility: auto;
+ margin: 0;
+ animation-timing-function: linear;
+ /* 高级弹幕的一大困境是字体大小不会随着播放器分辨率变大,这里强制等比放大 */
+ font-size: calc(var(--fontsize) * var(--font-basis));
+ font-weight: var(--font-weight);
+ /* y z 轴同时旋转始终不知道如何用 rotate 函数处理,只能强行写复杂的 matrix3d 函数,16 位数调试起来简直地狱难度 */
+ transform: matrix3d(calc(cos(var(--yRotate) * 1deg) * cos(var(--zRotate) * 1deg)), calc(cos(var(--yRotate) * 1deg) * sin(var(--zRotate) * 1deg)), calc(sin(var(--yRotate) * 1deg)), 0, calc(0 - sin(var(--zRotate) * 1deg)), calc(cos(var(--zRotate) * 1deg)), 0, 0, calc(0 - sin(var(--yRotate) * 1deg) * cos(var(--zRotate) * 1deg)), calc(0 - sin(var(--yRotate) * 1deg) * sin(var(--zRotate) * 1deg)), calc(cos(var(--yRotate) * 1deg)), 0, 0, 0, 0, 1);
+ animation-name: inset, opacity;
+ animation-duration: calc(var(--aTime) * 1ms), calc(var(--duration) * 1ms);
+ animation-delay: calc((var(--aDelay) + var(--delay)) * 1ms), calc(var(--delay) * 1ms);
+ animation-fill-mode: both;
+
+ &:not(.no-stroked) {
+ text-shadow: 1px 0 1px var(--text-shadow), 0 1px 1px var(--text-shadow), 0 -1px 1px var(--text-shadow), -1px 0 1px var(--text-shadow);
+
+ @container danmaku style(--fontBorder: 1) {
+ & {
+ text-shadow: 0px 0px 1px var(--text-shadow), 0 0 1px var(--text-shadow), 0 0 1px var(--text-shadow);
+ }
+ }
+
+ @container danmaku style(--fontBorder: 2) {
+ & {
+ text-shadow: 1px 1px 2px var(--text-shadow), 0 0 1px var(--text-shadow);
+ }
+ }
+ }
+
+ &.path {
+ /* 使用 CSS 运动路径的一大难题是 path 路径取值如何等比放大,以后碰到用例再优化吧,或者考虑回滚 inset 动画 */
+ offset-path: path(var(--path));
+ animation-name: path, opacity;
+ }
+
+ @container danmaku style(--animation-play-state: paused) {
+ & {
+ animation-play-state: paused !important;
+ }
+ }
+}
+
+@keyframes opacity {
+ from {
+ opacity: var(--sOpacity);
+ }
+
+ to {
+ opacity: var(--eOpacity);
+ }
+}
+
+@keyframes path {
+ from {
+ offset-distance: 0%;
+ }
+
+ to {
+ offset-distance: 100%;
+ }
+}
+
+@keyframes inset {
+ from {
+ inset-inline-start: var(--startX);
+ inset-block-start: var(--startY);
+ }
+
+ to {
+ inset-inline-start: var(--endX);
+ inset-block-start: var(--endY);
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/mode7/index.d.css.ts b/src/danmaku/render/mode7/index.d.css.ts
new file mode 100644
index 0000000..eb9bc4f
--- /dev/null
+++ b/src/danmaku/render/mode7/index.d.css.ts
@@ -0,0 +1,2 @@
+declare const stylesheet: CSSStyleSheet;
+export default stylesheet;
\ No newline at end of file
diff --git a/src/danmaku/render/mode7/index.ts b/src/danmaku/render/mode7/index.ts
new file mode 100644
index 0000000..246142e
--- /dev/null
+++ b/src/danmaku/render/mode7/index.ts
@@ -0,0 +1,123 @@
+import { Danmaku, IDanmaku } from "../..";
+import { CSSStyleSheet2HTMLStyleElement } from "../../../utils/CSSStyleSheet2HTMLStyleElement";
+import { customElement } from "../../../utils/Decorator/customElement";
+import { Format } from "../../../utils/fomat";
+import stylesheet from "./index.css" with {type: 'css'};
+
+@customElement(undefined, `mode7-${Date.now()}`)
+export class Mode7 extends HTMLElement {
+
+ /**
+ * 需要监听变动的属性。
+ * 与实例方法`attributeChangedCallback`配合使用。
+ * 此字符串序列定义了`attributeChangedCallback`回调时的第一个参数的可能值。
+ */
+ // static observedAttributes = [];
+
+ /**
+ * 在属性更改、添加、移除或替换时调用。
+ * 需要与静态属性`observedAttributes`配合使用。
+ * 此回调的第一个参数在`observedAttributes`数组中定义。
+ */
+ // attributeChangedCallback(name: IobservedAttributes, oldValue: string, newValue: string) {}
+
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
+ /** 每当元素被移动到新文档中时调用。 */
+ // adoptedCallback() {}
+
+ private $host = this.attachShadow({ mode: 'closed' });
+
+ private $pre = this.$host.appendChild(document.createElement('pre'));
+
+ constructor(
+ /** 弹幕数据 */
+ public $dm: IDanmaku,
+ /** 弹幕管理器 */
+ private $container: Danmaku,
+ ) {
+ super();
+
+ // this.#host.adoptedStyleSheets = [stylesheet]; // 文档画中画模式会导致构造的样式表丢失,暂时取道 style 元素代替
+ this.$host.appendChild(CSSStyleSheet2HTMLStyleElement(stylesheet));
+
+ this.$pre.addEventListener('animationend', this.$animationend);
+ }
+
+ async execute($delay = 0) {
+ this.$decode();
+ $delay && this.$pre.style.setProperty('--delay', $delay);
+ this.$container.$host.appendChild(this);
+ }
+
+ /** 位移等比放大处理 */
+ private $insetFix(v: number) {
+ if (v > 0 && v < 1) {
+ // 位移值在 0-1 之间的说明是百分比
+ return Math.floor(v * 100) + 'cqi';
+ }
+ return this.$container.$mode7Scale ? `calc(100cqb / 440 * ${v})` : v + 'px';
+ }
+
+ private $insetFiy(v: number) {
+ if (v > 0 && v < 1) {
+ return Math.floor(v * 100) + 'cqb';
+ }
+ return this.$container.$mode7Scale ? `calc(100cqb / 440 * ${v})` : v + 'px';
+ }
+
+ private $decode() {
+ try {
+ typeof this.$dm.content === 'string' && (this.$dm.content = JSON.parse(this.$dm.content));
+ const [startX, startY, opacity, duration, text, zRotate, yRotate, endX, endY, aTime, aDelay, stroked, family, linearSpeedUp, path] = this.$dm.content;
+ startX && this.$pre.style.setProperty('--startX', this.$insetFix(startX));
+ startY && this.$pre.style.setProperty('--startY', this.$insetFiy(startY));
+ opacity.split('-').forEach((d: number, i: number) => {
+ if (i) {
+ d >= 0 && this.$pre.style.setProperty('--eOpacity', d);
+ } else {
+ d >= 0 && this.$pre.style.setProperty('--sOpacity', d);
+ }
+ });
+ duration >= 0 && this.$pre.style.setProperty('--duration', (duration * 1000));
+ if (text) {
+ this.$pre.innerText = text.replace(/(\/n|\\n|\n|\r\n)/g, '\n');
+ text.split('\n').length > 2 && this.$pre.classList.add('wraps');
+ }
+ zRotate && this.$pre.style.setProperty('--zRotate', zRotate);
+ yRotate && this.$pre.style.setProperty('--yRotate', yRotate);
+ this.$pre.style.setProperty('--endX', this.$insetFix(endX ?? startX));
+ this.$pre.style.setProperty('--endY', this.$insetFiy(endY ?? startY));
+ aTime && this.$pre.style.setProperty('--aTime', aTime);
+ aDelay && this.$pre.style.setProperty('--aDelay', aDelay);
+ stroked === 'false' && this.$pre.classList.add('no-stroked');
+ family && (this.$pre.style.fontFamily = `${family}, Arial, Helvetica, sans-serif`);
+ linearSpeedUp && linearSpeedUp !== '0' && (this.$pre.style.animationTimingFunction = 'ease-in');
+ if (path) {
+ this.$pre.style.setProperty('--path', path);
+ this.$pre.classList.add('path');
+ }
+ // 字体大小
+ this.$container.$mode7Scale ? this.$pre.style.setProperty('--fontsize', this.$dm.fontsize) : (this.$pre.style.fontSize = this.$dm.fontsize + 'px');
+ // 字体颜色
+ this.$dm.color || this.$pre.style.setProperty('--text-shadow', '#ffffff');
+ this.$pre.style.color = Format.hexColor(this.$dm.color || 0);
+ } catch { }
+ }
+
+ /** 运动结束处理 */
+ private $animationend = ({ animationName }: AnimationEvent) => {
+ if (animationName === 'opacity') {
+ this.$pre.removeEventListener('animationend', this.$animationend);
+ this.remove();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/danmaku/render/mode8/Display/Bitmap.ts b/src/danmaku/render/mode8/Display/Bitmap.ts
index 5cc9491..60e27b6 100644
--- a/src/danmaku/render/mode8/Display/Bitmap.ts
+++ b/src/danmaku/render/mode8/Display/Bitmap.ts
@@ -1,9 +1,9 @@
-import { Element } from "../../../../utils/element";
import { BitmapFilter } from "../filters/BitmapFilter";
import { ColorTransform } from "../geom/ColorTransform";
import { Matrix } from "../geom/Matrix";
import { Point } from "../geom/Point";
import { Rectangle } from "../geom/Rectangle";
+import { addElement } from "../Utils/element";
import { BlendMode } from "./BlendMode";
import { ByteArray } from "./ByteArray";
import { DirtyArea } from "./DirtyArea";
@@ -983,7 +983,7 @@ export class Bitmap extends DisplayObject {
}
constructor(param: IBitmap) {
- super(param, true, Element.add('canvas', { class: 'as3-danmaku-item' }));
+ super(param, true, addElement('canvas', { class: 'as3-danmaku-item' }));
this.$host.style.cssText = `position: absolute; inset-block-start: 0; inset-inline-start: 0; transform-origin: 0 0 0;`;
param.bitmapData && (this.bitmapData = param.bitmapData);
this.init();
diff --git a/src/danmaku/render/mode8/Display/CommentButton.ts b/src/danmaku/render/mode8/Display/CommentButton.ts
index 6b8522d..502fbbc 100644
--- a/src/danmaku/render/mode8/Display/CommentButton.ts
+++ b/src/danmaku/render/mode8/Display/CommentButton.ts
@@ -1,4 +1,4 @@
-import { Element } from "../../../../utils/element";
+import { addElement } from "../Utils/element";
import { IDisplay } from "./Display";
import { UIComponent } from "./UIComponent";
@@ -6,7 +6,7 @@ export class CommentButton extends UIComponent {
constructor(param: ICommentButton) {
super(param);
- this.$host = Element.add('button', { class: 'as3-danmaku-item' });
+ this.$host = addElement('button', { class: 'as3-danmaku-item' });
this.$host.classList.add('as3-button');
this.$host.innerText = param.text.replace(/\/n/g, '\n');
param.onclick && this.$host.addEventListener('click', param.onclick);
diff --git a/src/danmaku/render/mode8/Display/DisplayObject.ts b/src/danmaku/render/mode8/Display/DisplayObject.ts
index b0ecae7..c9e19b7 100644
--- a/src/danmaku/render/mode8/Display/DisplayObject.ts
+++ b/src/danmaku/render/mode8/Display/DisplayObject.ts
@@ -1,5 +1,4 @@
import { IDanmaku } from "../../..";
-import { Element } from "../../../../utils/element";
import { Format } from "../../../../utils/fomat";
import { BitmapFilter } from "../filters/BitmapFilter";
import { BlurFilter } from "../filters/BlurFilter";
@@ -10,6 +9,7 @@ import { Point } from "../geom/Point";
import { Rectangle } from "../geom/Rectangle";
import { Transform } from "../geom/Transform";
import { Vector3D } from "../geom/Vector3D";
+import { addElement } from "../Utils/element";
import { AccessibilityProperties } from "./AccessibilityProperties";
import { BitmapData } from "./Bitmap";
import { BlendMode } from "./BlendMode";
@@ -623,7 +623,7 @@ export abstract class DisplayObject {
this._updateBox(true);
}
- constructor(private $param = {}, private $append = true, public $host = Element.add('div', { class: 'as3-danmaku-item' })) { }
+ constructor(private $param = {}, private $append = true, public $host = addElement('div', { class: 'as3-danmaku-item' })) { }
protected init() {
'alpha' in this.$param && (this.alpha = this.$param.alpha);
diff --git a/src/danmaku/render/mode8/Display/Graphics.ts b/src/danmaku/render/mode8/Display/Graphics.ts
index 0444f86..cf36391 100644
--- a/src/danmaku/render/mode8/Display/Graphics.ts
+++ b/src/danmaku/render/mode8/Display/Graphics.ts
@@ -1,6 +1,6 @@
-import { Element } from "../../../../utils/element";
import { Format } from "../../../../utils/fomat";
import { Matrix } from "../geom/Matrix";
+import { addSvg } from "../Utils/element";
import { BitmapData } from "./Bitmap";
import { CapsStyle } from "./CapsStyle";
import { GradientType } from "./GradientType";
@@ -23,13 +23,13 @@ import { TriangleCulling } from "./TriangleCulling";
*/
export class Graphics {
- $defaultContainer = Element.addSvg('g');
+ $defaultContainer = addSvg('g');
- $defaultGroup = Element.addSvg('g');
+ $defaultGroup = addSvg('g');
- $globalDefs = Element.addSvg('defs');
+ $globalDefs = addSvg('defs');
- $defaultEffects = Element.addSvg('defs');
+ $defaultEffects = addSvg('defs');
/** 当前 SVGPathElement 节点 */
@@ -133,11 +133,11 @@ export class Graphics {
focalPointRatio = 0,
) {
const gradId = `gradient-${type}-${this.$globalDefs.childNodes.length}`;
- const grad = type === GradientType.RADIAL ? Element.addSvg('radialGradient') : Element.addSvg('linearGradient');
+ const grad = type === GradientType.RADIAL ? addSvg('radialGradient') : addSvg('linearGradient');
grad.id = gradId;
grad.setAttribute('spreadMethod', spreadMethod.trim());
for (let i = 0, len = ratios.length; i < len; i++) {
- Element.addSvg(
+ addSvg(
'stop',
{
'offset': (ratios[i] / 255) || 0,
@@ -218,7 +218,7 @@ export class Graphics {
anchorY = 0,
) {
if (!this.$lastPath) {
- this.$lastPath = Element.addSvg('path', { d: 'M0 0' });
+ this.$lastPath = addSvg('path', { d: 'M0 0' });
this.applyFill(this.$lastPath);
this.applyStroke(this.$lastPath);
this.$defaultGroup.append(this.$lastPath);
@@ -248,7 +248,7 @@ export class Graphics {
anchorY = 0,
) {
if (!this.$lastPath) {
- this.$lastPath = Element.addSvg('path', { d: 'M0 0' });
+ this.$lastPath = addSvg('path', { d: 'M0 0' });
this.applyFill(this.$lastPath);
this.applyStroke(this.$lastPath);
this.$defaultGroup.append(this.$lastPath);
@@ -270,7 +270,7 @@ export class Graphics {
radius = 0,
) {
if (radius >= 0) {
- const c = Element.addSvg('circle', {
+ const c = addSvg('circle', {
cx: x,
cy: y,
r: radius,
@@ -296,7 +296,7 @@ export class Graphics {
width = 0,
height = 0,
) {
- const e = Element.addSvg('ellipse', {
+ const e = addSvg('ellipse', {
cx: x + width / 2,
cy: y + height / 2,
rx: width / 2,
@@ -382,7 +382,7 @@ export class Graphics {
}
}
}
- const path = Element.addSvg('path', { d });
+ const path = addSvg('path', { d });
this.applyFill(path);
this.applyStroke(path);
this.$defaultGroup.appendChild(path);
@@ -411,7 +411,7 @@ export class Graphics {
y += height;
height = -height;
}
- const r = Element.addSvg('rect', {
+ const r = addSvg('rect', {
x,
y,
width: width || 0,
@@ -449,7 +449,7 @@ export class Graphics {
y += height;
height = -height;
}
- const r = Element.addSvg('rect', {
+ const r = addSvg('rect', {
x,
y,
width,
@@ -635,7 +635,7 @@ export class Graphics {
*/
lineTo(x = 0, y = 0) {
if (!this.$lastPath) {
- this.$lastPath = Element.addSvg('path', { d: 'M0 0' });
+ this.$lastPath = addSvg('path', { d: 'M0 0' });
this.applyFill(this.$lastPath);
this.applyStroke(this.$lastPath);
this.$defaultGroup.append(this.$lastPath);
@@ -650,7 +650,7 @@ export class Graphics {
* @param y 一个表示相对于父显示对象注册点的垂直位置的数字(以像素为单位)。
*/
moveTo(x = 0, y = 0) {
- this.$lastPath = Element.addSvg('path', { d: `M${x || 0} ${y || 0}` });
+ this.$lastPath = addSvg('path', { d: `M${x || 0} ${y || 0}` });
this.applyFill(this.$lastPath);
this.applyStroke(this.$lastPath);
this.$defaultGroup.append(this.$lastPath);
diff --git a/src/danmaku/render/mode8/Display/Shape.ts b/src/danmaku/render/mode8/Display/Shape.ts
index 31cc277..f0f50d6 100644
--- a/src/danmaku/render/mode8/Display/Shape.ts
+++ b/src/danmaku/render/mode8/Display/Shape.ts
@@ -1,6 +1,6 @@
-import { Element } from "../../../../utils/element";
import { BlurFilter } from "../filters/BlurFilter";
import { GlowFilter } from "../filters/GlowFilter";
+import { addSvg } from "../Utils/element";
import { IDisplay } from "./Display";
import { DisplayObject } from "./DisplayObject";
import { Graphics } from "./Graphics";
@@ -23,10 +23,10 @@ export class Shape extends DisplayObject {
this.$filters = value;
if (value) {
this.#graphics.$defaultEffects.remove();
- this.#graphics.$defaultEffects = Element.addSvg('defs');
+ this.#graphics.$defaultEffects = addSvg('defs');
for (let i = 0, len = value.length; i < len; i++) {
const filter = value[i];
- const dFilter = Element.addSvg('filter', {
+ const dFilter = addSvg('filter', {
id: `fe${i}`,
x: '-50%',
y: '-50%',
@@ -34,7 +34,7 @@ export class Shape extends DisplayObject {
height: '200cqb',
});
if (filter instanceof BlurFilter) {
- Element.addSvg('feGaussianBlur', {
+ addSvg('feGaussianBlur', {
in: 'SourceGraphic',
stdDeviation: `${filter.blurX} ${filter.blurY}`,
}, dFilter);
@@ -48,24 +48,24 @@ export class Shape extends DisplayObject {
0, 0, 0, cB / 256, 0,
0, 0, 0, 1, 0,
];
- Element.addSvg('feColorMatrix', {
+ addSvg('feColorMatrix', {
type: 'matrix',
values: cMatrix.join(' '),
}, dFilter);
- Element.addSvg('feGaussianBlur', {
+ addSvg('feGaussianBlur', {
stdDeviation: `${filter.blurX} ${filter.blurY}`,
result: 'coloredBlur',
}, dFilter);
- const m = Element.addSvg('feMerge', undefined, dFilter);
- Element.addSvg('feMergeNode', { in: 'coloredBlur' }, m);
- Element.addSvg('feMergeNode', { in: 'SourceGraphic' }, m);
+ const m = addSvg('feMerge', undefined, dFilter);
+ addSvg('feMergeNode', { in: 'coloredBlur' }, m);
+ addSvg('feMergeNode', { in: 'SourceGraphic' }, m);
}
}
this.$host.append(this.#graphics.$defaultEffects);
this.#graphics.$defaultGroup.remove();
let tGroup = this.#graphics.$defaultContainer;
for (let i = 0, len = value.length; i < len; i++) {
- const layeredG = Element.addSvg('g', { filter: `url(#fe${i})` });
+ const layeredG = addSvg('g', { filter: `url(#fe${i})` });
layeredG.appendChild(tGroup);
tGroup = layeredG;
}
@@ -102,10 +102,9 @@ export class Shape extends DisplayObject {
}
constructor(param: IDisplay) {
- super(param, true, Element.addSvg('svg', { class: 'as3-danmaku-item' }));
- const { width, height } = this.root.$host.getBoundingClientRect();
+ super(param, true, addSvg('svg', { class: 'as3-danmaku-item' }));
this.$host.style.cssText = `position: absolute; inline-size: 200cqi; block-size: 200cqb; translate: -50% -50%;`;
- this.#graphics.$defaultContainer.style.cssText = `translate: ${width}px ${height}px;`;
+ this.#graphics.$defaultContainer.style.cssText = `translate: 100cqi 100cqb;`;
this.$host.appendChild(this.#graphics.$globalDefs);
this.$host.appendChild(this.#graphics.$defaultEffects);
this.$host.appendChild(this.#graphics.$defaultContainer);
diff --git a/src/danmaku/render/mode8/Player/Player.ts b/src/danmaku/render/mode8/Player/Player.ts
index a446b96..fea4bb3 100644
--- a/src/danmaku/render/mode8/Player/Player.ts
+++ b/src/danmaku/render/mode8/Player/Player.ts
@@ -1,4 +1,5 @@
-import { Danmaku, DanmakuEvent, IDanmaku } from "../../..";
+import { Danmaku, IDanmaku } from "../../..";
+import { DanmakuEvent } from "../../../event";
import { DisplayObject, rootSprite } from "../Display/DisplayObject";
import { CommentData } from "./CommentData";
import { Sound } from "./Sound";
diff --git a/src/danmaku/render/mode8/Utils/element.ts b/src/danmaku/render/mode8/Utils/element.ts
new file mode 100644
index 0000000..335a8c1
--- /dev/null
+++ b/src/danmaku/render/mode8/Utils/element.ts
@@ -0,0 +1,51 @@
+/**
+ * 生成svg系节点
+ *
+ * @param tag 节点名称
+ * @param attribute 节点属性对象
+ * @param parrent 添加到的父节点
+ */
+export function addSvg(
+ tag: T,
+ attribute?: Record,
+ parrent?: ParentNode,
+) {
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", tag);
+ attribute && (Object.entries(attribute).forEach(d => {
+ Object.hasOwn(attribute, d[0]) && svg.setAttribute(d[0], d[1])
+ }));
+ parrent && parrent.append(svg);
+ return svg;
+}
+
+/**
+ * 创建HTML节点
+ *
+ * @param tag 节点名称
+ * @param attribute 节点属性对象
+ * @param parrent 添加到的父节点
+ * @param innerHTML 节点的innerHTML
+ * @param top 是否在父节点中置顶
+ * @param replaced 替换节点而不是添加,被替换的节点,将忽略父节点相关参数
+ */
+export function addElement(
+ tag: T,
+ attribute?: Record,
+ parrent?: HTMLElement,
+ innerHTML?: string,
+ top?: boolean,
+ replaced?: Element,
+): HTMLElementTagNameMap[T] {
+ const element = document.createElement(tag);
+ attribute && (Object.entries(attribute).forEach(d => {
+ Object.hasOwn(attribute, d[0]) && element.setAttribute(d[0], d[1])
+ }));
+ innerHTML && element.insertAdjacentHTML('beforeend', innerHTML);
+ replaced
+ ? replaced.replaceWith(element)
+ : parrent && (top
+ ? parrent.insertAdjacentElement('afterbegin', element)
+ : parrent.insertAdjacentElement('beforeend', element)
+ )
+ return element;
+}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode8.css b/src/danmaku/render/mode8/index.css
similarity index 83%
rename from src/danmaku/style/render/mode8.css
rename to src/danmaku/render/mode8/index.css
index de33e30..b0e0927 100644
--- a/src/danmaku/style/render/mode8.css
+++ b/src/danmaku/render/mode8/index.css
@@ -12,15 +12,13 @@
outline: none;
user-select: none;
overflow: visible;
- font-size: 12px;
+ font-size: 16px;
color: #99a2aa;
border: 1px solid #ccd0d7;
border-radius: 4px;
background-color: #ffffff;
- padding-inline: 8px;
- padding-block: 4px;
- block-size: 20px;
- line-height: 20px;
+ padding-inline: 20px;
+ padding-block: 10px;
&:hover {
color: #222;
diff --git a/src/danmaku/render/mode8/index.ts b/src/danmaku/render/mode8/index.ts
index 1ff4323..cb7da74 100644
--- a/src/danmaku/render/mode8/index.ts
+++ b/src/danmaku/render/mode8/index.ts
@@ -1,4 +1,5 @@
import { Danmaku, IDanmaku } from "../..";
+import { toastr } from "../../../toastr";
import { Script } from "./Script";
import { Parser } from "./Script/Parser";
import { Scanner } from "./Script/Scanner";
@@ -8,17 +9,18 @@ import { VirtualMachine } from "./Script/VirtualMachine";
export class Mode8 {
/** 解码后的弹幕实例 */
- $vm: VirtualMachine;
+ #vm: VirtualMachine;
constructor(
- /** 弹幕管理组件 */
- protected $container: Danmaku,
/** 弹幕数据 */
public $dm: IDanmaku,
+ /** 弹幕管理组件 */
+ protected $container: Danmaku,
) {
- this.$vm = new VirtualMachine(new Script($container));
+ this.#vm = new VirtualMachine(new Script($container));
this.prase().catch(e => {
+ toastr.error('代码弹幕解析出错~', '这通常只会影响该条弹幕本身您可以放心忽略~', e)
console.error(new SyntaxError('代码弹幕解析出错~', { cause: e }), $dm);
});
}
@@ -37,12 +39,12 @@ export class Mode8 {
}[a]
}));
const p = new Parser(s);
- this.$vm.rewind();
- this.$vm.setByteCode(p.parse(this.$vm));
+ this.#vm.rewind();
+ this.#vm.setByteCode(p.parse(this.#vm));
}
async execute() {
- this.$vm.execute();
- this.$vm.rewind();
+ this.#vm.execute();
+ this.#vm.rewind();
}
}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode9.css b/src/danmaku/render/mode9/index.css
similarity index 100%
rename from src/danmaku/style/render/mode9.css
rename to src/danmaku/render/mode9/index.css
diff --git a/src/danmaku/render/mode9/index.ts b/src/danmaku/render/mode9/index.ts
index 946ff12..ff4a5dd 100644
--- a/src/danmaku/render/mode9/index.ts
+++ b/src/danmaku/render/mode9/index.ts
@@ -1,4 +1,4 @@
-import { Danmaku, IAnimation, IDanmakuBAS, IDef, IDefAttrs, IPercentNum, ISet } from "../..";
+import { Danmaku, IDanmaku } from "../..";
import { customElement } from "../../../utils/Decorator/customElement";
import { AV } from "../../../utils/av";
import { Format } from "../../../utils/fomat";
@@ -210,6 +210,16 @@ export class Mode9 extends HTMLDivElement {
}
}
+ /** 每当元素添加到文档中时调用。 */
+ connectedCallback() {
+ this.$dm.on = true;
+ }
+
+ /** 每当元素从文档中移除时调用。 */
+ disconnectedCallback() {
+ this.$dm.on = false;
+ }
+
private get xProportion() {
return this.$container.$width / 100;
};
@@ -232,13 +242,14 @@ export class Mode9 extends HTMLDivElement {
private $style = document.createElement('style');
constructor(
- /** 弹幕管理组件 */
- protected $container: Danmaku,
/** 弹幕数据 */
public $dm: IDanmakuBAS,
+ /** 弹幕管理组件 */
+ protected $container: Danmaku,
) {
super();
+ Mode9.pretreatDanmaku($dm);
this.defs = $dm.defs;
this.sets = $dm.sets;
}
@@ -360,7 +371,7 @@ export class Mode9 extends HTMLDivElement {
}
}
- this.$container.appendChild(this);
+ this.$container.$host.appendChild(this);
}
/** 动画回调处理函数 */
@@ -688,4 +699,129 @@ export class Mode9 extends HTMLDivElement {
this.percentObj2Num(this.$dm);
this.init();
}
-}
\ No newline at end of file
+}
+
+export interface IDanmakuBAS extends IDanmaku {
+ // 以下为BAS弹幕专用
+ duration: number;
+ def2set: Record;
+ defs: IDef[];
+ sets: ISet[];
+ setsIntervals: Record;
+}
+
+/** 通用属性 */
+interface ICommon {
+ x?: IPercentNum | number;
+ y?: IPercentNum | number;
+ zIndex?: IPercentNum | number;
+ scale?: IPercentNum | number;
+ duration?: number;
+}
+
+/** 文本属性 */
+interface IText extends ICommon {
+ content?: string;
+ alpha?: IPercentNum | number;
+ color?: number;
+ anchorX?: IPercentNum | number;
+ anchorY?: IPercentNum | number;
+ fontSize?: IPercentNum | number;
+ fontFamily?: string;
+ bold?: IPercentNum | number;
+ textShadow?: IPercentNum | number;
+ strokeWidth?: IPercentNum | number;
+ strokeColor?: number;
+ rotateX?: IPercentNum | number;
+ rotateY?: IPercentNum | number;
+ rotateZ?: IPercentNum | number;
+ parent?: string;
+}
+
+/** 按钮属性 */
+interface IButton extends ICommon {
+ text?: string;
+ fontSize?: IPercentNum | number;
+ textColor?: number;
+ textAlpha?: IPercentNum | number;
+ fillColor?: number;
+ fillAlpha?: IPercentNum | number;
+ target?: IButtonTarget;
+}
+
+/** 按钮回调 */
+interface IButtonTarget {
+ objType: 'av' | 'bangumi' | 'seek';
+ time?: number;
+ page?: number;
+ av?: number;
+ bvid?: string;
+ seasonId?: number;
+ episodeId?: number;
+}
+
+interface IPath extends ICommon {
+ d?: string;
+ viewBox?: string;
+ borderColor?: number;
+ borderAlpha?: IPercentNum | number;
+ borderWidth?: IPercentNum | number;
+ fillColor?: number;
+ fillAlpha?: IPercentNum | number;
+}
+
+export interface IDefAttrs extends IText, IButton, IPath {
+ width?: number;
+ height?: number;
+}
+
+/** 弹幕事件 */
+export enum DanmakuEvent {
+
+ /** 添加弹幕,注意参数为新增弹幕 */
+ DANMAKU_ADD,
+
+ /** 发送弹幕 */
+ DANMAKU_SEND,
+}
+
+
+/** 弹幕事件对应的数据类型 */
+export interface IDanmakuEvent {
+ 0: IDanmaku[];
+ 1: IDanmaku;
+}
+
+export interface IAnimation {
+ delay: number;
+ duration: number;
+ easing: string;
+ group: number;
+ name: string;
+ valueStart?: IDefAttrs;
+ valueEnd: IDefAttrs;
+}
+
+export interface IPercentNum {
+ numType: 'number' | 'percent';
+ value: number;
+}
+
+export interface IDef {
+ attrs: IDefAttrs;
+ name: string;
+ obj_type: string;
+ type: 'DefText' | 'DefButton' | 'DefPath';
+ _reg_order: number;
+}
+
+export interface ISet {
+ type: 'Serial' | 'Parallel' | 'Unit';
+ items?: ISet[];
+ attrs?: IDefAttrs;
+ defaultEasing?: string;
+ default_easing?: string;
+ duration?: number;
+ targetName?: string;
+ target_name?: string;
+}
diff --git a/src/danmaku/style/index.css b/src/danmaku/style/index.css
deleted file mode 100644
index 44503d3..0000000
--- a/src/danmaku/style/index.css
+++ /dev/null
@@ -1,26 +0,0 @@
-@import url(./render/mode0.css);
-
-.b-danmaku {
- position: absolute;
- margin: 0;
- padding: 0;
- border: 0;
- inset: 0;
- container: danmaku / size;
- pointer-events: none;
- overflow: hidden;
-
- --animation-play-state: running;
-
- --font-size: 25px;
- --text-shadow: #000;
- --fontSize: 1;
- --wraps: 1;
- --fontBorder: 0;
- --font-family: SimHei, "Microsoft JhengHei";
- --font-weight: bold;
- --opacity: 1;
- --like: 1;
- --colorful: 1;
- --full-screen-sync: 0;
-}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode0.css b/src/danmaku/style/render/mode0.css
deleted file mode 100644
index 6ff6fbb..0000000
--- a/src/danmaku/style/render/mode0.css
+++ /dev/null
@@ -1,121 +0,0 @@
-@import url(./mode1.css);
-@import url(./mode4.css);
-@import url(./mode5.css);
-@import url(./mode6.css);
-@import url(./mode8.css);
-@import url(./mode9.css);
-
-.mode0 {
- position: absolute;
- line-height: 1.125;
- white-space: pre;
- pointer-events: none;
- will-change: transform;
- contain: content;
- font-size: calc(var(--font-size) * var(--fontSize));
- font-family: var(--font-family);
- font-weight: var(--font-weight);
- opacity: var(--opacity);
- display: flex;
- align-items: center;
-
- &.wraps {
- font-size: calc(var(--font-size) * var(--wraps));
- }
-
- .bg {
- display: none;
- inline-size: 1.74em;
- block-size: 1.8em;
- position: absolute;
- inset-block-start: .2em;
- inset-inline-start: 0;
- z-index: -1;
- }
-
- .bg1 {
- display: none;
- inline-size: 100%;
- border-start-start-radius: 1em;
- border-end-start-radius: 1em;
- background: linear-gradient(90deg, #ffffff4d, #fff0);
- position: absolute;
- block-size: 1.8em;
- inset-inline-start: 1.74em;
- padding-inline-start: 1.6em;
- margin-inline-start: -1.74em;
- }
-
- .bg2 {
- display: none;
- inline-size: 18px;
- block-size: 25px;
- position: relative;
- font-size: 0;
- }
-}
-
-@container danmaku style(--fontBorder: 0) {
- .mode0 {
- text-shadow: 1px 0 1px var(--text-shadow), 0 1px 1px var(--text-shadow), 0 -1px 1px var(--text-shadow), -1px 0 1px var(--text-shadow);
- }
-}
-
-@container danmaku style(--fontBorder: 1) {
- .mode0 {
- text-shadow: 0px 0px 1px var(--text-shadow), 0 0 1px var(--text-shadow), 0 0 1px var(--text-shadow);
- }
-}
-
-@container danmaku style(--fontBorder: 2) {
- .mode0 {
- text-shadow: 1px 1px 2px var(--text-shadow), 0 0 1px var(--text-shadow);
- }
-}
-
-@container danmaku style(--animation-play-state: paused) {
- .mode0 {
- animation-play-state: paused !important;
- }
-}
-
-@container danmaku style(--like: 1) {
- .mode0.like:not(.wraps) {
- padding-block: .6em;
- padding-inline-start: .6em;
- padding-inline-end: 2.5em;
- line-height: 1;
-
- .bg,
- .bg1,
- .bg2 {
- display: inline-block;
-
- svg {
- inline-size: 100%;
- block-size: 100%;
- }
- }
-
- .content {
- margin-inline-start: .4em;
- }
- }
-}
-
-@container danmaku style(--colorful: 1) {
- .mode0.colorful {
- background-size: cover;
- text-shadow: none;
- background-image: linear-gradient(to right, #F2509E, #308BCD);
- background-clip: text;
- -webkit-text-fill-color: #ffffff;
- -webkit-text-stroke: 2px transparent;
- }
-}
-
-@container danmaku style(--full-screen-sync: 1) {
- .mode0 {
- font-size: calc(var(--font-size) * var(--fontSize) * var(--wraps));
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode1.css b/src/danmaku/style/render/mode1.css
deleted file mode 100644
index 703b71e..0000000
--- a/src/danmaku/style/render/mode1.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@keyframes dmMode1 {
- to {
- transform: translateX(-100%);
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode4.css b/src/danmaku/style/render/mode4.css
deleted file mode 100644
index 30b8c44..0000000
--- a/src/danmaku/style/render/mode4.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@keyframes dmMode4 {
- to {
- opacity: 0;
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode5.css b/src/danmaku/style/render/mode5.css
deleted file mode 100644
index ee35e6b..0000000
--- a/src/danmaku/style/render/mode5.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@keyframes dmMode5 {
- to {
- opacity: 0;
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/style/render/mode6.css b/src/danmaku/style/render/mode6.css
deleted file mode 100644
index b696fd4..0000000
--- a/src/danmaku/style/render/mode6.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@keyframes dmMode6 {
- to {
- transform: translateX(100cqw);
- }
-}
\ No newline at end of file
diff --git a/src/danmaku/test/av297197.xml b/src/danmaku/test/av297197.xml
deleted file mode 100644
index 57417de..0000000
--- a/src/danmaku/test/av297197.xml
+++ /dev/null
@@ -1,6259 +0,0 @@
-chat.bilibili.tv4699700本视频全程黑屏,所有画面都是弹幕组成,初次观看推荐屏蔽普通弹幕
-我去!
-太闪了!
-神の弹幕
-技术宅拯救世界。。
-打卡表示 诚意
-这视频好牛啊
-碉堡了
-神弹幕
-逆天了
-怎么做到的
-神啊,这~~不~~科~~学~~
-我勒个去
-神级弹幕
-壮哉我大天朝
-这是什么原理
-实验证明这是一帧一帧做出来了弹幕。。。
-实验证明这是一帧一帧做出来了弹幕。。。
-实验证明这是一帧一帧做出来了弹幕。。。
-实验证明这是一帧一帧做出来了弹幕。。。
-碉堡了
-实验证明这是一帧一帧做出来了弹幕。。。
-厉害,弹幕凶残
-★
-弹幕碉堡了
-跪了
-长跪不起
-啊
-弹幕!!!!!!!!!!!!!!!!!!
-这不科学
-每日打卡
-每日打卡
-这不科学= =太凶残了。。
-milk
-wooooo~~~~~
-大爱字幕君
-!!!
-这是秀弹幕的么
-我根本不会发弹幕嘛混蛋
-真心不科学!
-颤抖..................
-每次听都很美啊
-好屌的,
-我是看了标题滚进来的/n
-牛逼弹幕
-这都可以1
-碉堡了
-神弹幕
-这弹幕
-美爆啦
-逆了个天00
-绮礼么,麻婆么
-这是人干的事的么??
-这弹幕要逆天啊!
-神弹幕!可惜全屏没效啊
-给跪了。。。。
-QAQ
-膜拜
-这是弹幕..
-我去
-我去..
-我去..
-打卡+1
-让人目瞪口呆的弹幕。。。
-不科学
-凶残啊
-神弹幕,跪了
-唉
-美丽の物
-真的给跪了OTZ
-a/n/n/n/n/n
-mv好
-美丽之物
-啊嘞???
-弹幕都那么神 UP主高能
-看傻了
-日常打卡
-CPU突破天际了。。
-啊
-何等凶残
-为什么这么强力
-神弹幕
-美
-技术宅拯救世界
-给神弹幕跪了
-碉堡了!!!!!!!
-太帅了
-高能字幕
-NB
-神级弹幕
-好牛的弹幕
-不。。这不是弹幕
-。。
-不会发弹幕+1
-一关闭弹幕就全没了
-..好强
-不错
-太神了……
-这两年B站白发这么多弹幕了……
-哇
-不知道说什么了……
-不敢发弹幕了啊魂淡!!!!
-无敌啊 这神弹幕
-为什么很感动啊QAQ
-UP主请收我为徒!!>.<
-感谢UP主分享这么好的视频。- =
-跪拜~~OTZ
-窝的弹幕果然弱爆了
-火焰碉堡了!!!!!!!!!!!!!!!
-突然哭了TUT
-= =怎么做到的
-弹幕软件??
-这不是FLASH么= =
-..
-跪了
-卧槽!!!
-这不科学这不科学!!!!
-我跪了 神弹幕
-逆天人才
-不自觉的就跟着唱了起来~~~~要哭了~~
-阿姨西铁路 ~~~~~~~~~~~~~~~~~~~~~~
-真的是弹幕吗。。。
-这。。。。
-藏族自治州.........
-mmmm
-完全,,,哔~~~~~~~~~~~~~~
-nandei
-技术宅伤不起啊。。。。
-糟了。。感觉腐朽的我在消失=。=
-这怎么办到的!!
-泪了
-wusou。。
-123
-(*゜ロ゜)ノ好厉害!!
-膜拜职人
-不科学!!!
-职人辛苦了
-鸟肌
-来膜拜弹幕。。。。。。
-科学君又死了一次-A-
-sh!!!!!!!!
-SoundHorizon!!!!
-好美的弹幕1!!QAQ
-美死了
-给跪了!!!!!!!!!!
-给跪了
-不科学
-ORZ
-口琴- =
-结束了
-不可直视啊!!!!!!!!!!!!!!!
-怎么做到的
-噢噢噢噢
-太神了这弹幕
-碉堡了!
-卧槽 马萨卡
-这或是弹幕?
-美物啊
--
--
-><
-好厉害
-神
-好美TWT/n
-弹幕好神T口T
-这不科学啊!!!!!!!!!!!!
-跟着唱+3
-田村的声音吧
-最后一句是田村说的?
-?
-技术宅拯救世界
-触手
-壮哉我大SH
-打卡
-牛逼
-更好
-碉堡了
-跪了·居然一句也听不懂·········
-这个很强大。。。。。 神啊 。。。。。
-我服了 。。。。。
-不解释,神级
-GJ!!
-给神弹幕跪了
-卧槽~碉堡了啊!!!
-这是弹幕??
-强悍啊
-我天朝果然神人多..
-来人,赏
-我擦 神弹幕~!
-硬币- - 不给对不起那一瞬间的感动
-给跪了啊= =
-看哭了= =
-我看哭了......................
-丢了硬币 再看一遍- -
-看弹幕感动了 - -
-太美了
-=wwwwww=
-UP主神化啦
-好赞
-跪了
-好怀念
-压力山大
-..
-科技拯救 未来 。。
-听到歌声就感到被治愈了有木有~~~
-膜拜神弹幕
-太凶残了。。
-YUUKI!!
-Yuuki
-我是来膜拜的
-给跪了
-j
-碉堡了
-太强大了
-跪了
-第一?
-呜哇哇哇!!!
-作为国民很自豪……
-催泪
-神弹幕。。。。
-真的尼玛是弹幕啊 - =
-up主碉堡了。。。
-尼玛这年头做弹幕,都开挂了吧。。。
-11骚年 你们好
-好可怕、、
-不科学的弹幕
-才看完就被顶上来了
-这是高级碳亩宣传 绝对
-感动了,怎么办
-看不见本ID最后几个字母的都是⑨~
-确实不舍得破坏。。。
-= = 这不科学
-好厉害QAQ
-湿了
-这全是弹幕啊。
-给跪了。。。
-这世界从没科学过...
-好美!
-泪目中
-你得多闲啊~~~
-这弹幕……
-好牛X的牡丹
-留爪...
-.
-好凶残
-神弹~
-OSU撸这首的都是触!
-神弹幕。。。。
-这个这个,弹幕不可以这么凶残的啊。。。
-这个。。。。。。。。
-真美
-..
-神弹幕。。。。。。。。。。
-碉堡了。。。。。。。。。。。。。
-好强大。。。
-...神人
-再听一遍!!
-确定这是弹幕咩?
-cest = 法语=是的意思
-神弹幕万岁
-我的手机铃声。。
-神弹幕!
-技术宅毁灭科学
-技术宅毁灭科学
-漂亮,真的很漂亮
-泪目
-roman里面好像用的都是法语
-2012年7月29日 10:36:33
-无敌的神弹幕
-- -,神一样的up主
-又顶上来了...............
-这一段禁普通弹幕了?
-厉害。。
-这一段美绝了!Q皿Q
-各种伤感QAQ
-haoting
-卧槽啊
-好厉害啊
-技术宅啊
-大家注意这里是音阶......
-无语
-这个真心碉堡
-技术宅拯救世界!!!
-神弹幕...= =.好凶残
-碉堡了
-牛啊这。。
-何等凶残!
-何等凶残..
-还不错,我被攻略了
-不忍发弹幕
-马赛克化的小姑娘
-太帅了。。。
-好厉害
-好厉害啊
-膜拜弹幕 这不科学。。。。
-我又来了
-每次都会被弹幕打动
-没有弹幕
-膜拜,但又不忍破坏,好纠结啊
-老物在次上榜
-屏蔽弹幕真的啥都没了!
-wocao
-花火大会
-好美
-!!!
-up主碉堡!
-四核50%cpu,压力大。。
-UP主太屌了……
-CPU...
-已经不是弹幕了。。
-我这是4核啊。CPU50%。。
-神弹幕
-总觉得旋律好熟
-没看一遍都让我无力,白混了。
--。-
-这些全是弹幕啊》》》。
-如果清弹幕会怎样。。= =
-最喜欢这个世界了
-QAQ这不科学
-神弹幕
-UP主神人!!!
-这弹幕怎么做出来的?
-我靠 这是啥
-我擦 哑巴里都
-视屏V5
-这是什么啊
-这弹幕。。。。。
-四核CPU42%
-打卡签到
-なるほどですね
-弹幕啊。。
-腐朽的我迷失了
-太牛逼了!
-wo cao
-高能了
-漂亮
-存货。
-好凶残的弹幕
--神BGM-
-小妹妹-实弹木马?
-挖
-神了
-我去
-好美啊!!
-CPU30-40%表示压力不算太大
-碉堡了
-哭了……
-太帅气了
-TUT 大爱SH
-给跪了……
-哭了..眼疲劳吧
-碉堡了= =
-这神马 点阵图啊
-卡哇伊
-神弹幕
-~
-看见sound horizon就滚进来了...
-太碉堡了...
-科学哭了!!
-我来围观弹幕
-果然神弹幕围观不解释
-看不见本ID最后几个字母的都是⑨~
-删弹幕了?
-另一个观众你好~
-美爆了
-..
-不科学啊!!!!!!!!!!
-这不科学。。
-我去这不科学!!!!
-太牛了。。
-……
-不科学……
-神级技术宅
-想哭。。
-好!
-给大神跪了QAQ
-QAQ
-好厉害啊!
-这是人做的是么!!!
-牛X啊
-!!!
-神弹幕啊
-mmmm
-弹幕神了
-神の神の神の神の神の神の神の神の神の神の
-屌炸
-太牛了
-神了啊
-膜拜神弹幕
-漂亮
-好强大卧槽。。
-卧槽、真心碉堡了= =
-我去。。。。
-来打卡了
-膜拜!
-碉堡了。。
-美しきもの~~
-如何做到的。。。
-super...............
-弹幕呢
-神
-他的口琴把琴谱打出来了……远目
-88%
-壮哉我大SH
-CUP38= =
-蝉鸣如时雨
-弹幕逆天了
-这不科学啊!!!!!
-支持
-本要被烧坏了
-弹屏强大!!!
-幻想乐团大爱!
-神弹幕- -
-换个姿势吧
-哈哈
-一到重要的片段大家都不弹幕,很赞
-gj
-膜拜
-神弹幕。。。
-貌/n似/n很/n厉/n害/n的/n样/n子/n/n/n/n/n/n
-这/n 不/n 科/n 学
-↑不是大家都不留言 是留言被背景弹幕挡住了
-dang
-神弹幕
-怀念
-泪目
-吐槽这只口琴,又不是复音口琴又不是十孔的
-?
-国民来顶,碉堡了
-.
-···············
-我来搞破坏
-双核 CPU 30
- 给跪
-我这挂台风
-厉害。。。
-好美啊\(^o^)/~
-神啊!!!
-a ki 秋~~~~
-这
-我喜欢这个歌!!!!
-流弊
-卡了
-弹幕呢
-额
-跪。
-跪
-擦 神弹幕啊
-弹幕之神嫁给我吧!
-啊啊啊啊啊啊啊啊啊
-强制使用弹幕
-又被治愈了
-平时都是玩弹幕 这次被弹幕玩了
-弹幕怎么做到的、
-膜拜大神
-我就遮掩被攻略了
-无敌的弹幕
-一定要顶上去啊~~
-卧槽
-凶残+1
-神弹幕、
-这神弹幕膜拜啊
-00.
-内牛满面啊
-牛……
-ce
-这TM不科学
-吓尿了
-泪目啊
-感动
-有一凶残
-碉堡了碉堡了碉堡了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-美
-很久以前就很喜欢这首歌了~
-其实我是来听歌的
-神弹♂
-神了
-看到SH就滚进来了
-经典~
-好久没听过这首歌了的说
-神 啊。。。
-其实这歌挺惨白的。
-弹幕=泪目=跪了膜拜
-口风琴碉堡了
-跪了...
-打卡
-,,,
-神马情况啊,求解说
-欸这是什么歌
-这是神马歌
-萌妹子
-我擦神弹幕啊
-美丽之物
-卧槽
-我靠
-尼玛这不科学啊,怎么可能
-好美的雪花啊
-菝葜
-菝葜
-怎么办我想死我想死啊
-尼玛尼玛啊这技术啊尼玛啊
-高能:“神之光”
-卧槽彩虹啊
-尼玛这不是人类能做出来的
-太不科学了
-每日打卡
-美死了
-弹幕菌在哪?
-有背景的人才行啊
-弹幕不科学
-弹幕不科学
-太多牛B给跪了太多牛B给跪了太多牛B给跪
-天
-..
-垃圾双核表示爆表了
-好晕~~
-卧槽屏蔽弹幕就什么都看不见了啊!
-真是弹幕啊……orz
-跪拜技术宅
-我艹 这原来只是弹幕啊
-神弹幕逆天了!
-这些樱花是怎样成型的啊啊啊啊啊
-此曲每闻必唱= =!
-可爱的弹幕~~~
-神
-怎么做的啊
-射
-神弹幕。。。
-我弹
-弹幕真好玩
-技术宅啊……
-你好...
-神弹幕啊=X=
-洗脑on
-跪了
-哭了我去QAQ
-CPU20% 大丈夫
-各种美啊~~~~~~~
-~♩
-神弹幕!!
-是镶嵌在视频里的吧
-神弹幕
-神弹幕!
-膜拜字幕大神
-真舍不得破坏这个美感啊
-跪了!!
-==强大了
-碉堡了
-把科学还给我!!
-哦不好厉害啊于是
-各种无力啊围观
-好可怕啊口胡
-怎么做的
-各种不科学啊
-那是怎么做的
-弹幕谁信
-神马还真的是弹幕耶
-好可怕QAQ
-口琴君QAQ
-这不科学。。
-美哭了QAQ
-弹幕之神啊我去,这是怎么做到的
-好喜欢~
-这TM的不科学啊Σ(`д′*ノ)ノ !
-卡爆了!
-全屏看太美了。
-是
- 是
- 这
- 这么玩的么
-神弹幕啊~围观之
-神弹幕,跪拜
-好久没看见神弹幕了
-看来我是要砸硬币了
-泪目
-被清弹幕了···
-太凶残了。。
-啊啊啊啊啊
-膜拜大神
-一直只有10%一下。。。
-好凶残
-≥﹏≤
-●▂●
-@(一-一)@
-碉堡了
-弹幕....
-怎么做到的= =
-0.
-屌啊
-碉堡了啊 次奥
-歌不错
-思过意
-卧槽
-啊啊啊
-只有神知道的弹幕世界...
-osu- -
-hao
-这不科学
-神!
-好美的歌声
-Orz
-这 弹幕要 逆天啊
-这不科学。。。
-神一样的弹幕啊啊啊啊!
-听了无数遍的歌...最喜欢 没之一
-天啊神弹幕
-歌好美
-全程弹幕= =
-神人啊啊
-已经忘记弹幕是什么 了
-好き
-好厉害QUQ
-复习复习。。
-全程都跟着唱了啊。。
-太不科学。。。
-.
-双核20%的笑了
-嘿
-mayaa!!! !!!!
-神弹幕+神曲
-又首页了
-神了。。
-[膜拜]_| ̄|○ → _|\○_ → _/\○_ → ____○_
-泪目啊
-╭( ̄m ̄*)╮ 直接跳到這裡??
-神弹幕
-厉害
-这花怎么弄的!0.0
-跪拜大神
-谈科学你就输了
-关掉弹幕吓尿了。。。。
-日常了
-好喜欢这首歌
-大爱这首歌
-to be way-0801
-强
-卧槽高级弹幕!
-敢挖我就敢顶
-弄这个弹幕要弄多久。
-直接跪地膜拜。。
-美
-这不科学......
-神了
-←c'est在法语里是“这是”的意思好吧
-看到美丽之物就滚来了
-我去这些都是弹幕!!!
- 救了个命 出不去了
-haha
-什么情况啊 这是
-r
-哎呦又被顶上来了?歌我是不想听了,顶顶就行
-弹幕菌好强大
-好凶残的弹幕菌
-四锅伊!
-四锅伊
-古墓又一次升起来了!!!!!
-前来膜拜神弹幕~~~~~!!!!!!!!!!!!!!!!!!!
-哭过的 路过。。。。。。。。。。。。。。。。。。。
-好厉害的样子啊
-膜拜
-真心美了。。。。。。。。。
-dingyige
-我已近麻木了~
-日常打卡= =
-美死了 哭了
-看弹幕看流泪了- - 膜拜
-真心好!
-我不会发弹幕
-顶!美丽之物啊 最爱 没有之一
-科学什么的节操掉尽
-这太魔法了。
-.
-~~~~~
-怒跪!!!
-膝盖都烂掉了。。
-我擦。。。
-美爆了
-高技術啊,前來膜拜
-osu.....
-真的吗?
-0.0.
-跪了
-擦来看神弹幕
-啊啊啊/n
-卧槽这弹幕这不科学!!
-卧槽弹幕
-坑爹的时钟
-后面发弹幕
-ddddddd
-太漂亮了
-销魂曲
-消魂曲
-我是神经
-牛XXXXXXXXXXXXXXXXXXX
-屏蔽了所有弹幕就真的黑了!!!!不行我已经不信这么高技术的弹幕了……
-UP主求视频00
-纯粹的听歌向 泪目 你们懂得
-Hello I am a moron
-^_^
-=3
-=w=
-这女的弹幕啊- -神了!!!
-弹幕被清了。。。?
-这竟然是弹mmmmmmmmmmmmmmmmmmm
-=3
-Hello world!~
->:D
-Love this song!~ ^w^
-=w=
->:D
-:3
-LA!~ :D
-^w^
-Hello world!~ :D
-=w=
-\^o^/
-:3
-Hello I am a dork
-LA LA LA
-U dunnos! D:
-=w=
-lolololololololololo
-Rainbows FTW!
-SONG IS AWESOME
-:U
-<______>
-Night FLOWER
-PerfectCherryBlossom
-=3 =3 =3 =3 =3 =3 =3
-__w__
-PINK!!!!11
-Touhou~
->:D
-CCCHHHHEEEENNNNNNN!!
-Flandre Scarlet
-OwO
-:D
-Cookie~ =w=
-Love this song!~ ^w^
-T^T
-Rainbows!!!!!
-Hey peeps! :D
-:D
-;___;
-Sad song is sad! ;_;
-:D
-XD
-XD XD XD XD XD XD XD
-Comment sapm!!!!!
-^W^W^W^W^W^W^W^W^W^W
-Any Touhou players h
-=w=
-Touhou FTW!
-Anyone want a cookie
-Waffles!
-Trololololol.
-Hello!~
-:D
-Hello world!
-神~~~~~~~~~
-好帅气...............!!
-跪了
-帅气!!!!.......
-帅哭了.....
-膜拜了!
-我是来看热闹的说
-这歌被天朝盗了几遍
-这首歌调子很好但个人认为歌词和故事的关联十分少啊
-好立体我都快晕了
-啊啊啊啊啊好棒
-这是让我们看弹幕听着BGM是吧!这是让我们看弹幕听着BGM是吧!
-好厉害啊真的
-好厉害啊
-好厉害呢
-太棒
-啊啊啊啊好厉害
-刷冥王的什么心态!!!
-日常打卡
-美shi了_(:з」∠)_
-Flag 立起来了!
-哎呀呀呀呀
-SH
-啊啊啊
-这个弹幕
-如此强大
-其实好久以前就听过这个了
-竟然有故事的
-神弹幕
-=3
-复习来了~
-技术宅拯救世界啊!!!
-卧槽。吓尿了。电脑感觉有点卡了
-完全已经不知道弹幕是什么了
-(:3 ∫
-再也不相信弹幕了
-神弹幕!!
-叼爆了
-这怎么了
-拯救世界啊
-- -
-又上首页了
-科技拯救未来
-听过就进来了...
-太神了吧。。。。。。
-只有600硬币不科学啊~!
-哭了
-都在擦眼泪 发毛的弹幕
-老早的歌了
-老歌了。、、
-神曲加神弹幕
-帅没了......
-面条泪..
-卡住了
-啦啦啦
-= =神弹幕
-恩,居然又见一起的打卡哥~
-膜拜
-吓尿
-包括Laurant的份一起
-另一个观众 你好啊~
-神同步
-满足了
-这尼玛略碉堡啊!
-表示略卡
-关掉弹幕在来一遍
-好吧 关掉之后什么都没了
-baga 当着我看字幕了
-不科学 碉堡了字幕
-kuso 收藏的格子不够了
-跪了
-真心膜拜
-高能 爆表了
-火焰碉堡了
-美爆!!!
-做了半年的神弹幕。。。。
-目前所见背景最漂亮的弹幕
-我们弱爆了。。。
-CPU哭了
-噢艹!美爆!
-UP住自制好强。。。。
-哭了
-美啊!
-很梦幻
-双核41%。。
-神
-好好强大……
-来膜拜神弹幕
-很好玩吼
-这神弹幕又被顶上来了啊
-又挖上来?
-碉堡的弹幕碉堡的up主
-神字幕吖~~~~
-啊哈哈哈哈哈
-哈哈哈哈哈哈
-不对这已经不是弹幕了= =
-订报了啊
-好厉害wwww
-bleach
-自己关掉弹幕就知道了
-每次过来看都很碉堡
-肿么弄的 QAQ 好厉害
-QAQ感动了
-手机播放表示只能跑30帧左右。。
-手机测试刚刚卡爆了。。。。。。
-又来了我。
-好 - -
-使用率百分之六十,渣CPU给跪了
-Hello world!~
-Hai!~
-Hello world!~
-这是啥
-打卡
-棒
-在b站的第一次啊
-壮哉我大银河!
-65
-恒星?
-全是高级弹幕
-重复的。。
-不科学
-(T-T)
-Q0Q
-历/n害
-碉堡了
-碉堡了!!!!!!!!!!!!!!!!!
-大爱!!!!!!~~~~~~~~~~~~
-开完系
-犀利
-Soundhorizon
-这首歌最喜欢了~~
-(>﹏<)戴斯key
-- -
-碉堡了
-@花花
-@花花
-@花花
-膜拜!
-关掉弹幕瞬间吓尿
-太不科学了
-niu
-卡了
-神啊。。。。/n
-光是弹幕我就收藏了。。不用说这首歌了。。
-双核CPU用了我40%
-技术宅拯救世界!!!!!!
-碉堡了
-神人
-好厉害!!!
-神
-不科学
-good
-厉害
-卧槽……/n
-卡了。。。。。
-这歌好煽情啊
-卧槽给跪了
-=.=
-看完之后顿时感觉以前从未发过真正的弹幕
-四国亿。。。。
-真好听。。
-真心美
-科学吗?
-神弹幕!!
-爪机卡了o(︶︿︶)o
-别说弹幕了我用幻灯片都做不出来这效果
-原来真的是弟控之歌。。。。
-40%
-关掉弹幕吓死了
-膜拜
-为什么弄全屏这么卡- -
-全屏卡死- -。。
-神曲敢顶就敢看
-这是弹幕吗,我艹
-暖床 我爱死你了
-给跪
-美丽之物
-擦泪++++
-看看能不能顶上去
-好喜欢这首歌OTL
-神弹幕
-ROMAN是法语主打,卖肾是德语主打,8TH会是啥?拉丁?希伯来?意大利?
-打卡
-打卡嘤嘤嘤
-QMQ逆天了
-我艹!这弹幕。。逆天了!
-8核CPU 勉强运行。。
-大触……
-原来后面还有啊...
-果然是弹幕
-打卡複習
-眼睛裡進彈幕了
-神字幕
-给跪了
-尼玛 尼玛 这技术
-神了
-CPU 10%以下笑而不语
-看到SH我就进来了
-跪了
-看哭了
-神弹幕啊
-神 啊
- 喜欢
-虽然是老物了 ,不过美丽之物永远美丽
-美丽的万物
-春夏秋冬4季
-碉堡了有木有!!!!!!!!!!!!!!
-手机党笑而不语。。
-好美
-神弹幕
-这真的是弹幕?!
-技术宅
-碉堡了
-白发这么久的弹幕了
-给跪!
-美哭了
-最近好多牛逼弹幕啊
-还厉害
-天呐~~~~宅技术拯救世界啊
-神制作,辛苦了
-我的CPU!
-最爱的歌QAQ
-双核电脑伤不起啊,卡了
-看得蓝屏重启是什么水平?
-UP主赛高
-火焰太霸气了,爪机身亡
-竟然是弹幕
-关弹幕字幕也没了
-我被弹幕玩弄了
-传说中的高级弹幕???
-手机看不到--...
-厉害
-超级神
-卡了→_→
-你为什么这么叼
-我怎么又进来了
-手机崩溃了
-膜拜
-逆天
-k
-看来5410解码能力不错
-["118","106","0.2-0.2","10","君","350","0","118","106","500","0","false","黑体","0"]
-["106","106","0.2-0.2","10","君","350","0","106","106","500","0","false","黑体","0"]
-["112","112","0.2-0.2","10","君","350","0","112","112","500","0","false","黑体","0"]
-["112","100","0.2-0.21","10","君","350","0","112","100","500","0","false","黑体","0"]
-["109","103","0.2-0.2","10","君","350","0","109","103","500","0","false","黑体","0"]
-["115","103","0.2-0.2","10","君","350","0","115","103","500","0","false","黑体","0"]
-["109","109","0.2-0.2","10","君","350","0","109","109","500","0","false","黑体","0"]
-["115","109","0.2-0.2","10","君","350","0","115","109","500","0","false","黑体","0"]
-["112","106","1-1","10","君","350","0","112","106","500","0","false","黑体","0"]
-["108","96","1-0","2.5","█","0","0","108","96","500","0","false","黑体","0"]
-["172","103","0.2-0.2","8.5","の","10","0","172","103","500","0","false","黑体","0"]
-["184","103","0.2-0.2","8.5","の","10","0","184","103","500","0","false","黑体","0"]
-["178","109","0.2-0.2","8.5","の","10","0","178","109","500","0","false","黑体","0"]
-["178","97","0.2-0.2","8.5","の","10","0","178","97","500","0","false","黑体","0"]
-["175","106","0.2-0.2","8.5","の","10","0","175","106","500","0","false","黑体","0"]
-["181","106","0.2-0.2","8.5","の","10","0","181","106","500","0","false","黑体","0"]
-["175","100","0.2-0.2","8.5","の","10","0","175","100","500","0","false","黑体","0"]
-["181","100","0.2-0.2","8.5","の","10","0","181","100","500","0","false","黑体","0"]
-["178","103","1-1","8.5","の","10","0","178","103","500","0","false","黑体","0"]
-["170","101","1-0","2.5","█","0","0","170","101","500","0","false","黑体","0"]
-["1","78","1-1","4.5","██████/n██████","0","0","1","78","500","0","false","黑体","0"]
-["1","145","1-1","4.5","██████","0","0","1","145","500","0","false","黑体","0"]
-["1","78","1-1","4.5"," ██████/n ██████","0","0","1","78","500","0","false","黑体","0"]
-["1","145","1-1","4.5"," ██████","0","0","1","145","500","0","false","黑体","0"]
-["3","199","1-1","7","__/n__/n__/n__/n__","330","0","3","199","500","0","false","黑体","0"]
-["24","187","1-1","7","__/n__/n__/n__/n__","335","0","24","187","500","0","false","黑体","0"]
-["42","179","1-1","7","__/n__/n__/n__/n__","338","0","42","179","500","0","false","黑体","0"]
-["63","171","1-1","7","__/n__/n__/n__/n__","341","0","63","171","500","0","false","黑体","0"]
-["81","165","1-1","7","__/n__/n__/n__/n__","344","0","81","165","500","0","false","黑体","0"]
-["103","159","1-1","7","__/n__/n__/n__/n__","347","0","103","159","500","0","false","黑体","0"]
-["126","154","1-1","7","__/n__/n__/n__/n__","350","0","126","154","500","0","false","黑体","0"]
-["149","150","1-1","7","__/n__/n__/n__/n__","353","0","149","150","500","0","false","黑体","0"]
-["173","147","1-1","7","__/n__/n__/n__/n__","356","0","173","147","500","0","false","黑体","0"]
-["193","146","1-1","7","__/n__/n__/n__/n__","0","0","193","146","500","0","false","黑体","0"]
-["214","146","1-1","7","__/n__/n__/n__/n__","3","0","214","146","500","0","false","黑体","0"]
-["237","147","1-1","7","__/n__/n__/n__/n__","6","0","237","147","500","0","false","黑体","0"]
-["258","149","1-1","7","__/n__/n__/n__/n__","9","0","258","149","500","0","false","黑体","0"]
-["280","153","1-1","7","__/n__/n__/n__/n__","13","0","280","153","500","0","false","黑体","0"]
-["301","158","1-1","7","__/n__/n__/n__/n__","16","0","301","158","500","0","false","黑体","0"]
-["316","163","1-1","7","__/n__/n__/n__/n__","13","0","316","163","500","0","false","黑体","0"]
-["330","167","1-1","7","__/n__/n__/n__/n__","10","0","330","167","500","0","false","黑体","0"]
-["346","170","1-1","7","__/n__/n__/n__/n__","7","0","346","170","500","0","false","黑体","0"]
-["360","172","1-1","7","__/n__/n__/n__/n__","4","0","360","172","500","0","false","黑体","0"]
-["376","174","1-1","7","__/n__/n__/n__/n__","1","0","376","174","500","0","false","黑体","0"]
-["390","175","1-1","7","__/n__/n__/n__/n__","357","0","390","175","500","0","false","黑体","0"]
-["407","174","1-1","7","__/n__/n__/n__/n__","354","0","407","174","500","0","false","黑体","0"]
-["423","173","1-1","7","__/n__/n__/n__/n__","350","0","423","173","500","0","false","黑体","0"]
-["440","170","1-1","7","__/n__/n__/n__/n__","347","0","440","170","500","0","false","黑体","0"]
-["455","167","1-1","7","__/n__/n__/n__/n__","344","0","455","167","500","0","false","黑体","0"]
-["475","162","1-1","7","__/n__/n__/n__/n__","344","0","475","162","500","0","false","黑体","0"]
-["50","191","1-1","0.2","♪","350","0","50","191","500","0","true","宋体","0"]
-["122","188","1-1","0.7","♬","355","0","122","188","500","0","true","宋体","0"]
-["174","151","1-1","1.2","♩","0","0","174","151","500","0","true","宋体","0"]
-["247","173","1-1","2.1","♫","0","0","247","173","500","0","true","宋体","0"]
-["332","192","1-1","2.7","♭","4","0","332","192","500","0","true","宋体","0"]
-["411","176","1-1","2.7","♬","4","0","411","176","500","0","true","宋体","0"]
-["55","202","1-1","4.5","大","338","0","55","202","500","0","true","黑体","0"]
-["47","199","1-0","0.5","大","338","0","47","199","500","0","true","黑体","0"]
-["110","199","1-1","4.5","好き","350","0","110","199","500","0","true","黑体","0"]
-["101","195","1-0","0.5","好き","350","0","101","195","500","0","true","黑体","0"]
-["185","160","1-1","4.5","な","0","0","185","160","500","0","true","黑体","0"]
-["180","154","1-0","0.5","な","0","0","180","154","500","0","true","黑体","0"]
-["237","176","1-1","4.5","この","13","0","237","176","500","0","true","黑体","0"]
-["230","167","1-0","0.5","この","13","0","230","167","500","0","true","黑体","0"]
-["318","200","1-1","4.5","旋律","5","0","318","200","500","0","true","黑体","0"]
-["308","187","1-0","0.5","旋律","5","0","308","187","500","0","true","黑体","0"]
-["393","200","1-1","4.5","(Mélodie)","350","0","393","200","500","0","true","黑体","0"]
-["388","200","1-0","0.5","(Mélodie)","350","0","388","200","500","0","true","黑体","0"]
-["8","114","1-1","4.5","███████","0","0","8","114","500","0","false","MS UI Gothic","0"]
-["8","114","1-1","4.5"," ██████","0","0","8","114","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","10","███████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","10"," ██████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10","███████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10"," ██████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10","███████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10"," ██████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10","███████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10"," ██████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10","███████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10"," ██████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10","███████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10"," ██████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10","███████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10"," ██████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10","███████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10"," ██████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10","███████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10"," ██████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10","███████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10"," ██████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10","███████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10"," ██████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["59","71","1-1","10","●","0","0","59","71","500","0","false","黑体","0"]
-["17","87","1-1","10","●","0","0","17","87","500","0","false","黑体","0"]
-["130","78","1-1","10","●","0","0","130","78","500","0","false","黑体","0"]
-["169","71","1-1","10","●","0","0","169","71","500","0","false","黑体","0"]
-["23","94","1-1","10","●","0","0","23","94","500","0","false","黑体","0"]
-["69","83","1-1","10","●","0","0","69","83","500","0","false","黑体","0"]
-["141","86","1-1","10","●","0","0","141","86","500","0","false","黑体","0"]
-["173","77","1-1","10","●","0","0","173","77","500","0","false","黑体","0"]
-["30","99","1-1","10","●","0","0","30","99","500","0","false","黑体","0"]
-["73","90","1-1","10","●","0","0","73","90","500","0","false","黑体","0"]
-["132","89","1-1","10","●","0","0","132","89","500","0","false","黑体","0"]
-["172","86","1-1","10","●","0","0","172","86","500","0","false","黑体","0"]
-["175","90","1-1","10","●","0","0","175","90","500","0","false","黑体","0"]
-["137","96","1-1","10","●","0","0","137","96","500","0","false","黑体","0"]
-["80","96","1-1","10","●","0","0","80","96","500","0","false","黑体","0"]
-["36","105","1-1","10","●","0","0","36","105","500","0","false","黑体","0"]
-["313","26","1-1","9","●","0","0","313","26","500","0","false","黑体","0"]
-["362","14","1-1","9","●","0","0","362","14","500","0","false","黑体","0"]
-["436","19","1-1","9","●","0","0","436","19","500","0","false","黑体","0"]
-["369","17","1-1","9","●","0","0","369","17","500","0","false","黑体","0"]
-["325","30","1-1","9","●","0","0","325","30","500","0","false","黑体","0"]
-["438","32","1-1","9","●","0","0","438","32","500","0","false","黑体","0"]
-["376","27","1-1","9","●","0","0","376","27","500","0","false","黑体","0"]
-["332","36","1-1","9","●","0","0","332","36","500","0","false","黑体","0"]
-["438","42","1-1","9","●","0","0","438","42","500","0","false","黑体","0"]
-["383","33","1-1","9","●","0","0","383","33","500","0","false","黑体","0"]
-["341","44","1-1","9","●","0","0","341","44","500","0","false","黑体","0"]
-["439","47","1-1","9","●","0","0","439","47","500","0","false","黑体","0"]
-["46","132","0.3-1","2","大空へと響け","353","0","46","132","500","0","false","黑体","0"]
-["46","132","1-0","3","大空へと響け","353","0","46","132","500","0","false","黑体","0"]
-["210","220","0-1","3","口風琴(Harmonica)","355","0","210","220","500","0","false","黑体","0"]
-["210","220","1-0","2.3","口風琴(Harmonica)","355","0","200","220","2300","0","false","黑体","0"]
-["210","220","1-0","2.3","口風琴(Harmonica)","355","0","220","220","2300","0","false","黑体","0"]
-["210","220","1-0","2.3","口風琴(Harmonica)","355","0","210","220","2300","0","false","黑体","0"]
-["284","317","0.8-1","4.5","█████","350","0","284","317","500","0","true","黑体","0"]
-["284","317","0.8-1","4.5"," ████","350","0","284","317","500","0","false","黑体","0"]
-["288","309","0.8-1","4.5","█████","350","0","288","309","500","0","true","黑体","0"]
-["288","309","0.8-1","4.5"," ████","350","0","288","309","500","0","false","黑体","0"]
-["291","310","0.8-1","4.5","████████▋","80","0","291","310","500","0","true","黑体","0"]
-["293","348","0.8-1","4.5","███████████████████████████████████","350","0","293","348","500","0","true","黑体","0"]
-["291","310","0.8-1","4.5","████████▋","80","0","291","310","500","0","false","黑体","0"]
-["307","345","0.8-1","4.5","-","97","0","307","345","500","0","false","黑体","0"]
-["298","311","0.8-1","4.5","██████/n","350","0","298","311","500","0","true","黑体","0"]
-["298","311","0.8-1","4.5"," █████/n","350","0","298","311","500","0","false","黑体","0"]
-["316","303","1-1","4.5","████▌","350","0","316","303","500","0","true","黑体","0"]
-["316","303","1-1","4.5"," ████","350","0","316","303","500","0","false","黑体","0"]
-["317","300","1-1","4.5","████▌","350","0","317","300","500","0","true","黑体","0"]
-["317","300","1-1","4.5"," ████","350","0","317","300","500","0","false","黑体","0"]
-["308","320","0.8-1","4.5","●","0","0","308","320","500","0","true","黑体","0"]
-["471","291","0.8-1","4.5","●","0","0","471","291","500","0","true","黑体","0"]
-["319","303","0.8-1","4.5","███████","350","0","319","303","500","0","false","黑体","0"]
-["468","326","0.8-1","4.5","█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ","180","45","468","326","500","0","false","黑体","0"]
-["497","302","1-1","4.5","█","0","0","497","302","500","0","false","黑体","0"]
-["255","299","1-1","4.5","█ ","0","0","255","299","500","0","false","黑体","0"]
-["313","311","0.8-1","4.5","__","95","0","313","311","500","0","false","黑体","0"]
-["512","311","0.8-1","4.5","-","95","0","512","311","500","0","false","黑体","0"]
-["272","257","1-0","2.5","███████/n███████/n███████","0","0","272","257","2500","0","false","黑体","0"]
-["272","257","1-0","2.5"," ███████/n ███████/n ███████","0","0","272","257","2500","0","false","黑体","0"]
-["272","275","1-0","2.5","███████/n███████","0","0","272","275","500","0","false","黑体","0"]
-["272","275","1-0","2.5"," ███████/n ███████","0","0","272","275","500","0","false","黑体","0"]
-["-5","-5","1-1","10","███████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","10"," ██████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10","███████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10"," ██████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10","███████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10"," ██████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10","███████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10"," ██████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10","███████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10"," ██████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10","███████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10"," ██████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10","███████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10"," ██████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10","███████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10"," ██████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10","███████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10"," ██████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10","███████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10"," ██████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10","███████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10"," ██████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["59","71","1-1","5.4","●","0","0","79","71","5400","0","false","黑体","0"]
-["17","87","1-1","5.4","●","0","0","37","87","5400","0","false","黑体","0"]
-["130","78","1-1","5.4","●","0","0","150","78","5400","0","false","黑体","0"]
-["169","71","1-1","5.4","●","0","0","189","71","5400","0","false","黑体","0"]
-["23","94","1-1","5.4","●","0","0","43","94","5400","0","false","黑体","0"]
-["69","83","1-1","5.4","●","0","0","89","83","5400","0","false","黑体","0"]
-["141","86","1-1","5.4","●","0","0","161","86","5400","0","false","黑体","0"]
-["173","77","1-1","5.4","●","0","0","193","77","5400","0","false","黑体","0"]
-["30","99","1-1","5.4","●","0","0","50","99","5400","0","false","黑体","0"]
-["73","90","1-1","5.4","●","0","0","93","90","5400","0","false","黑体","0"]
-["132","89","1-1","5.4","●","0","0","152","89","5400","0","false","黑体","0"]
-["172","86","1-1","5.4","●","0","0","192","86","5400","0","false","黑体","0"]
-["175","90","1-1","5.4","●","0","0","195","90","5400","0","false","黑体","0"]
-["137","96","1-1","5.4","●","0","0","157","96","5400","0","false","黑体","0"]
-["80","96","1-1","5.4","●","0","0","100","96","5400","0","false","黑体","0"]
-["36","105","1-1","5.4","●","0","0","56","105","5400","0","false","黑体","0"]
-["135","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","130","135","42","0","0","true","MS UI Gothic","0"]
-["404","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","50","404","42","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5","███████████████████████████","0","0","-8","0","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5"," ██████████████████████████","0","0","-8","0","0","0","false","MS UI Gothic","0"]
-["-8","350","1-1","4.5","███████████████████████████","0","0","-8","350","0","0","true","MS UI Gothic","0"]
-["-8","350","1-1","4.5"," ██████████████████████████","0","0","-8","350","0","0","false","MS UI Gothic","0"]
-["-4","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","0","0","0","true","MS UI Gothic","0"]
-["-4","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","5","0","0","false","MS UI Gothic","0"]
-["519","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","0","0","0","true","MS UI Gothic","0"]
-["519","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","5","0","0","false","MS UI Gothic","0"]
-["313","26","1-1","5.4","●","0","0","333","26","5400","0","false","黑体","0"]
-["362","14","1-1","5.4","●","0","0","382","14","5400","0","false","黑体","0"]
-["436","19","1-1","5.4","●","0","0","456","19","5400","0","false","黑体","0"]
-["369","17","1-1","5.4","●","0","0","389","17","5400","0","false","黑体","0"]
-["325","30","1-1","5.4","●","0","0","345","30","5400","0","false","黑体","0"]
-["438","32","1-1","5.4","●","0","0","458","32","5400","0","false","黑体","0"]
-["376","27","1-1","5.4","●","0","0","396","27","5400","0","false","黑体","0"]
-["332","36","1-1","5.4","●","0","0","352","36","5400","0","false","黑体","0"]
-["438","42","1-1","5.4","●","0","0","458","42","5400","0","false","黑体","0"]
-["383","33","1-1","5.4","●","0","0","403","33","5400","0","false","黑体","0"]
-["341","44","1-1","5.4","●","0","0","361","44","5400","0","false","黑体","0"]
-["439","47","1-1","5.4","●","0","0","459","47","5400","0","false","黑体","0"]
-["181","236","0.5-0.5","3","□","0","0","181","236","500","0","false","宋体","0"]
-["156","236","0.5-0.5","3","□","0","0","156","236","500","0","false","宋体","0"]
-["160","238","1-1","3","窓枠の畫布(Toile)","0","0","160","238","500","0","false","黑体","0"]
-["48","191","0.3-1","2.5","ねぇ…その風景画(paysage)","0","0","67","221","400","0","false","黑体","0"]
-["67","221","1-0.0","1.5","ねぇ…その風景画(paysage)","0","0","67","201","1500","0","false","黑体","0"]
-["67","221","1-0.0","1.5","ねぇ…その風景画(paysage)","0","0","67","241","1500","0","false","黑体","0"]
-["48","191","0.3-1","2.8","綺麗かしら?","0","0","161","263","400","0","false","黑体","0"]
-["161","263","1-0","1.5","綺麗かしら?","0","0","161","243","1500","0","false","黑体","0"]
-["161","263","1-0","1.5","綺麗かしら?","0","0","161","283","1500","0","false","黑体","0"]
-["-5","-5","1-1","5.3","███████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","5.3"," ██████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","5.3","███████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","5.3"," ██████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","5.3","███████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","5.3"," ██████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","5.3","███████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","5.3"," ██████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","5.3","███████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","5.3"," ██████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","5.3","███████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","5.3"," ██████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","5.3","███████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","5.3"," ██████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","5.3","███████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","5.3"," ██████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","5.3","███████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","5.3"," ██████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","5.3","███████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","5.3"," ██████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","5.3","███████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","5.3"," ██████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["79","71","1-1","5.3","●","0","0","99","71","5300","0","false","黑体","0"]
-["37","87","1-1","5.3","●","0","0","57","87","5300","0","false","黑体","0"]
-["150","78","1-1","5.3","●","0","0","170","78","5300","0","false","黑体","0"]
-["189","71","1-1","5.3","●","0","0","209","71","5300","0","false","黑体","0"]
-["43","94","1-1","5.3","●","0","0","63","94","5300","0","false","黑体","0"]
-["89","83","1-1","5.3","●","0","0","109","83","5300","0","false","黑体","0"]
-["161","86","1-1","5.3","●","0","0","181","86","5300","0","false","黑体","0"]
-["193","77","1-1","5.3","●","0","0","213","77","5300","0","false","黑体","0"]
-["50","99","1-1","5.3","●","0","0","70","99","5300","0","false","黑体","0"]
-["93","90","1-1","5.3","●","0","0","113","90","5300","0","false","黑体","0"]
-["152","89","1-1","5.3","●","0","0","172","89","5300","0","false","黑体","0"]
-["192","86","1-1","5.3","●","0","0","212","86","5300","0","false","黑体","0"]
-["195","90","1-1","5.3","●","0","0","215","90","5300","0","false","黑体","0"]
-["157","96","1-1","5.3","●","0","0","177","96","5300","0","false","黑体","0"]
-["100","96","1-1","5.3","●","0","0","120","96","5300","0","false","黑体","0"]
-["56","105","1-1","5.3","●","0","0","76","105","5300","0","false","黑体","0"]
-["333","26","1-1","5.3","●","0","0","353","26","5300","0","false","黑体","0"]
-["382","14","1-1","5.3","●","0","0","402","14","5300","0","false","黑体","0"]
-["456","19","1-1","5.3","●","0","0","476","19","5300","0","false","黑体","0"]
-["389","17","1-1","5.3","●","0","0","409","17","5300","0","false","黑体","0"]
-["345","30","1-1","5.3","●","0","0","365","30","5300","0","false","黑体","0"]
-["458","32","1-1","5.3","●","0","0","478","32","5300","0","false","黑体","0"]
-["396","27","1-1","5.3","●","0","0","416","27","5300","0","false","黑体","0"]
-["352","36","1-1","5.3","●","0","0","372","36","5300","0","false","黑体","0"]
-["458","42","1-1","5.3","●","0","0","478","42","5300","0","false","黑体","0"]
-["403","33","1-1","5.3","●","0","0","423","33","5300","0","false","黑体","0"]
-["361","44","1-1","5.3","●","0","0","381","44","5300","0","false","黑体","0"]
-["459","47","1-1","5.3","●","0","0","479","47","5300","0","false","黑体","0"]
-["150","219","1-1","4.5","たい抱が使天","0","0","150","219","500","0","false","黑体","0"]
-["281","219","1-1","4.5","天使が抱いた","0","0","281","219","500","0","false","黑体","0"]
-["143","207","0.9-0","4.5","たい抱が使天","5","0","143","207","500","0","false","黑体","0"]
-["288","216","0.9-0","4.5","天使が抱いた","355","0","288","216","500","0","false","黑体","0"]
-["140","195","0.8-0","4.5","たい抱が使天","10","0","140","195","500","0","false","黑体","0"]
-["296","212","0.8-0","4.5","天使が抱いた","350","0","296","212","500","0","false","黑体","0"]
-["137","182","0.7-0","4.5","たい抱が使天","15","0","137","182","500","0","false","黑体","0"]
-["305","207","0.7-0","4.5","天使が抱いた","345","0","305","207","500","0","false","黑体","0"]
-["135","167","0.6-0","4.5","たい抱が使天","20","0","135","167","500","0","false","黑体","0"]
-["311","201","0.6-0","4.5","天使が抱いた","340","0","311","201","500","0","false","黑体","0"]
-["302","170","0.9-0","4.5","○","90","55","302","170","500","0","false","宋体","0"]
-["234","236","1-1","4.5","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","4.5","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","4.5","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","4.5","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","4.5","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","4.5","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","4.5","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","4.5","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","4.5","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","4.5","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","4.5","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","4.5"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","4.5","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","4.5","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","4.5"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","4.5","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","4.5","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","4.5","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","4.5","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","4.5","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","4.5","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","4.5","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","4.5","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","4.5","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","4.5","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","4.5","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","4.5","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","4.5","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","4.5","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","4.5","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","4.5","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","4.5","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","4.5","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","4.5","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","4.5","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","4.5","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","4.5","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","4.5","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","4.5","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","4.5","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","4.5","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","4.5","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","4.5","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","4.5","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","4.5","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","4.5","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","4.5","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","4.5","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","4.5","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","4.5","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","4.5","█","0","0","289","308","500","0","false","黑体","0"]
-["227","304","1-1","4.5","████","0","0","232","304","4500","0","false","黑体","0"]
-["229","304","1-1","4.5","████","0","0","234","304","4500","0","false","黑体","0"]
-["230","305","1-1","4.5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","4.5",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","4.5",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","4.5",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","4.5","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","4.5","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","4.5","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","4.5","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","4.5","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","4.5","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","4.5","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","4.5","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","4.5","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","4.5","████","0","0","230","346","500","0","false","黑体","0"]
-["224","314","1-1","4.5","█","0","0","228","314","4500","0","false","黑体","0"]
-["226","325","1-1","4.5","█","0","0","229","325","4500","0","false","黑体","0"]
-["287","314","1-1","4.5","█","0","0","291","314","4500","0","false","黑体","0"]
-["284","327","1-1","4.5","█","0","0","287","327","4500","0","false","黑体","0"]
-["233","360","1-1","4.5","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","4.5","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","4.5","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","4.5","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","4.5","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","4.5","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","4.5","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","4.5","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","4.5","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","4.5","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","4.5","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","4.5","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","4.5","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","4.5","███","0","0","243","233","500","0","false","黑体","0"]
-["234","236","1-1","10","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","10","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","10","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","10","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","10","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","10","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","10","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","10","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","10","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","10","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","10","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","10"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","10","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","10","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","10"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","10","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","10","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","10","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","10","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","10","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","10","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","10","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","10","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","10","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","10","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","10","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","10","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","10","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","10","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","10","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","10","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","10","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","10","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","10","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","10","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","10","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","10","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","10","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","10","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","10","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","10","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","10","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","10","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","10","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","10","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","10","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","10","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","10","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","10","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","10","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","10","█","0","0","289","308","500","0","false","黑体","0"]
-["232","304","1-1","5","████","0","0","227","304","4500","0","false","黑体","0"]
-["234","304","1-1","5","████","0","0","229","304","4500","0","false","黑体","0"]
-["239","305","1-1","5","█████","0","0","230","305","4500","0","false","黑体","0"]
-["275","303","1-1","10",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","10",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","10",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","10","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","10","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","10","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","10","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","10","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","10","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","10","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","10","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","10","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","10","████","0","0","230","346","500","0","false","黑体","0"]
-["228","314","1-1","5","█","0","0","224","314","4500","0","false","黑体","0"]
-["229","325","1-1","5","█","0","0","226","325","4500","0","false","黑体","0"]
-["291","314","1-1","5","█","0","0","287","314","4500","0","false","黑体","0"]
-["287","327","1-1","5","█","0","0","284","327","4500","0","false","黑体","0"]
-["233","360","1-1","10","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","10","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","10","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","10","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","10","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","10","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","10","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","10","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","10","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","10","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","10","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","10","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","10","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","10","███","0","0","243","233","500","0","false","黑体","0"]
-["227","304","1-1","5.5","████","0","0","232","304","5500","0","false","黑体","0"]
-["229","304","1-1","5.5","████","0","0","234","304","5500","0","false","黑体","0"]
-["230","305","1-1","5.5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","5.5",")","90","0","275","303","500","0","false","黑体","0"]
-["224","314","1-1","5.5","█","0","0","228","314","5500","0","false","黑体","0"]
-["226","325","1-1","5.5","█","0","0","229","325","5500","0","false","黑体","0"]
-["287","314","1-1","5.5","█","0","0","291","314","5500","0","false","黑体","0"]
-["284","327","1-1","5.5","█","0","0","287","327","5500","0","false","黑体","0"]
-["234","236","1-1","10","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","10","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","10","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","10","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","10","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","10","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","10","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","10","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","10","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","10","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","10","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","10"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","10","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","10","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","10"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","10","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","10","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","10","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","10","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","10","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","10","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","10","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","10","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","10","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","10","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","10","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","10","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","10","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","10","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","10","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","10","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","10","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","10","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","10","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","10","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","10","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","10","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","10","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","10","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","10","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","10","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","10","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","10","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","10","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","10","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","10","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","10","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","10","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","10","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","10","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","10","█","0","0","289","308","500","0","false","黑体","0"]
-["227","304","1-1","5","████","0","0","232","304","4500","0","false","黑体","0"]
-["229","304","1-1","5","████","0","0","234","304","4500","0","false","黑体","0"]
-["230","305","1-1","5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","10",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","10",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","10",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","10","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","10","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","10","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","10","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","10","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","10","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","10","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","10","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","10","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","10","████","0","0","230","346","500","0","false","黑体","0"]
-["224","314","1-1","5","█","0","0","228","314","4500","0","false","黑体","0"]
-["226","325","1-1","5","█","0","0","229","325","4500","0","false","黑体","0"]
-["287","314","1-1","5","█","0","0","291","314","4500","0","false","黑体","0"]
-["284","327","1-1","5","█","0","0","287","327","4500","0","false","黑体","0"]
-["233","360","1-1","10","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","10","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","10","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","10","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","10","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","10","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","10","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","10","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","10","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","10","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","10","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","10","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","10","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","10","███","0","0","243","233","500","0","false","黑体","0"]
-["232","304","1-1","5.5","████","0","0","227","304","5500","0","false","黑体","0"]
-["234","304","1-1","5.5","████","0","0","229","304","5500","0","false","黑体","0"]
-["239","305","1-1","5.5","█████","0","0","230","305","5500","0","false","黑体","0"]
-["275","303","1-1","5.5",")","90","0","275","303","500","0","false","黑体","0"]
-["228","314","1-1","5.5","█","0","0","224","314","5500","0","false","黑体","0"]
-["229","325","1-1","5.5","█","0","0","226","325","5500","0","false","黑体","0"]
-["291","314","1-1","5.5","█","0","0","287","314","5500","0","false","黑体","0"]
-["287","327","1-1","5.5","█","0","0","284","327","5500","0","false","黑体","0"]
-["234","236","1-1","9","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","9","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","9","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","9","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","9","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","9","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","9","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","9","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","9","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","9","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","9","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","9"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","9","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","9","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","9"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","9","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","9","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","9","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","9","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","9","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","9","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","9","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","9","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","9","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","9","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","9","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","9","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","9","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","9","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","9","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","9","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","9","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","9","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","9","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","9","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","9","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","9","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","9","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","9","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","9","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","9","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","9","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","9","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","9","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","9","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","9","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","9","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","9","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","9","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","9","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","9","█","0","0","289","308","500","0","false","黑体","0"]
-["232","304","1-1","5","████","0","0","227","304","4500","0","false","黑体","0"]
-["234","304","1-1","5","████","0","0","229","304","4500","0","false","黑体","0"]
-["239","305","1-1","5","█████","0","0","230","305","4500","0","false","黑体","0"]
-["275","303","1-1","9",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","9",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","9",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","9","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","9","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","9","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","9","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","9","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","9","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","9","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","9","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","9","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","9","████","0","0","230","346","500","0","false","黑体","0"]
-["228","314","1-1","5","█","0","0","224","314","4500","0","false","黑体","0"]
-["229","325","1-1","5","█","0","0","226","325","4500","0","false","黑体","0"]
-["291","314","1-1","5","█","0","0","287","314","4500","0","false","黑体","0"]
-["287","327","1-1","5","█","0","0","284","327","4500","0","false","黑体","0"]
-["233","360","1-1","9","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","9","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","9","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","9","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","9","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","9","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","9","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","9","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","9","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","9","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","9","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","9","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","9","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","9","███","0","0","243","233","500","0","false","黑体","0"]
-["227","304","1-1","4","████","0","0","232","304","4000","0","false","黑体","0"]
-["229","304","1-1","4","████","0","0","234","304","4000","0","false","黑体","0"]
-["230","305","1-1","4","█████","0","0","239","305","4000","0","false","黑体","0"]
-["275","303","1-1","4",")","90","0","275","303","500","0","false","黑体","0"]
-["224","314","1-1","4","█","0","0","228","314","4000","0","false","黑体","0"]
-["226","325","1-1","4","█","0","0","229","325","4000","0","false","黑体","0"]
-["287","314","1-1","4","█","0","0","291","314","4000","0","false","黑体","0"]
-["284","327","1-1","4","█","0","0","287","327","4000","0","false","黑体","0"]
-/n█/n█/n█/n█/n█/n█/n█/n/n/n/n/n/n/n/n/n/n/n/n
-/n █ /n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n █ /n/n/n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n █ /n/n/n █ /n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n █ /n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n█/n█/n█/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n█/n█/n█/n█/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n █ /n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n █ /n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n█/n█/n█/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n█/n█/n█/n█/n█/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n █ /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n █ /n █ /n █ /n █ /n/n/n/n/n/n/n/n/n/n/n/n
-["213","69","0-1","3","Soundhorizon","0","0","193","69","2500","0","false","黑体","0"]
-["193","69","1-0","3","Soundhorizon","0","0","173","69","3000","0","false","黑体","0"]
-["213","69","0-1","3","美しきもの/n","0","0","193","69","2500","0","false","黑体","0"]
-["232","117","0-1","3","美丽之物","0","0","212","117","2500","0","false","黑体","0"]
-["193","69","1-0","3","美しきもの/n","0","0","173","69","3000","0","false","黑体","0"]
-["212","117","1-0","3","美丽之物","0","0","192","117","3000","0","false","黑体","0"]
-["162","77","0-1","3","_____________________","0","0","142","77","2500","0","false","黑体","0"]
-["142","77","1-0","3","_____________________","0","0","122","77","3000","0","false","黑体","0"]
-["156","78","0-1","3","_____________________","0","0","136","78","2500","0","false","黑体","0"]
-["136","78","1-0","3","_____________________","0","0","116","78","3000","0","false","黑体","0"]
-["156","78","0-1","3","_____________________","0","0","136","78","2500","0","false","黑体","0"]
-["136","78","1-0","3","_____________________","0","0","116","78","3000","0","false","黑体","0"]
-["261","75","0-1","3","作词:Revo /n作曲:Revo ","0","0","241","75","2500","0","false","黑体","0"]
-["241","75","1-0","3","作词:Revo /n作曲:Revo ","0","0","221","75","3000","0","false","黑体","0"]
-["156","78","0-1","3","_____________________","0","0","136","78","2500","0","false","黑体","0"]
-["136","78","1-0","3","_____________________","0","0","116","78","3000","0","false","黑体","0"]
-["256","74","0-1","3","歌:YUUKI ","0","0","236","74","2500","0","false","黑体","0"]
-["236","74","1-0","3","歌:YUUKI ","0","0","216","74","3000","0","false","黑体","0"]
-["209","69","0-1","3","Soundhorizon","0","0","189","69","2500","0","false","黑体","0"]
-["189","69","1-0","3","Soundhorizon","0","0","169","69","3000","0","false","黑体","0"]
-["209","69","0-1","3","美しきもの/n","0","0","189","69","2500","0","false","黑体","0"]
-["228","117","0-1","3","美丽之物","0","0","208","117","2500","0","false","黑体","0"]
-["189","69","1-0","3","美しきもの/n","0","0","169","69","3000","0","false","黑体","0"]
-["208","117","1-0","3","美丽之物","0","0","188","117","3000","0","false","黑体","0"]
-["158","77","0-1","3","_____________________","0","0","138","77","2500","0","false","黑体","0"]
-["138","77","1-0","3","_____________________","0","0","118","77","3000","0","false","黑体","0"]
-["152","78","0-1","3","_____________________","0","0","132","78","2500","0","false","黑体","0"]
-["132","78","1-0","3","_____________________","0","0","112","78","3000","0","false","黑体","0"]
-["152","78","0-1","3","_____________________","0","0","132","78","2500","0","false","黑体","0"]
-["132","78","1-0","3","_____________________","0","0","112","78","3000","0","false","黑体","0"]
-["257","75","0-1","3","作词:Revo /n作曲:Revo ","0","0","237","75","2500","0","false","黑体","0"]
-["237","75","1-0","3","作词:Revo /n作曲:Revo ","0","0","217","75","3000","0","false","黑体","0"]
-["152","78","0-1","3","_____________________","0","0","132","78","2500","0","false","黑体","0"]
-["132","78","1-0","3","_____________________","0","0","112","78","3000","0","false","黑体","0"]
-["252","74","0-1","3","歌:YUUKI ","0","0","232","74","2500","0","false","黑体","0"]
-["232","74","1-0","3","歌:YUUKI ","0","0","212","74","3000","0","false","黑体","0"]
-["129","356","0-1","5.5","你最喜欢的这段旋律(Mélodie)","0","0","129","356","500","0","true","黑体","0"]
-["129","356","1-0","3","你最喜欢的这段旋律(Mélodie)","0","0","129","356","500","0","true","黑体","0"]
-["40","332","0.3-1","4.5","在天空中回响的","0","0","40","332","500","0","true","黑体","0"]
-["64","361","0.3-1","4.5","口琴声(Harmonica)","0","0","64","361","500","0","true","黑体","0"]
-["161","305","0.3-1","4.5","天使拥抱着/n 窗沿为框的画布(Toile)","0","0","161","305","500","0","true","黑体","0"]
-["233","339","0-1","2","呐…这幅风景画(Paysage)","0","0","233","339","500","0","true","黑体","0"]
-["233","339","1-0","2.5","呐…这幅风景画(Paysage)","0","0","233","339","500","0","true","黑体","0"]
-["407","359","0-1","2","漂亮吗?","0","0","407","359","500","0","true","黑体","0"]
-["407","359","1-0","1","漂亮吗?","0","0","407","359","500","0","true","黑体","0"]
-["93","332","0-1","2","景中是(C'est)——","0","0","93","332","500","0","true","黑体","0"]
-["93","332","1-0","2.5","景中是(C'est)——","0","0","93","332","500","0","true","黑体","0"]
-["116","355","0-1","2","被风带来的…","0","0","116","355","500","0","true","黑体","0"]
-["116","355","1-0","2.5","被风带来的…","0","0","116","355","500","0","true","黑体","0"]
-["116","355","0-1","2"," 淡色的花瓣","0","0","116","355","500","0","true","黑体","0"]
-["116","355","1-0","2.5"," 淡色的花瓣","0","0","116","355","500","0","true","黑体","0"]
-["64","330","0-1","2","景中是(C'est)——","0","0","64","330","500","0","true","黑体","0"]
-["64","330","1-0","2.5","景中是(C'est)——","0","0","64","330","500","0","true","黑体","0"]
-["93","355","0-1","2","与穹苍紧连的…","0","0","93","355","500","0","true","黑体","0"]
-["93","355","1-0","2.5","与穹苍紧连的…","0","0","93","355","500","0","true","黑体","0"]
-["228","355","0-1","2","流动的云","0","0","228","355","500","0","true","黑体","0"]
-["228","355","1-0","2.5","流动的云","0","0","228","355","500","0","true","黑体","0"]
-["318","355","0-1","2","夏之追忆","0","0","318","355","500","0","true","黑体","0"]
-["318","355","1-0","2.5","夏之追忆","0","0","318","355","500","0","true","黑体","0"]
-["80","332","0-1","2","美丽的音色","0","0","80","332","500","0","true","黑体","0"]
-["80","332","1-1","2.5","美丽的音色","0","0","80","332","500","0","true","黑体","0"]
-["80","332","0-1","2"," 唱歌的少女(Monica)","0","0","80","332","500","0","true","黑体","0"]
-["80","332","1-0","2.5"," 唱歌的少女(Monica)","0","0","80","332","500","0","true","黑体","0"]
-["100","358","1-0","4.5"," 指针的前进 →","0","0","100","358","500","0","true","黑体","0"]
-["87","334","1-0","4.5","真美呢…","0","0","87","334","500","0","true","黑体","0"]
-["87","334","0-1","4.5"," 你所说的景色…","0","0","87","334","500","0","true","黑体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["324","277","1-0","2.5","~♬","340","0","382","253","2500","0","true","宋体","0"]
-["324","277","1-0","2.5","~♬","340","0","382","253","2500","0","true","宋体","0"]
-["324","277","1-0","2.5","~♬","340","0","382","253","2500","0","true","宋体","0"]
-["322","253","1-0","2.5","~♩","315","0","365","208","2500","0","true","宋体","0"]
-["322","253","1-0","2.5","~♩","315","0","365","208","2500","0","true","宋体","0"]
-["322","253","1-0","2.5","~♩","315","0","365","208","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["283","251","1-0","2.5","~♭","280","0","307","221","2500","0","true","宋体","0"]
-["283","251","1-0","2.5","~♭","280","0","307","221","2500","0","true","宋体","0"]
-["283","251","1-0","2.5","~♭","280","0","307","221","2500","0","true","宋体","0"]
-["230","243","1-0","2.5","♬~","70","0","210","201","2500","0","true","宋体","0"]
-["230","243","1-0","2.5","♬~","70","0","210","201","2500","0","true","宋体","0"]
-["230","243","1-0","2.5","♬~","70","0","210","201","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["261","208","1-0","2.5","♪~","80","0","239","170","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["219","234","1-0","2.5","♫~","40","0","188","195","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["322","253","1-0","2.5","~♩","315","0","365","208","2500","0","true","宋体","0"]
-["230","243","1-0","2.5","♬~","70","0","210","201","2500","0","true","宋体","0"]
-["310","294","1-0","2.5","~♭","5","0","359","312","2500","0","true","宋体","0"]
-["324","282","1-0","2.5","~♩","350","0","391","267","2500","0","true","宋体","0"]
-["324","282","1-0","2.5","~♩","350","0","391","267","2500","0","true","宋体","0"]
-["324","282","1-0","2.5","~♩","350","0","391","267","2500","0","true","宋体","0"]
-["206","276","1-0","2.5","♫~","20","0","179","266","2500","0","true","宋体","0"]
-["322","253","1-0","2.5","~♩","315","0","365","208","2500","0","true","宋体","0"]
-["230","243","1-0","2.5","♬~","70","0","210","201","2500","0","true","宋体","0"]
-["188","317","1-0","3.5","♩~","350","0","138","336","3500","0","true","宋体","0"]
-["209","269","1-0","2.5","♪~","30","0","165","236","2500","0","true","宋体","0"]
-["310","294","1-0","2.5","~♭","5","0","359","312","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["260","242","1-0","2.5","~♪","270","0","276","196","2500","0","true","宋体","0"]
-["310","294","1-0","2.5","~♭","5","0","359","312","2500","0","true","宋体","0"]
-["481","66","0.7-1","4.5","♥","80","45","195","176","4500","0","true","宋体","0"]
-["502","13","0.7-1","4.5","♥","70","45","236","220","4500","0","true","宋体","0"]
-["281","12","0.7-1","4.5","♥","60","45","72","161","4500","0","true","宋体","0"]
-["528","3","0.7-1","4.5","♥","60","45","367","123","4500","0","true","宋体","0"]
-["430","43","0.7-1","4.5","♥","60","45","262","125","4500","0","true","宋体","0"]
-["405","12","0.7-1","4.5","♥","45","45","180","243","4500","0","true","宋体","0"]
-["348","4","0.7-1","4.5","♥","40","45","33","145","4500","0","true","宋体","0"]
-["534","86","0.7-1","4.5","♥","40","45","48","288","4500","0","true","宋体","0"]
-["222","58","0.7-1","4.5","♥","20","45","120","300","4500","0","true","宋体","0"]
-["483","95","0.7-1","4.5","♥","20","45","393","266","4500","0","true","宋体","0"]
-["374","32","0.7-1","4.5","♥","20","45","194","248","4500","0","true","宋体","0"]
-["174","28","0.7-1","4.5","♥","30","45","222","268","4500","0","true","宋体","0"]
-["479","175","0.7-1","4.5","♥","30","45","62","282","4500","0","true","宋体","0"]
-["344","54","0.7-1","4.5","♥","5","45","254","238","4500","0","true","宋体","0"]
-["290","32","0.7-1","4.5","♥","5","45","44","302","4500","0","true","宋体","0"]
-["276","61","0-1","3","其れは(C'est)——","350","0","69","93","2000","0","true","黑体","0"]
-["279","61","0-1","3","其れは(C'est)——","350","0","72","93","2000","0","true","黑体","0"]
-["282","61","0-1","3","其れは(C'est)——","350","0","75","93","2000","0","true","黑体","0"]
-["285","61","0-1","3","其れは(C'est)——","350","0","78","93","2000","0","true","黑体","0"]
-["132","190","1-1","2.5","█","0","0","112","190","500","0","ture","黑体","0"]
-["112","190","1-0","2","█","0","0","92","190","2000","0","ture","黑体","0"]
-["132","190","1-1","2.5","風","0","0","112","190","500","0","ture","黑体","0"]
-["112","190","1-0","2","風","0","0","92","190","2000","0","ture","黑体","0"]
-["135","190","1-1","2.5"," が運んだ","0","0","115","190","500","0","false","黑体","0"]
-["115","190","1-0","2"," が運んだ","0","0","95","190","2000","0","false","黑体","0"]
-["135","190","1-1","2.5","/n 淡い花弁","0","0","115","190","500","0","false","黑体","0"]
-["115","190","1-0","2","/n 淡い花弁","0","0","95","190","2000","0","false","黑体","0"]
-["210","100","0-1","3.5","春の追想","0","0","220","110","1500","0","ture","MS UI Gothic","0"]
-["230","120","0-1","3","春の追想","0","0","220","110","1500","0","ture","MS UI Gothic","0"]
-["210","120","0-1","3","春の追想","0","0","220","110","1500","0","ture","MS UI Gothic","0"]
-["230","100","0-1","3","春の追想","0","0","220","110","1500","0","ture","MS UI Gothic","0"]
-["220","110","0.8-0","2","春の追想","0","0","190","110","2000","0","ture","MS UI Gothic","0"]
-["220","110","0.8-0","2","春の追想","0","0","250","110","2000","0","ture","MS UI Gothic","0"]
-["212","98","0-1","3.5","春","0","0","222","108","1500","0","ture","MS UI Gothic","0"]
-["232","118","0-1","3","春","0","0","222","108","1500","0","ture","MS UI Gothic","0"]
-["212","118","0-1","3","春","0","0","222","108","1500","0","ture","MS UI Gothic","0"]
-["232","98","0-1","3","春","0","0","222","108","1500","0","ture","MS UI Gothic","0"]
-["222","108","0.8-0","2","春","0","0","192","108","2000","0","ture","MS UI Gothic","0"]
-["222","108","0.8-0","2","春","0","0","252","108","2000","0","ture","MS UI Gothic","0"]
-["250","185","1-1","3","綺","0","0","250","185","500","0","true","黑体","0"]
-["250","165","0.5-1","1","♪","0","0","250","185","1000","0","true","宋体","0"]
-["250","205","0.5-1","1","♪","0","0","250","185","1000","0","true","宋体","0"]
-["250","185","1-1","3"," 麗 ","0","0","250","185","500","0","true","黑体","0"]
-["250","165","0.5-1","1"," ♬ ","0","0","250","185","1000","0","true","宋体","0"]
-["250","205","0.5-1","1"," ♬ ","0","0","250","185","1000","0","true","宋体","0"]
-["250","185","1-1","3"," な ","0","0","250","185","500","0","true","黑体","0"]
-["250","165","0.5-1","1"," ♩ ","0","0","250","185","1000","0","true","宋体","0"]
-["250","205","0.5-1","1"," ♩ ","0","0","250","185","1000","0","true","宋体","0"]
-["250","185","1-1","3"," 音","0","0","250","185","500","0","true","黑体","0"]
-["250","165","0.5-1","1"," ♫","0","0","250","185","1000","0","true","宋体","0"]
-["250","205","0.5-1","1"," ♫","0","0","250","185","1000","0","true","宋体","0"]
-/n/n/n/n/n/n唄う少女 (Monica)/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n唄う少女 (Monica)/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 唄う少女 (Monica) /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 唄う少女 (Monica) /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 唄う少女 (Monica) /n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 唄う少女 (Monica) /n/n/n/n/n/n/n/n/n/n/n/n/n
-["188","121","1-0","4.5","█████████","0","0","188","121","500","0","true","黑体","0"]
-["190","121","1-0","4.5","唄う少女 (Monica)","0","0","190","121","500","0","false","黑体","0"]
-/n/n/n/n/n/n/n/n鳥の囀/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n鳥の囀/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 鳥の囀 /n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 鳥の囀 /n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 鳥の囀 /n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 鳥の囀 /n/n/n/n/n/n/n/n/n/n/n
-["243","160","1-0","4.5","███","0","0","243","160","500","0","true","黑体","0"]
-["243","160","1-0","4.5","鳥の囀","0","0","243","160","500","0","false","黑体","0"]
-["105","196","1-1","4.5","◯","0","0","105","196","500","0","false","宋体","0"]
-["158","209","1-1","4.5","12","0","0","158","209","500","0","false","宋体","0"]
-["164","290","1-1","4.5","6","0","0","164","290","500","0","false","宋体","0"]
-["203","247","1-1","4.5","3","0","0","203","247","500","0","false","宋体","0"]
-["125","247","1-1","4.5","9","0","0","125","247","500","0","false","宋体","0"]
-["164","244","1-1","4.5","。","0","0","164","244","500","0","false","宋体","0"]
-["155","230","1-1","4.5","↑","0","0","155","230","500","0","false","宋体","0"]
-["169","239","1-0","1","→","0","0","169","239","500","0","false","宋体","0"]
-["136","228","1-1","4.5","-","30","0","136","228","500","0","false","宋体","0"]
-["157","214","1-1","4.5","-","60","0","157","214","500","0","false","宋体","0"]
-["206","225","1-1","4.5","-","120","0","206","225","500","0","false","黑体","0"]
-["217","245","1-1","4.5","-","150","0","217","245","500","0","false","黑体","0"]
-["205","270","1-1","4.5","-","21","0","205","270","500","0","false","黑体","0"]
-["210","296","1-1","4.5","-","210","0","210","296","500","0","false","黑体","0"]
-["188","307","1-1","4.5","-","240","0","188","307","500","0","false","黑体","0"]
-["135","297","1-1","4.5","-","300","0","135","297","500","0","false","黑体","0"]
-["126","276","1-1","4.5","-","330","0","126","276","500","0","false","黑体","0"]
-["171","239","1-0","1","→","10","0","171","239","500","0","false","宋体","0"]
-["174","239","1-0","1","→","20","0","174","239","500","0","false","宋体","0"]
-["176","239","1-0","1","→","30","0","176","239","500","0","false","宋体","0"]
-["180","239","1-0","1","→","40","0","180","239","500","0","false","宋体","0"]
-["210","181","1-0","4.5","針","30","0","210","181","500","0","true","黑体","0"]
-["247","209","1-0","4.5","は","60","0","247","209","500","0","true","黑体","0"]
-["261","249","1-0","4.5","進","90","0","261","249","500","0","true","黑体","0"]
-["254","295","1-0","4.5","ん","120","0","254","295","500","0","true","黑体","0"]
-["228","329","1-0","4.5","だ","150","0","228","329","500","0","true","黑体","0"]
-["428","132","0-1","3","其れは(C'est)——","30","0","292","45","2000","0","true","黑体","0"]
-["425","132","0-1","3","其れは(C'est)——","30","0","289","45","2000","0","true","黑体","0"]
-["422","132","0-1","3","其れは(C'est)——","30","0","286","45","2000","0","true","黑体","0"]
-["419","132","0-1","3","其れは(C'est)——","30","0","283","45","2000","0","true","黑体","0"]
-["96","170","1-0","3.5","█","0","0","96","170","500","0","false","黑体","0"]
-["96","170","1-0","3.5","蒼","0","0","96","170","500","0","false","黑体","0"]
-["138","186","1-0","3.5","が繫いで","0","0","138","186","500","0","true","黑体","0"]
-/n/n/n/n/n流/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n流/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n れ /n/n/n/n/n/n/n/n
-/n/n/n/n/n/n れ /n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n る /n/n/n/n/n/n/n
-/n/n/n/n/n/n/n る /n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 雲 /n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 雲 /n/n/n/n/n/n
-["-10","122","0.5-1","4.5","███████","0","0","-10","122","500","0","false","MS UI Gothic","0"]
-["-10","122","0.5-1","4.5"," ██████","0","0","-10","122","500","0","false","MS UI Gothic","0"]
-["198","96","0.4-1","2.5","●","0","0","198","96","2500","0","false","黑体","0"]
-["147","140","0.4-1","2.5","●","0","0","147","140","2500","0","false","黑体","0"]
-["269","142","0.4-1","2.5","●","0","0","269","142","2500","0","false","黑体","0"]
-["214","152","0.4-1","2.5","●","0","0","214","152","2500","0","false","黑体","0"]
-["257","134","0.5-1","2.5","流","0","0","257","134","500","0","true","黑体","0"]
-["257","134","0.5-1","2.5","/nれ","0","0","257","134","500","0","true","黑体","0"]
-["257","134","0.5-1","2.5","/n/nる","0","0","257","134","500","0","true","黑体","0"]
-["257","134","0.5-1","2.5","/n/n/n雲","0","0","257","134","500","0","true","黑体","0"]
-["304","84","0-1","3","夏","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["304","104","0-1","3","夏","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["314","84","0-1","3"," の","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["314","104","0-1","3"," の","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["334","84","0-1","3"," 追","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["334","104","0-1","3"," 追","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["344","84","0-1","3"," 想","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-["344","104","0-1","3"," 想","0","0","324","94","1500","0","true","MS UI Gothic","0"]
-/n/n/n/n/n/n 綺 /n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 綺 /n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 綺 /n/n/n/n/n/n/n/n
-/n/n/n/n/n/n綺/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n 麗 /n/n/n/n/n/n/n
-/n/n/n/n/n/n/n 麗 /n/n/n/n/n/n/n
-/n/n/n/n/n/n/n 麗 /n/n/n/n/n/n/n
-/n/n/n/n/n/n/n麗/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n な /n/n/n/n/n/n
-/n/n/n/n/n/n/n/n な /n/n/n/n/n/n
-/n/n/n/n/n/n/n/n な /n/n/n/n/n/n
-/n/n/n/n/n/n/n/nな/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n 音 /n/n/n/n/n
-/n/n/n/n/n/n/n/n/n 音 /n/n/n/n/n
-/n/n/n/n/n/n/n/n/n 音 /n/n/n/n/n
-/n/n/n/n/n/n/n/n/n音/n/n/n/n/n
-["221","173","1-1","0.1","謡う少女(Monica)","0","70","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","65","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","60","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","55","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","50","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","45","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","40","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","35","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","30","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","25","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","20","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","15","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","10","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.1","謡う少女(Monica)","0","5","221","173","500","0","true","黑体","0"]
-["221","173","1-1","0.8","謡う少女(Monica)","0","0","221","173","500","0","true","黑体","0"]
-["60","-10","1-1","4.5","█████████████████████████████","90","0","60","-10","500","0","false","MS UI Gothic","0"]
-["60","-10","1-1","4.5"," ████████████████████████████","90","0","60","-10","500","0","false","MS UI Gothic","0"]
-["50","-10","1-1","4.5","█████████████████████████████","90","0","50","-10","500","0","false","MS UI Gothic","0"]
-["50","-10","1-1","4.5"," ████████████████████████████","90","0","50","-10","500","0","false","MS UI Gothic","0"]
-["40","-10","1-1","4.5","█████████████████████████████","90","0","40","-10","500","0","false","MS UI Gothic","0"]
-["40","-10","1-1","4.5"," ████████████████████████████","90","0","40","-10","500","0","false","MS UI Gothic","0"]
-["30","-10","1-1","4.5","█████████████████████████████","90","0","30","-10","500","0","false","MS UI Gothic","0"]
-["30","-10","1-1","4.5"," ████████████████████████████","90","0","30","-10","500","0","false","MS UI Gothic","0"]
-["20","-10","1-1","4.5","█████████████████████████████","90","0","20","-10","500","0","false","MS UI Gothic","0"]
-["20","-10","1-1","4.5"," ████████████████████████████","90","0","20","-10","500","0","false","MS UI Gothic","0"]
-["40","59","1-1","4.5","███","350","0","40","59","500","0","false","黑体","0"]
-["40","59","1-1","4.5"," ██","350","0","40","59","500","0","false","黑体","0"]
-["98","50","1-1","4.5","███","355","0","98","50","500","0","false","黑体","0"]
-["98","50","1-1","4.5"," ██","355","0","98","50","500","0","false","黑体","0"]
-["153","46","1-1","4.5","███","0","0","153","46","500","0","false","黑体","0"]
-["153","46","1-1","4.5"," ██","0","0","153","46","500","0","false","黑体","0"]
-["202","49","1-1","4.5","███","10","0","202","49","500","0","false","黑体","0"]
-["202","49","1-1","4.5"," ██","10","0","202","49","500","0","false","黑体","0"]
-["238","58","1-1","4.5","████","15","0","238","58","500","0","false","MS UI Gothic","0"]
-["238","58","1-1","4.5"," ███","15","0","238","58","500","0","false","MS UI Gothic","0"]
-["48","51","1-1","4.5","███","350","0","48","51","500","0","false","黑体","0"]
-["48","51","1-1","4.5"," ██","350","0","48","51","500","0","false","黑体","0"]
-["46","50","1-1","4.5","█","355","0","46","50","500","0","false","黑体","0"]
-["46","50","1-1","4.5"," █","355","0","46","50","500","0","false","黑体","0"]
-["98","43","1-1","4.5","███","355","0","98","43","500","0","false","黑体","0"]
-["98","43","1-1","4.5"," ██","355","0","98","43","500","0","false","黑体","0"]
-["144","40","1-1","4.5","███","2","0","144","40","500","0","false","黑体","0"]
-["144","40","1-1","4.5"," ██","2","0","144","40","500","0","false","黑体","0"]
-["183","42","1-1","4.5","████","7","0","183","42","500","0","false","MS UI Gothic","0"]
-["183","42","1-1","4.5"," ███","7","0","183","42","500","0","false","MS UI Gothic","0"]
-["207","45","1-1","4.5","█████","10","0","207","45","500","0","false","MS UI Gothic","0"]
-["207","45","1-1","4.5"," ████","10","0","207","45","500","0","false","MS UI Gothic","0"]
-["232","50","1-1","4.5","███████","18","0","232","50","500","0","false","MS UI Gothic","0"]
-["232","50","1-1","4.5"," ██████","18","0","232","50","500","0","false","MS UI Gothic","0"]
-["121","5","1-1","4.5","◆","15","60","121","5","500","0","false","黑体","0"]
-["250","71","1-1","4.5","◆","320","70","250","71","500","0","false","黑体","0"]
-["252","26","1-1","4.5","◆","45","70","252","26","500","0","false","黑体","0"]
-["157","26","1-1","4.5","◆","60","60","157","26","500","0","false","黑体","0"]
-["180","42","1-1","4.5","█████","340","0","180","42","500","0","false","MS UI Gothic","0"]
-["180","42","1-1","4.5"," ████","340","0","180","42","500","0","false","MS UI Gothic","0"]
-["209","32","1-1","4.5","████","350","0","209","32","500","0","false","MS UI Gothic","0"]
-["209","32","1-1","4.5"," ███","350","0","209","32","500","0","false","MS UI Gothic","0"]
-["241","7","1-1","4.5","◆","33","65","241","7","500","0","false","黑体","0"]
-["215","13","1-1","4.5","◆","344","65","215","13","500","0","false","黑体","0"]
-["247","71","1-1","4.5","◆","334","65","247","71","500","0","false","黑体","0"]
-["285","30","1-1","4.5","◆","60","60","285","30","500","0","false","黑体","0"]
-["127","69","1-1","4.5","◆","320","60","127","69","500","0","false","黑体","0"]
-["140","12","1-1","4.5","◆","40","60","140","12","500","0","false","黑体","0"]
-["95","155","1-1","4.5","●","90","60","95","155","500","0","true","黑体","0"]
-["70","162","1-1","4.5","■","355","0","70","162","500","0","false","黑体","0"]
-["70","169","1-1","4.5","■","357","0","70","169","500","0","false","黑体","0"]
-["70","181","1-1","4.5","●","20","60","70","181","500","0","false","黑体","0"]
-["82","168","1-1","4.5","■","25","62","82","168","500","0","false","黑体","0"]
-["72","170","1-1","4.5","●","20","60","72","170","500","0","false","黑体","0"]
-["76","158","1-1","4.5","●","15","60","76","158","500","0","false","黑体","0"]
-["59","172","1-1","4.5","__","0","0","59","172","500","0","false","黑体","0"]
-["60","150","1-1","4.5","__","15","0","60","150","500","0","false","黑体","0"]
-["57","158","1-1","4.5","__","350","0","57","158","500","0","false","黑体","0"]
-["61","142","1-1","4.5","__","18","0","61","142","500","0","false","黑体","0"]
-["62","122","1-1","4.5","_","18","0","62","122","500","0","false","黑体","0"]
-["75","128","1-1","4.5","_","60","0","75","128","500","0","false","黑体","0"]
-["75","130","1-1","4.5","__","48","0","75","130","500","0","false","黑体","0"]
-["85","146","1-1","4.5","▃","90","0","85","146","500","0","false","黑体","0"]
-["70","165","1-1","4.5","■","0","0","70","165","500","0","false","黑体","0"]
-["68","176","1-1","4.5","■","0","0","68","176","500","0","false","黑体","0"]
-["50","198","1-1","4.5","_","290","0","50","198","500","0","false","黑体","0"]
-["50","192","1-1","4.5","_","300","0","50","192","500","0","false","黑体","0"]
-["57","182","1-1","4.5","_","330","0","57","182","500","0","false","黑体","0"]
-["70","161","0.6-0.6","4.5"," □□/n/n/n/n/n/n □□□/n","10","50","70","161","500","0","false","黑体","0"]
-["70","161","0.6-0.6","4.5","/n □□/n/n/n/n□□□□/n/n","10","50","70","161","500","0","false","黑体","0"]
-["70","161","0.6-0.6","4.5","/n/n □□□/n/n□□□□/n/n/n","10","50","70","161","500","0","false","黑体","0"]
-["70","161","0.6-0.6","4.5","/n/n/n□□□□/n/n/n/n","10","50","70","161","500","0","false","黑体","0"]
-["70","167","0.6-0.6","4.5"," □□/n/n/n/n/n/n □□□/n","10","50","70","167","500","0","false","黑体","0"]
-["70","167","0.6-0.6","4.5","/n □□/n/n/n/n□□□□/n/n","10","50","70","167","500","0","false","黑体","0"]
-["70","167","0.6-0.6","4.5","/n/n □□□/n/n□□□□/n/n/n","10","50","70","167","500","0","false","黑体","0"]
-["70","167","0.6-0.6","4.5","/n/n/n□□□□/n/n/n/n","10","50","70","167","500","0","false","黑体","0"]
-["148","127","0-1","1.5","蟬の時雨","0","0","148","127","500","0","true","黑体","0"]
-["146","125","0-1","1.5","蟬","0","0","146","125","500","0","true","黑体","0"]
-["148","127","1-1","3","蟬 ","0","0","148","227","800","100","true","黑体","1"]
-["148","127","1-1","3"," の ","0","0","148","227","800","300","true","黑体","1"]
-["148","127","1-1","3"," 時 ","0","0","148","227","800","500","true","黑体","1"]
-["148","127","1-1","3"," 雨","0","0","148","227","800","700","true","黑体","1"]
-["146","125","1-1","3","蟬","0","0","146","225","800","100","true","黑体","1"]
-["111","151","1-1","4.5","_","110","0","111","151","500","0","false","黑体","0"]
-["107","150","1-1","4.5","_","96","0","107","150","500","0","false","黑体","0"]
-["305","176","1-1","4.5","◯","0","0","305","176","500","0","false","宋体","0"]
-["358","189","1-1","4.5","12","0","0","358","189","500","0","false","宋体","0"]
-["364","270","1-1","4.5","6","0","0","364","270","500","0","false","宋体","0"]
-["403","227","1-1","4.5","3","0","0","403","227","500","0","false","宋体","0"]
-["325","227","1-1","4.5","9","0","0","325","227","500","0","false","宋体","0"]
-["364","224","1-1","4.5","。","0","0","364","224","500","0","false","宋体","0"]
-["336","208","1-1","4.5","-","30","0","336","208","500","0","false","宋体","0"]
-["357","194","1-1","4.5","-","60","0","357","194","500","0","false","宋体","0"]
-["406","205","1-1","4.5","-","120","0","406","205","500","0","false","黑体","0"]
-["417","225","1-1","4.5","-","150","0","417","225","500","0","false","黑体","0"]
-["405","250","1-1","4.5","-","21","0","405","250","500","0","false","黑体","0"]
-["410","276","1-1","4.5","-","210","0","410","276","500","0","false","黑体","0"]
-["388","287","1-1","4.5","-","240","0","388","287","500","0","false","黑体","0"]
-["335","277","1-1","4.5","-","300","0","335","277","500","0","false","黑体","0"]
-["326","256","1-1","4.5","-","330","0","326","256","500","0","false","黑体","0"]
-["370","224","1-1","4.5","→","0","0","370","224","500","0","true","黑体","0"]
-["394","237","1-0","1","→","90","0","394","237","500","0","true","黑体","0"]
-["393","240","1-0","1","→","100","0","393","240","500","0","true","黑体","0"]
-["392","243","1-0","1","→","110","0","392","243","500","0","true","黑体","0"]
-["391","246","1-0","1","→","120","0","391","246","500","0","true","黑体","0"]
-["390","249","1-0","1","→","130","0","390","249","500","0","true","黑体","0"]
-["429","286","1-0","4.5","針","300","0","429","286","500","0","true","黑体","0"]
-["399","306","1-0","4.5","は","330","0","399","306","500","0","true","黑体","0"]
-["361","312","1-0","4.5","進","0","0","361","312","500","0","true","黑体","0"]
-["323","294","1-0","4.5","ん","30","0","323","294","500","0","true","黑体","0"]
-["304","262","1-0","4.5","だ","60","0","304","262","500","0","true","黑体","0"]
-["219","49","1-1","4.5","綺","0","0","239","69","500","0","true","黑体","0"]
-["229","49","1-1","4.5"," 麗","0","0","239","69","500","0","true","黑体","0"]
-["249","49","1-1","4.5"," だ","0","0","239","69","500","0","true","黑体","0"]
-["259","49","1-1","4.5"," と","0","0","239","69","500","0","true","黑体","0"]
-["219","158","0.5-0.5","4.5","綺","180","180","239","138","500","0","true","黑体","0"]
-["229","158","0.5-0.5","4.5"," 麗","180","180","239","138","500","0","true","黑体","0"]
-["249","158","0.5-0.5","4.5"," だ","180","180","239","138","500","0","true","黑体","0"]
-["259","158","0.5-0.5","4.5"," と","180","180","239","138","500","0","true","黑体","0"]
-["-102","173","1-1","4.5","君が言った ","0","0","102","173","1000","0","true","黑体","0"]
-["-102","228","0.5-0.5","4.5","君が言った ","180","180","102","228","1000","0","true","黑体","0"]
-["548","310","0.5-0.5","4","きっと ","180","180","248","310","1000","0","true","黑体","0"]
-["548","258","1-1","4","きっと ","0","0","248","258","1000","0","true","黑体","0"]
-["-102","173","1-1","4.5"," 景色","0","0","102","173","1000","0","true","黑体","0"]
-["-102","228","0.5-0.5","4.5"," 景色","180","180","102","228","1000","0","true","黑体","0"]
-["548","310","0.5-0.5","4"," 忘れない","180","180","248","310","1000","0","true","黑体","0"]
-["548","258","1-1","4"," 忘れない","0","0","248","258","1000","0","true","黑体","0"]
-["102","173","1-1","4.5","君が言った","0","0","602","173","2000","0","true","黑体","0"]
-["102","228","0.5-0.5","4.5","君が言った","180","180","602","228","2000","0","true","黑体","0"]
-["102","173","1-1","4.5"," 景色","0","0","602","173","2000","0","true","黑体","0"]
-["102","228","0.5-0.5","4.5"," 景色","180","180","602","228","2000","0","true","黑体","0"]
-["248","310","0.5-0.5","4.5","きっと ","180","180","-200","310","2000","0","true","黑体","0"]
-["248","258","1-1","4.5","きっと ","0","0","-200","258","2000","0","true","黑体","0"]
-["248","310","0.5-0.5","4.5"," 忘れない","180","180","-200","310","2000","0","true","黑体","0"]
-["248","258","1-1","4.5"," 忘れない","0","0","-200","258","2000","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","0","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","10","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","20","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","30","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","40","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","50","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","60","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","70","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","80","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","90","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","100","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","110","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","120","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","130","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","140","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","150","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","160","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","170","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","180","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","190","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","200","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","210","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","220","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","230","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","240","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","250","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","260","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","270","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","280","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","290","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","300","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","310","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","320","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","330","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの/n","340","0","79","134","500","0","true","黑体","0"]
-["79","134","1-0","4.5","美しきもの","350","0","79","134","500","0","true","黑体","0"]
-["79","134","1-1","4","美しきもの","360","0","79","134","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","2","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["308","203","1-0","4","集める為に/n","0","0","308","203","500","0","true","黑体","0"]
-["20","138","0-1","1.5","生命(ひと)","350","30","107","114","1500","0","false","MS UI Gothic","0"]
-["327","106","0-1","1.5","は遣って來る","350","30","184","137","1500","0","false","MS UI Gothic","0"]
-["107","114","1-1","1.1","生命(ひと)","350","30","107","114","1500","0","false","MS UI Gothic","0"]
-["184","137","1-1","1.1","は遣って來る","350","30","184","137","1500","0","false","MS UI Gothic","0"]
-["107","114","1-0","1.5","生命(ひと)","350","30","107","114","1500","0","false","MS UI Gothic","0"]
-["184","137","1-0","1.5","は遣って來る","350","30","184","137","1500","0","false","MS UI Gothic","0"]
-["222","196","1-0","0.5","君 ","0","0","222","196","500","0","true","黑体","0"]
-["222","196","1-0","0.5"," が","0","0","222","196","500","0","true","黑体","0"]
-["228","201","1-1","3.8","君","0","0","228","201","500","0","false","黑体","0"]
-["228","201","1-1","2.2"," が","0","0","228","201","500","0","false","黑体","0"]
-["228","201","1-0","3","君が","0","0","228","201","500","0","false","黑体","0"]
-["224","242","1-0","4.5","抱","10","0","224","242","500","0","false","黑体","0"]
-["254","250","1-0","4.5","き","0","0","254","250","500","0","false","黑体","0"]
-["280","248","1-0","4.5","し","340","0","280","248","500","0","false","黑体","0"]
-["300","233","1-0","4.5","め","300","0","300","233","500","0","false","黑体","0"]
-["306","207","1-0","4.5","た","260","0","306","207","500","0","false","黑体","0"]
-["190","237","1-0","4.5","短","270","0","190","237","500","0","false","黑体","0"]
-["200","187","1-0","4.5","い","310","0","200","187","500","0","false","黑体","0"]
-["235","161","1-0","4.5","季","340","0","235","161","500","0","false","黑体","0"]
-["274","149","1-0","4.5","節","350","0","274","149","500","0","false","黑体","0"]
-["306","145","1-0","4.5","(Saison)","0","0","306","145","500","0","false","黑体","0"]
-["321","36","1-1","0.5","痛","30","0","147","288","500","0","false","黑体","0"]
-["463","38","1-1","0.5","み/n","30","0","276","283","500","0","true","黑体","0"]
-["459","10","1-1","0.6","の","30","0","212","267","500","0","true","黑体","0"]
-["468","58","1-1","0.6","雨","15","0","347","315","500","0","true","黑体","0"]
-["470","2","1-1","0.6","に","10","0","369","242","500","0","true","黑体","0"]
-["356","23","1-1","0.6","打","40","0","134","230","500","0","true","黑体","0"]
-["377","39","1-1","0.6","た","20","0","239","244","500","0","true","黑体","0"]
-["362","11","1-1","0.6","れ","10","0","296","286","500","0","true","黑体","0"]
-["419","26","1-1","0.6","な","15","0","350","280","500","0","true","黑体","0"]
-["465","18","1-1","0.6","が","5","0","427","315","500","0","true","黑体","0"]
-["406","46","1-1","0.6","ら","50","0","194","203","500","0","true","黑体","0"]
-["147","288","1-0","3.5","痛","30","0","147","308","3500","0","false","黑体","0"]
-["276","283","1-0","3.5","み/n","30","0","276","303","3500","0","true","黑体","0"]
-["212","267","1-0","3.5","の","30","0","212","287","3500","0","true","黑体","0"]
-["347","315","1-0","3.5","雨","15","0","347","335","3500","0","true","黑体","0"]
-["369","242","1-0","3.5","に","10","0","369","262","3500","0","true","黑体","0"]
-["134","230","1-0","3.5","打","40","0","134","250","3500","0","true","黑体","0"]
-["239","244","1-0","3.5","た","20","0","239","264","3500","0","true","黑体","0"]
-["296","286","1-0","3.5","れ","10","0","296","306","3500","0","true","黑体","0"]
-["350","280","1-0","3.5","な","15","0","350","300","3500","0","true","黑体","0"]
-["427","315","1-0","3.5","が","5","0","427","335","3500","0","true","黑体","0"]
-["194","203","1-0","3.5","ら","50","0","194","223","3500","0","true","黑体","0"]
-["180","291","0.7-0.7","0.1","◯","94","71","180","291","500","0","false","宋体","0"]
-["184","291","0.7-0.7","0.1","◯","94","71","184","291","500","0","false","宋体","0"]
-["190","290","0.7-0.7","0.1","◯","94","71","190","290","500","0","false","宋体","0"]
-["196","288","0.7-0.7","0.1","◯","94","71","196","288","500","0","false","宋体","0"]
-["202","288","0.7-0.7","0.1","◯","94","71","202","288","500","0","false","宋体","0"]
-["209","286","0.7-0.7","0.1","◯","94","71","209","286","500","0","false","宋体","0"]
-["218","284","0.7-0.7","0.1","◯","94","71","218","284","500","0","false","宋体","0"]
-["300","290","0.7-0.7","0.1","◯","90","71","300","290","500","0","false","宋体","0"]
-["305","289","0.7-0.7","0.1","◯","90","71","305","289","500","0","false","宋体","0"]
-["310","287","0.7-0.7","0.1","◯","90","71","310","287","500","0","false","宋体","0"]
-["316","285","0.7-0.7","0.1","◯","90","71","316","285","500","0","false","宋体","0"]
-["321","283","0.7-0.7","0.1","◯","90","71","321","283","500","0","false","宋体","0"]
-["327","281","0.7-0.7","0.1","◯","90","71","327","281","500","0","false","宋体","0"]
-["335","278","0.7-0.7","0.1","◯","90","71","335","278","500","0","false","宋体","0"]
-["235","276","0.7-0.7","0.1","◯","91","71","235","276","500","0","false","宋体","0"]
-["241","275","0.7-0.7","0.1","◯","91","71","241","275","500","0","false","宋体","0"]
-["247","273","0.7-0.7","0.1","◯","91","71","247","273","500","0","false","宋体","0"]
-["252","271","0.7-0.7","0.1","◯","91","71","252","271","500","0","false","宋体","0"]
-["258","270","0.7-0.7","0.1","◯","91","71","258","270","500","0","false","宋体","0"]
-["263","268","0.7-0.7","0.1","◯","91","71","263","268","500","0","false","宋体","0"]
-["271","266","0.7-0.7","0.1","◯","91","71","271","266","500","0","false","宋体","0"]
-["380","319","0.7-0.7","0.1","◯","88","70","380","319","500","0","false","宋体","0"]
-["385","318","0.7-0.7","0.1","◯","88","70","385","318","500","0","false","宋体","0"]
-["390","316","0.7-0.7","0.1","◯","88","70","390","316","500","0","false","宋体","0"]
-["396","314","0.7-0.7","0.1","◯","88","70","396","314","500","0","false","宋体","0"]
-["401","312","0.7-0.7","0.1","◯","88","70","401","312","500","0","false","宋体","0"]
-["407","310","0.7-0.7","0.1","◯","88","70","407","310","500","0","false","宋体","0"]
-["412","308","0.7-0.7","0.1","◯","88","70","412","308","500","0","false","宋体","0"]
-["417","307","0.7-0.7","0.1","◯","88","70","417","307","500","0","false","宋体","0"]
-["395","244","0.7-0.7","0.1","◯","88","70","395","244","500","0","false","宋体","0"]
-["400","243","0.7-0.7","0.1","◯","88","70","400","243","500","0","false","宋体","0"]
-["405","241","0.7-0.7","0.1","◯","88","70","405","241","500","0","false","宋体","0"]
-["409","239","0.7-0.7","0.1","◯","88","70","409","239","500","0","false","宋体","0"]
-["414","237","0.7-0.7","0.1","◯","88","70","414","237","500","0","false","宋体","0"]
-["419","236","0.7-0.7","0.1","◯","88","70","419","236","500","0","false","宋体","0"]
-["423","234","0.7-0.7","0.1","◯","88","70","423","234","500","0","false","宋体","0"]
-["160","235","0.7-0.7","0.1","◯","94","70","160","235","500","0","false","宋体","0"]
-["165","234","0.7-0.7","0.1","◯","94","70","165","234","500","0","false","宋体","0"]
-["171","232","0.7-0.7","0.1","◯","94","70","171","232","500","0","false","宋体","0"]
-["177","230","0.7-0.7","0.1","◯","94","70","177","230","500","0","false","宋体","0"]
-["182","228","0.7-0.7","0.1","◯","94","70","182","228","500","0","false","宋体","0"]
-["188","227","0.7-0.7","0.1","◯","94","70","188","227","500","0","false","宋体","0"]
-["197","225","0.7-0.7","0.1","◯","94","70","197","225","500","0","false","宋体","0"]
-["263","246","0.7-0.7","0.1","◯","91","70","263","246","500","0","false","宋体","0"]
-["269","244","0.7-0.7","0.1","◯","91","70","269","244","500","0","false","宋体","0"]
-["275","243","0.7-0.7","0.1","◯","91","70","275","243","500","0","false","宋体","0"]
-["280","241","0.7-0.7","0.1","◯","91","70","280","241","500","0","false","宋体","0"]
-["286","240","0.7-0.7","0.1","◯","91","70","286","240","500","0","false","宋体","0"]
-["291","238","0.7-0.7","0.1","◯","91","70","291","238","500","0","false","宋体","0"]
-["299","236","0.7-0.7","0.1","◯","91","70","299","236","500","0","false","宋体","0"]
-["328","292","0.7-0.7","0.1","◯","90","70","328","292","500","0","false","宋体","0"]
-["333","290","0.7-0.7","0.1","◯","90","70","333","290","500","0","false","宋体","0"]
-["338","288","0.7-0.7","0.1","◯","90","70","338","288","500","0","false","宋体","0"]
-["343","287","0.7-0.7","0.1","◯","90","70","343","287","500","0","false","宋体","0"]
-["349","285","0.7-0.7","0.1","◯","90","70","349","285","500","0","false","宋体","0"]
-["354","283","0.7-0.7","0.1","◯","90","70","354","283","500","0","false","宋体","0"]
-["362","281","0.7-0.7","0.1","◯","90","70","362","281","500","0","false","宋体","0"]
-["378","282","0.7-0.7","0.1","◯","89","70","378","282","500","0","false","宋体","0"]
-["382","280","0.7-0.7","0.1","◯","89","70","382","280","500","0","false","宋体","0"]
-["387","279","0.7-0.7","0.1","◯","89","70","387","279","500","0","false","宋体","0"]
-["392","277","0.7-0.7","0.1","◯","89","70","392","277","500","0","false","宋体","0"]
-["396","276","0.7-0.7","0.1","◯","89","70","396","276","500","0","false","宋体","0"]
-["401","274","0.7-0.7","0.1","◯","89","70","401","274","500","0","false","宋体","0"]
-["408","272","0.7-0.7","0.1","◯","89","70","408","272","500","0","false","宋体","0"]
-["462","313","0.7-0.7","0.1","◯","85","70","462","313","500","0","false","宋体","0"]
-["467","311","0.7-0.7","0.1","◯","85","70","467","311","500","0","false","宋体","0"]
-["471","309","0.7-0.7","0.1","◯","85","70","471","309","500","0","false","宋体","0"]
-["475","307","0.7-0.7","0.1","◯","85","70","475","307","500","0","false","宋体","0"]
-["479","306","0.7-0.7","0.1","◯","85","70","479","306","500","0","false","宋体","0"]
-["483","304","0.7-0.7","0.1","◯","85","70","483","304","500","0","false","宋体","0"]
-["487","302","0.7-0.7","0.1","◯","85","70","487","302","500","0","false","宋体","0"]
-["491","301","0.7-0.7","0.1","◯","85","70","491","301","500","0","false","宋体","0"]
-["209","208","0.7-0.7","0.1","◯","93","70","209","208","500","0","false","宋体","0"]
-["215","206","0.7-0.7","0.1","◯","93","70","215","206","500","0","false","宋体","0"]
-["221","205","0.7-0.7","0.1","◯","93","70","221","205","500","0","false","宋体","0"]
-["226","203","0.7-0.7","0.1","◯","93","70","226","203","500","0","false","宋体","0"]
-["231","202","0.7-0.7","0.1","◯","93","70","231","202","500","0","false","宋体","0"]
-["236","200","0.7-0.7","0.1","◯","93","70","236","200","500","0","false","宋体","0"]
-["241","199","0.7-0.7","0.1","◯","93","70","241","199","500","0","false","宋体","0"]
-["250","197","0.7-0.7","0.1","◯","93","70","250","197","500","0","false","宋体","0"]
-["11","102","0-1","3","尽/n管/n饱/n受/n痛/n苦/n之/n雨/n的/n敲/n打","0","0","11","102","500","0","true","黑体","0"]
-["11","102","1-0","3","尽/n管/n饱/n受/n痛/n苦/n之/n雨/n的/n敲/n打","0","0","11","102","500","0","true","黑体","0"]
-["260","75","0-1","1.5","「心配ないよ」","0","0","165","75","1500","0","true","黑体","0"]
-["165","75","1-0","3","「心配ないよ」","0","0","165","75","1000","0","true","黑体","0"]
-["199","215","1-0","4.5","笑","50","0","177","187","1000","0","true","黑体","0"]
-["235","233","1-0","4.5","っ","30","0","199","215","1000","0","true","黑体","0"]
-["260","233","1-0","4.5","て","10","0","235","233","1000","0","true","黑体","0"]
-["260","233","1-0","4.5","言","350","0","280","233","1000","0","true","黑体","0"]
-["280","237","1-0","4.5","っ","330","0","315","227","1000","0","true","黑体","0"]
-["315","227","1-0","4.5","た","310","0","347","205","1000","0","true","黑体","0"]
-["142","95","1-1","4.5","█","0","0","142","95","500","0","true","黑体","0"]
-["142","95","1-1","4.5","君","0","0","142","95","500","0","false","黑体","0"]
-["150","105","1-1","3.8"," の","0","0","150","105","500","0","false","黑体","0"]
-["188","84","0-1","1.5","様相(Visage)","0","0","208","104","1500","0","false","黑体","0"]
-["188","124","0-1","1.5","様相(Visage)","0","0","208","104","1500","0","false","黑体","0"]
-["228","124","0-1","1.5","様相(Visage)","0","0","208","104","1500","0","false","黑体","0"]
-["228","84","0-1","1.5","様相(Visage)","0","0","208","104","1500","0","false","黑体","0"]
-["208","104","1-1","2","様相(Visage)","0","0","208","104","2500","0","false","黑体","0"]
-["278","146","1-1","3.5","忘れないよ","0","0","278","146","500","0","true","黑体","0"]
-["278","126","0-1","1.5","忘","0","0","278","146","1500","0","false","黑体","0"]
-["278","126","0-1","1.5"," れ","0","0","278","146","1500","0","false","黑体","0"]
-["278","126","0-1","1.5"," な","0","0","278","146","1500","0","false","黑体","0"]
-["278","126","0-1","1.5"," い","0","0","278","146","1500","0","false","黑体","0"]
-["278","126","0-1","1.5"," よ","0","0","278","146","1500","0","false","黑体","0"]
-["278","166","0-1","1.5","忘","0","0","278","146","1500","0","false","黑体","0"]
-["278","166","0-1","1.5"," れ","0","0","278","146","1500","0","false","黑体","0"]
-["278","166","0-1","1.5"," な","0","0","278","146","1500","0","false","黑体","0"]
-["278","166","0-1","1.5"," い","0","0","278","146","1500","0","false","黑体","0"]
-["278","166","0-1","1.5"," よ","0","0","278","146","1500","0","false","黑体","0"]
-["278","146","1-1","2.5","忘","0","0","278","146","1500","0","false","黑体","0"]
-["278","146","1-1","2.2"," れ","0","0","278","146","1500","0","false","黑体","0"]
-["278","146","1-1","1.5"," な","0","0","278","146","1500","0","false","黑体","0"]
-["278","146","1-1","1.1"," い","0","0","278","146","1500","0","false","黑体","0"]
-["278","146","1-1","0.5"," よ","0","0","278","146","1500","0","false","黑体","0"]
-["193","335","0-1","4.5","“不用担心哦”","0","0","193","335","500","0","true","黑体","0"]
-["193","360","0-1","4.5","你笑着这么说道","0","0","193","360","500","0","true","黑体","0"]
-["132","337","0-1","4.5","你的样子(Visage)","0","0","132","337","500","0","true","黑体","0"]
-["241","360","0-1","4.5","永远不忘…","0","0","241","360","500","0","true","黑体","0"]
-["142","240","1-0","1.5","♪","0","0","92","240","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","192","240","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","142","290","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","142","190","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","107","205","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","107","275","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","177","205","1500","0","false","宋体","0"]
-["142","240","1-0","1.5","♪","0","0","177","275","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","275","108","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","175","108","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","225","158","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","225","58","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","260","143","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","260","73","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","190","143","1500","0","false","宋体","0"]
-["225","108","1-0","1.5","♩","0","0","190","73","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","396","254","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","296","254","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","346","304","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","346","204","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","381","289","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","381","219","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","311","289","1500","0","false","宋体","0"]
-["346","254","1-0","1.5","♭","0","0","311","219","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","350","97","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","450","97","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","400","147","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","400","47","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","435","132","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","435","62","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","365","62","1500","0","false","宋体","0"]
-["400","97","1-0","1.5","♬","0","0","365","132","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","340","87","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","440","87","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","390","137","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","390","37","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","425","122","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","425","52","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","355","52","1500","0","false","宋体","0"]
-["390","87","1-0","1.5","♬","0","0","355","122","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","257","281","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","157","281","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","207","331","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","207","231","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","242","315","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","242","246","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","172","315","1500","0","false","宋体","0"]
-["207","281","1-0","1.5","♪","0","0","172","246","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","108","59","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","208","59","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","158","9","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","158","109","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","193","94","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","193","24","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","123","24","1500","0","false","宋体","0"]
-["158","59","1-0","1.5","♫","0","0","123","94","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","102","214","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","202","214","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","152","264","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","152","164","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","187","249","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","187","179","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","117","249","1500","0","false","宋体","0"]
-["152","214","1-0","1.5","♭","0","0","117","179","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","379","164","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","279","164","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","329","214","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","329","114","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","364","199","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","364","129","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","294","199","1500","0","false","宋体","0"]
-["329","164","1-0","1.5","♩","0","0","294","129","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","337","206","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","237","206","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","287","256","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","287","156","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","322","241","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","322","171","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","252","241","1500","0","false","宋体","0"]
-["287","206","1-0","1.5","♭","0","0","252","171","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","184","113","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","84","113","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","134","163","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","134","63","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","169","148","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","169","78","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","99","78","1500","0","false","宋体","0"]
-["134","113","1-0","1.5","♪","0","0","99","148","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","329","218","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","229","218","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","279","268","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","279","168","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","314","253","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","314","183","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","244","253","1500","0","false","宋体","0"]
-["279","218","1-0","1.5","♩","0","0","244","183","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","393","177","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","293","177","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","343","227","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","343","127","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","308","212","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","308","142","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","378","142","1500","0","false","宋体","0"]
-["343","177","1-0","1.5","♪","0","0","378","212","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","214","132","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","114","132","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","164","182","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","164","82","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","199","167","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","199","97","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","129","167","1500","0","false","宋体","0"]
-["164","132","1-0","1.5","♭","0","0","129","97","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","359","71","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","259","71","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","309","121","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","309","21","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","344","106","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","344","36","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","274","36","1500","0","false","宋体","0"]
-["309","71","1-0","1.5","♪","0","0","274","106","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","283","247","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","183","247","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","233","297","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","233","197","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","268","282","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","268","212","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","198","212","1500","0","false","宋体","0"]
-["233","247","1-0","1.5","♬","0","0","198","282","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","243","125","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","143","125","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","193","175","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","193","75","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","228","160","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","228","90","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","158","160","1500","0","false","宋体","0"]
-["193","125","1-0","1.5","♩","0","0","158","90","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","273","155","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","173","155","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","223","205","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","223","105","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","258","190","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","258","120","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","188","190","1500","0","false","宋体","0"]
-["223","155","1-0","1.5","♩","0","0","188","120","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","395","83","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","295","83","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","345","133","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","345","33","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","380","118","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","380","48","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","310","48","1500","0","false","宋体","0"]
-["345","83","1-0","1.5","♫","0","0","310","118","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","457","133","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","357","133","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","407","183","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","407","83","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","442","168","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","442","98","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","372","98","1500","0","false","宋体","0"]
-["407","133","1-0","1.5","♪","0","0","372","168","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","192","179","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","92","179","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","142","229","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","142","129","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","177","214","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","107","214","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","177","144","1500","0","false","宋体","0"]
-["142","179","1-0","1.5","♭","0","0","107","144","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","279","224","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","179","224","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","229","274","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","229","174","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","264","259","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","264","189","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","194","259","1500","0","false","宋体","0"]
-["229","224","1-0","1.5","♬","0","0","194","189","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","415","166","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","315","166","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","365","216","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","365","116","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","400","201","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","400","131","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","330","131","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","330","201","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","415","166","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","315","166","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","365","216","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","365","116","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","400","201","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","400","131","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","330","131","1500","0","false","宋体","0"]
-["365","166","1-0","1.5","♪","0","0","330","201","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","228","261","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","128","261","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","178","311","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","178","211","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","213","296","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","213","226","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","143","226","1500","0","false","宋体","0"]
-["178","261","1-0","1.5","♬","0","0","143","296","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","204","195","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","104","195","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","154","245","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","154","145","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","189","230","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","189","160","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","119","160","1500","0","false","宋体","0"]
-["154","195","1-0","1.5","♩","0","0","119","230","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","326","122","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","226","122","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","276","172","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","276","72","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","311","157","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","311","87","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","241","87","1500","0","false","宋体","0"]
-["276","122","1-0","1.5","♫","0","0","241","157","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","417","168","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","317","168","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","367","218","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","367","118","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","402","203","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","332","203","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","402","133","1500","0","false","宋体","0"]
-["367","168","1-0","1.5","♪","0","0","332","133","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","306","257","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","206","257","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","256","307","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","256","207","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","291","292","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","291","222","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","221","292","1500","0","false","宋体","0"]
-["256","257","1-0","1.5","♭","0","0","221","222","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","153","155","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","53","155","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","103","105","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","103","205","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","138","190","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","138","120","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","68","120","1500","0","false","宋体","0"]
-["103","155","1-0","1.5","♩","0","0","68","190","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","189","136","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","89","136","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","139","186","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","139","86","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","174","171","1500","0","true","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","174","101","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","104","171","1500","0","false","宋体","0"]
-["139","136","1-0","1.5","♪","0","0","104","101","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","358","220","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","258","220","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","308","270","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","308","170","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","343","255","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","343","185","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","273","185","1500","0","false","宋体","0"]
-["308","220","1-0","1.5","♬","0","0","273","255","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","193","259","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","93","259","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","143","309","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","143","209","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","178","224","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","178","294","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","108","224","1500","0","false","宋体","0"]
-["143","259","1-0","1.5","♭","0","0","108","294","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","257","101","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","157","101","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","207","151","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","207","51","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","242","136","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","242","66","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","172","66","1500","0","false","宋体","0"]
-["207","101","1-0","1.5","♪","0","0","172","136","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","459","52","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","359","52","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","409","102","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","409","2","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","444","87","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","444","17","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","374","87","1500","0","false","宋体","0"]
-["409","52","1-0","1.5","♫","0","0","374","17","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","272","218","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","172","218","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","222","268","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","222","168","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","257","253","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","257","183","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","187","183","1500","0","false","宋体","0"]
-["222","218","1-0","1.5","♩","0","0","187","253","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","196","144","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","296","144","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","246","194","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","246","94","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","281","179","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","281","109","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","211","109","1500","0","false","宋体","0"]
-["246","144","1-0","1.5","♪","0","0","211","179","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","204","117","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","104","117","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","154","167","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","154","67","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","189","152","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","189","82","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","119","152","1500","0","false","宋体","0"]
-["154","117","1-0","1.5","♭","0","0","119","82","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","146","207","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","46","207","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","96","257","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","96","157","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","131","242","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","131","172","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","61","172","1500","0","false","宋体","0"]
-["96","207","1-0","1.5","♫","0","0","61","242","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","280","189","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","180","189","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","230","239","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","230","139","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","265","224","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","195","224","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","265","154","1500","0","false","宋体","0"]
-["230","189","1-0","1.5","♪","0","0","195","154","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","417","90","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","317","90","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","367","140","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","367","40","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","402","125","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","402","55","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","332","55","1500","0","false","宋体","0"]
-["367","90","1-0","1.5","♬","0","0","332","125","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","373","215","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","273","215","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","323","265","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","323","165","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","358","250","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","358","180","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","288","180","1500","0","false","宋体","0"]
-["323","215","1-0","1.5","♭","0","0","288","250","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","290","269","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","190","269","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","240","319","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","240","219","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","275","304","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","205","304","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","275","234","1500","0","false","宋体","0"]
-["240","269","1-0","1.5","♪","0","0","205","234","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","198","145","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","98","145","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","148","195","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","148","95","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","183","180","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","183","110","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","113","110","1500","0","false","宋体","0"]
-["148","145","1-0","1.5","♫","0","0","113","180","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","161","236","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","61","236","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","111","286","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","111","186","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","146","271","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","146","201","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","76","271","1500","0","false","宋体","0"]
-["111","236","1-0","1.5","♩","0","0","76","201","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","301","59","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","201","59","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","251","109","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","251","9","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","286","94","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","286","24","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","216","24","1500","0","false","宋体","0"]
-["251","59","1-0","1.5","♪","0","0","216","94","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","348","228","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","248","228","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","298","278","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","298","178","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","333","263","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","333","193","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","263","263","1500","0","false","宋体","0"]
-["298","228","1-0","1.5","♭","0","0","263","193","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","419","120","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","319","120","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","369","170","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","369","70","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","404","155","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","404","85","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","334","85","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","334","155","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","419","120","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","319","120","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","369","170","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","369","70","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","404","155","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","404","85","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","334","85","1500","0","false","宋体","0"]
-["369","120","1-0","1.5","♬","0","0","334","155","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","185","221","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","85","221","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","135","271","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","135","171","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","170","256","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","100","256","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","170","186","1500","0","false","宋体","0"]
-["135","221","1-0","1.5","♪","0","0","100","186","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","336","106","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","236","106","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","286","156","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","286","56","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","251","141","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","321","141","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","251","71","1500","0","false","宋体","0"]
-["286","106","1-0","1.5","♩","0","0","321","71","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","384","239","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","284","239","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","334","289","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","334","189","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","369","204","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","299","204","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","369","274","1500","0","false","宋体","0"]
-["334","239","1-0","1.5","♭","0","0","299","274","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","202","110","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","102","110","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","152","160","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","152","60","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","187","145","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","117","145","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","187","75","1500","0","false","宋体","0"]
-["152","110","1-0","1.5","♬","0","0","117","75","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","271","257","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","171","257","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","221","307","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","221","207","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","256","292","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","256","222","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","186","292","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","186","222","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","380","191","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","280","191","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","330","241","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","330","141","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","365","226","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","365","156","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","295","156","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","295","226","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","237","134","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","137","134","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","187","184","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","187","84","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","222","169","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","222","99","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","152","99","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","152","169","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","286","272","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","186","272","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","236","322","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","236","222","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","271","307","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","271","237","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","201","237","1500","0","false","宋体","0"]
-["236","272","1-0","1.5","♪","0","0","201","307","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","327","117","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","227","117","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","277","167","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","277","67","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","312","152","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","312","82","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","242","82","1500","0","false","宋体","0"]
-["277","117","1-0","1.5","♫","0","0","242","152","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","271","257","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","171","257","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","221","307","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","221","207","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","256","292","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","256","222","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","186","292","1500","0","false","宋体","0"]
-["221","257","1-0","1.5","♫","0","0","186","222","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","380","191","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","280","191","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","330","241","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","330","141","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","365","226","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","365","156","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","295","156","1500","0","false","宋体","0"]
-["330","191","1-0","1.5","♪","0","0","295","226","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","237","134","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","137","134","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","187","184","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","187","84","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","222","169","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","222","99","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","152","99","1500","0","false","宋体","0"]
-["187","134","1-0","1.5","♬","0","0","152","169","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","196","267","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","96","267","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","146","317","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","146","217","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","181","302","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","181","232","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","111","232","1500","0","false","宋体","0"]
-["146","267","1-0","1.5","♪","0","0","111","302","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","295","232","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","195","232","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","245","282","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","245","182","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","280","267","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","280","197","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","210","267","1500","0","false","宋体","0"]
-["245","232","1-0","1.5","♬","0","0","210","197","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","378","170","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","278","170","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","328","120","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","328","220","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","363","205","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","363","135","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","293","135","1500","0","false","宋体","0"]
-["328","170","1-0","1.5","♩","0","0","293","205","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","373","146","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","373","46","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","423","96","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","323","96","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","408","131","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","408","61","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","338","131","1500","0","false","宋体","0"]
-["373","96","1-0","1.5","♫","0","0","338","61","1500","0","false","宋体","0"]
-["255","299","0-1","3","其れは(C'est)——","10","0","68","262","2000","0","true","黑体","0"]
-["252","299","0-1","3","其れは(C'est)——","10","0","65","262","2000","0","true","黑体","0"]
-["249","299","0-1","3","其れは(C'est)——","10","0","62","262","2000","0","true","黑体","0"]
-["246","299","0-1","3","其れは(C'est)——","10","0","59","262","2000","0","true","黑体","0"]
-["135","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","130","135","42","0","0","true","MS UI Gothic","0"]
-["404","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","50","404","42","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5","███████████████████████████","0","0","-8","0","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5"," ██████████████████████████","0","0","-8","0","0","0","false","MS UI Gothic","0"]
-["-8","350","1-1","4.5","███████████████████████████","0","0","-8","350","0","0","true","MS UI Gothic","0"]
-["-8","350","1-1","4.5"," ██████████████████████████","0","0","-8","350","0","0","false","MS UI Gothic","0"]
-["-4","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","0","0","0","true","MS UI Gothic","0"]
-["-4","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","5","0","0","false","MS UI Gothic","0"]
-["519","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","0","0","0","true","MS UI Gothic","0"]
-["519","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","5","0","0","false","MS UI Gothic","0"]
-["246","248","0.7-1","4.5","夜の窓辺に","0","0","203","248","800","0","true","黑体","0"]
-["305","216","0.7-1","3.4","微笑む月","0","0","249","216","500","0","true","黑体","0"]
-["313","58","1-1","6.1","●","0","0","313","58","500","0","true","黑体","0"]
-["307","48","1-1","6.1","●","0","0","307","48","500","0","false","黑体","0"]
-["207","77","0-1","3","★","10","0","207","77","500","0","false","黑体","0"]
-["451","129","0-1","3","★","45","0","451","129","500","0","false","黑体","0"]
-["267","139","0-1","3","★","45","0","267","139","500","0","false","黑体","0"]
-["165","135","0-1","3","★","60","0","165","135","500","0","false","黑体","0"]
-["77","107","0-1","3","★","70","0","77","107","500","0","false","黑体","0"]
-["477","100","0-1","3","★","70","0","477","100","500","0","false","黑体","0"]
-["344","176","0-1","3","★","20","0","344","176","500","0","false","黑体","0"]
-["101","216","0-1","3","★","20","0","101","216","500","0","false","黑体","0"]
-["141","73","0-1","3","★","10","0","141","73","500","0","false","黑体","0"]
-["207","77","1-0","3","★","10","0","207","77","500","0","false","黑体","0"]
-["451","129","1-0","3","★","45","0","451","129","500","0","false","黑体","0"]
-["267","139","1-0","3","★","45","0","267","139","500","0","false","黑体","0"]
-["165","135","1-0","3","★","60","0","165","135","500","0","false","黑体","0"]
-["77","107","1-0","3","★","70","0","77","107","500","0","false","黑体","0"]
-["477","100","1-0","3","★","70","0","477","100","500","0","false","黑体","0"]
-["344","176","1-0","3","★","20","0","344","176","500","0","false","黑体","0"]
-["101","216","1-0","3","★","20","0","101","216","500","0","false","黑体","0"]
-["141","73","1-0","3","★","10","0","141","73","500","0","false","黑体","0"]
-["197","145","0-1","3.5","秋","0","0","177","125","1500","0","false","MS UI Gothic","0"]
-["157","105","0-1","3.5","秋","0","0","177","125","1500","0","false","MS UI Gothic","0"]
-["197","145","0-1","3.5"," の","0","0","187","125","1500","0","false","MS UI Gothic","0"]
-["167","105","0-1","3.5"," の","0","0","187","125","1500","0","false","MS UI Gothic","0"]
-["211","145","0-1","3.5"," 追","0","0","191","125","1500","0","false","MS UI Gothic","0"]
-["171","105","0-1","3.5"," 追","0","0","191","125","1500","0","false","MS UI Gothic","0"]
-["220","145","0-1","3.5"," 想","0","0","200","125","1500","0","false","MS UI Gothic","0"]
-["180","105","0-1","3.5"," 想","0","0","200","125","1500","0","false","MS UI Gothic","0"]
-["366","124","0-1","4","◆","70","70","366","124","500","0","true","黑体","0"]
-["370","153","0-1","4","◆","109","100","370","153","500","0","true","黑体","0"]
-["358","130","0-1","4","◆","30","75","358","130","500","0","true","黑体","0"]
-["334","107","0-1","4","◆","330","75","334","107","500","0","true","黑体","0"]
-["354","140","0-1","4","◆","344","75","354","140","500","0","true","黑体","0"]
-["358","110","0-1","4","__","344","75","358","110","500","0","true","黑体","0"]
-/n/n/n/n/n/n/n/n/n/n/n綺 /n/n/n
-/n/n/n/n/n/n/n/n/n/n/n 綺/n/n/n
-/n/n/n/n/n/n/n/n/n/n 麗 /n/n/n/n
-/n/n/n/n/n/n/n/n/n/n 麗 /n/n/n/n
-/n/n/n/n/n/n/n/n/n な /n/n/n/n/n
-/n/n/n/n/n/n/n/n/n な /n/n/n/n/n
-/n/n/n/n/n/n/n/n 音/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n音 /n/n/n/n/n/n
-["258","297","1-1","3","█","0","0","258","297","500","0","false","宋体","0"]
-["258","270","1-1","3","█","0","0","258","270","500","0","false","宋体","0"]
-["258","244","1-1","3","█","0","0","258","244","500","0","false","宋体","0"]
-["258","217","1-1","3","█","0","0","258","217","500","0","false","宋体","0"]
-["258","297","1-1","3","綺","0","0","258","297","500","0","false","黑体","0"]
-["258","270","1-1","3","麗","0","0","258","270","500","0","false","黑体","0"]
-["258","244","1-1","3","な","0","0","258","244","500","0","false","黑体","0"]
-["258","217","1-1","3","音","0","0","258","217","500","0","false","黑体","0"]
-["207","91","1-1","3","詠","350","0","207","91","500","0","true","黑体","0"]
-["207","91","1-1","3"," う","350","0","207","91","500","0","true","黑体","0"]
-["210","91","1-1","3"," 少","15","0","210","91","500","0","true","黑体","0"]
-["210","91","1-1","3"," 女","15","0","210","91","500","0","true","黑体","0"]
-["210","91","1-1","3"," (Monica)","15","0","210","91","500","0","true","黑体","0"]
-["192","92","1-0","1.1","♪","0","0","192","92","500","0","false","宋体","0"]
-["227","72","1-0","1.1","♩","0","0","227","72","500","0","false","宋体","0"]
-["254","91","1-0","1.1","♬","0","0","254","91","500","0","false","宋体","0"]
-["163","173","0-1","4.5","蟲の羽音","0","0","163","173","500","0","true","黑体","0"]
-["120","344","1-1","4.5","█","350","45","120","344","500","0","false","黑体","0"]
-["61","362","1-1","4.5","█","340","30","61","362","500","0","false","黑体","0"]
-["53","351","1-1","4.5","█","330","40","53","351","500","0","false","黑体","0"]
-["38","337","1-1","4.5","█","315","45","38","337","500","0","false","黑体","0"]
-["23","323","1-1","4.5","█","310","50","23","323","500","0","false","黑体","0"]
-["13","315","1-1","4.5","█","305","55","13","315","500","0","false","黑体","0"]
-["3","307","1-1","4.5","█","305","58","3","307","500","0","false","黑体","0"]
-["0","303","1-1","4.5","█","305","63","0","303","500","0","false","黑体","0"]
-["0","308","1-1","4.5","█","308","63","0","308","500","0","false","黑体","0"]
-["22","326","1-1","4.5","█","312","60","22","326","500","0","false","黑体","0"]
-["40","344","1-1","4.5","█","318","55","40","344","500","0","false","黑体","0"]
-["58","359","1-1","4.5","█","340","50","58","359","500","0","false","黑体","0"]
-["132","353","1-1","4.5","█","0","0","132","353","500","0","true","黑体","0"]
-["143","323","1-1","4.5","█","10","30","143","323","500","0","false","黑体","0"]
-["154","302","1-1","4.5","█","14","30","154","302","500","0","false","黑体","0"]
-["167","282","1-1","4.5","█","22","35","167","282","500","0","false","黑体","0"]
-["179","267","1-1","4.5","█","30","35","179","267","500","0","false","黑体","0"]
-["197","252","1-1","4.5","█","35","50","197","252","500","0","false","黑体","0"]
-["214","242","1-1","4.5","█","40","60","214","242","500","0","false","黑体","0"]
-["231","233","1-1","4.5","█","48","70","231","233","500","0","false","黑体","0"]
-["250","224","1-1","4.5","█","48","83","250","224","500","0","false","黑体","0"]
-["82","354","1-1","4.5","█","0","20","82","354","500","0","false","黑体","0"]
-["78","333","1-1","4.5","█","350","20","78","333","500","0","false","黑体","0"]
-["72","311","1-1","4.5","█","345","23","72","311","500","0","false","黑体","0"]
-["58","296","1-1","4.5","█","325","30","58","296","500","0","false","黑体","0"]
-["44","281","1-1","4.5","█","315","40","44","281","500","0","false","黑体","0"]
-["28","266","1-1","4.5","█","310","50","28","266","500","0","false","黑体","0"]
-["9","252","1-1","4.5","█","305","60","9","252","500","0","false","黑体","0"]
-["0","244","1-1","4.5","█","305","70","0","244","500","0","false","黑体","0"]
-["0","244","1-1","4.5","█","293","70","0","244","500","0","false","黑体","0"]
-["22","253","1-1","4.5","█","293","70","22","253","500","0","false","黑体","0"]
-["46","264","1-1","4.5","█","302","65","46","264","500","0","false","黑体","0"]
-["64","278","1-1","4.5","█","310","58","64","278","500","0","false","黑体","0"]
-["83","296","1-1","4.5","█","322","52","83","296","500","0","false","黑体","0"]
-["96","314","1-1","4.5","█","340","48","96","314","500","0","false","黑体","0"]
-["107","338","1-1","4.5","█","355","48","107","338","500","0","false","黑体","0"]
-["110","363","1-1","4.5","█","0","48","110","363","500","0","false","黑体","0"]
-["254","227","1-1","4.5","█","73","82","254","227","500","0","false","黑体","0"]
-["227","236","1-1","4.5","█","65","78","227","236","500","0","false","黑体","0"]
-["206","246","1-1","4.5","█","57","74","206","246","500","0","false","黑体","0"]
-["183","260","1-1","4.5","█","45","70","183","260","500","0","false","黑体","0"]
-["168","275","1-1","4.5","█","40","64","168","275","500","0","false","黑体","0"]
-["148","297","1-1","4.5","█","28","60","148","297","500","0","false","黑体","0"]
-["134","324","1-1","4.5","█","20","55","134","324","500","0","false","黑体","0"]
-["124","353","1-1","4.5","█","10","55","124","353","500","0","false","黑体","0"]
-["177","288","1-1","4.5","__","88","0","177","288","500","0","false","黑体","0"]
-["177","264","1-1","4.5","_","90","0","177","264","500","0","false","黑体","0"]
-["180","246","1-1","4.5","_","95","0","180","246","500","0","true","黑体","0"]
-["184","226","1-1","4.5","_","98","0","184","226","500","0","false","黑体","0"]
-["190","208","1-1","4.5","_","104","0","190","208","500","0","false","黑体","0"]
-["159","308","1-1","4.5","▁","88","0","159","308","500","0","false","黑体","0"]
-["159","282","1-1","4.5","▁","90","0","159","282","500","0","false","黑体","0"]
-["160","252","1-1","4.5","▁","92","0","160","252","500","0","false","黑体","0"]
-["164","225","1-1","4.5","▁","94","10","164","225","500","0","false","黑体","0"]
-["170","203","1-1","4.5","▁","98","28","170","203","500","0","false","黑体","0"]
-["168","188","1-1","4.5","▁","102","0","168","188","500","0","false","黑体","0"]
-["145","141","1-1","4.5","●","22","60","145","141","500","0","false","宋体","0"]
-["147","151","1-1","4.5","●","21","60","147","151","500","0","false","宋体","0"]
-["284","264","0-0.7","1.5","●","0","0","284","264","500","0","false","黑体","0"]
-["286","266","0-1","1.5","●","0","0","286","266","500","0","false","黑体","0"]
-["80","216","0-0.7","1.5","●","0","0","80","216","500","0","false","黑体","0"]
-["84","219","0-1","1.5","●","0","0","84","219","500","0","false","黑体","0"]
-["354","212","0-0.7","1.5","●","0","0","354","212","500","0","false","黑体","0"]
-["358","216","0-1","1.5","●","0","0","358","216","500","0","false","黑体","0"]
-["200","66","0-0.7","1.5","●","0","0","200","66","500","0","false","黑体","0"]
-["204","70","0-1","1.5","●","0","0","204","70","500","0","false","黑体","0"]
-["200","122","0-0.7","1.5","●","0","0","200","122","500","0","true","黑体","0"]
-["203","126","0-1","1.5","●","0","0","203","126","500","0","false","黑体","0"]
-["53","110","0-0.7","1.5","●","0","0","53","110","500","0","false","黑体","0"]
-["57","116","0-1","1.5","●","0","0","57","116","500","0","false","黑体","0"]
-["386","326","0-0.7","1.5","●","0","0","386","326","500","0","false","黑体","0"]
-["390","328","1-1","1.5","●","0","0","390","328","500","0","false","黑体","0"]
-["284","264","0.7-0","1.5","●","0","0","284","264","500","0","false","黑体","0"]
-["286","266","1-0","1.5","●","0","0","286","266","500","0","false","黑体","0"]
-["80","216","0.7-0","1.5","●","0","0","80","216","500","0","false","黑体","0"]
-["84","219","1-0","1.5","●","0","0","84","219","500","0","false","黑体","0"]
-["354","212","0.7-0","1.5","●","0","0","354","212","500","0","false","黑体","0"]
-["358","216","1-0","1.5","●","0","0","358","216","500","0","false","黑体","0"]
-["200","66","0.7-0","1.5","●","0","0","200","66","500","0","false","黑体","0"]
-["204","70","1-0","1.5","●","0","0","204","70","500","0","false","黑体","0"]
-["200","122","0.7-0","1.5","●","0","0","200","122","500","0","true","黑体","0"]
-["203","126","1-0","1.5","●","0","0","203","126","500","0","false","黑体","0"]
-["53","110","0.7-0","1.5","●","0","0","53","110","500","0","false","黑体","0"]
-["57","116","1-0","1.5","●","0","0","57","116","500","0","false","黑体","0"]
-["386","326","0.7-0","1.5","●","0","0","386","326","500","0","false","黑体","0"]
-["390","328","1-0","1.5","●","0","0","390","328","500","0","false","黑体","0"]
-["345","76","1-1","4.5","◯","0","0","345","76","500","0","false","宋体","0"]
-["398","89","1-1","4.5","12","0","0","398","89","500","0","false","宋体","0"]
-["404","170","1-1","4.5","6","0","0","404","170","500","0","false","宋体","0"]
-["443","127","1-1","4.5","3","0","0","443","127","500","0","false","宋体","0"]
-["365","127","1-1","4.5","9","0","0","365","127","500","0","false","宋体","0"]
-["404","124","1-1","4.5","。","0","0","404","124","500","0","false","宋体","0"]
-["376","108","1-1","4.5","-","30","0","376","108","500","0","false","宋体","0"]
-["397","94","1-1","4.5","-","60","0","397","94","500","0","false","宋体","0"]
-["446","105","1-1","4.5","-","120","0","446","105","500","0","false","黑体","0"]
-["457","125","1-1","4.5","-","150","0","457","125","500","0","false","黑体","0"]
-["445","150","1-1","4.5","-","21","0","445","150","500","0","false","黑体","0"]
-["450","176","1-1","4.5","-","210","0","450","176","500","0","false","黑体","0"]
-["428","187","1-1","4.5","-","240","0","428","187","500","0","false","黑体","0"]
-["375","177","1-1","4.5","-","300","0","375","177","500","0","false","黑体","0"]
-["366","156","1-1","4.5","-","330","0","366","156","500","0","false","黑体","0"]
-["394","137","1-1","4.5","↓","0","0","394","137","500","0","true","黑体","0"]
-["417","118","1-0","1","↓","90","0","417","118","500","0","true","黑体","0"]
-["421","119","1-0","1","↓","100","0","421","119","500","0","true","黑体","0"]
-["424","120","1-0","1","↓","110","0","424","120","500","0","true","黑体","0"]
-["428","122","1-0","1","↓","120","0","428","122","500","0","true","黑体","0"]
-["432","124","1-0","1","↓","130","0","432","124","500","0","true","黑体","0"]
-["363","195","1-0","4.5","針","30","0","363","195","500","0","true","黑体","0"]
-["341","165","1-0","4.5","は","60","0","341","165","500","0","true","黑体","0"]
-["340","128","1-0","4.5","進","90","0","340","128","500","0","true","黑体","0"]
-["354","93","1-0","4.5","ん","120","0","354","93","500","0","true","黑体","0"]
-["387","73","1-0","4.5","だ","150","0","387","73","500","0","true","黑体","0"]
-["361","286","0-1","3","其れは(C'est)——","350","0","226","309","2000","0","true","黑体","0"]
-["361","283","0-1","3","其れは(C'est)——","350","0","226","306","2000","0","true","黑体","0"]
-["361","280","0-1","3","其れは(C'est)——","350","0","226","303","2000","0","true","黑体","0"]
-["361","277","0-1","3","其れは(C'est)——","350","0","226","300","2000","0","true","黑体","0"]
-["175","215","0-1","2","大地を包み","0","0","125","215","2000","0","true","黑体","0"]
-["223","245","0-1","2","微眠む雪","0","0","173","245","2000","0","true","黑体","0"]
-["226","245","0-1","2"," 雪","0","0","176","245","2000","0","true","黑体","0"]
-["125","215","1-0","2","大地を包み","0","0","75","215","2000","0","true","黑体","0"]
-["173","245","1-0","2","微眠む雪","0","0","123","245","2000","0","true","黑体","0"]
-["176","245","1-0","2"," 雪","0","0","126","245","2000","0","true","黑体","0"]
-["352","35","1-1","4.5","❄","10","0","335","185","4500","0","true","宋体","0"]
-["143","16","1-1","4.5","❄","340","0","231","307","4500","0","true","宋体","0"]
-["274","42","1-1","4.5","❅","340","0","91","318","4500","0","true","宋体","0"]
-["470","52","1-1","4.5","❅","5","0","423","314","4500","0","true","宋体","0"]
-["229","26","1-1","4.5","❅","355","0","252","316","4500","0","true","宋体","0"]
-["87","24","1-1","4.5","❆","340","10","191","285","4500","0","true","宋体","0"]
-["420","13","1-1","4.5","❆","0","10","402","292","4500","0","true","宋体","0"]
-["42","74","1-1","4.5","❄","0","10","130","325","4500","0","true","宋体","0"]
-["97","73","1-1","4.5","❅","30","10","235","303","4500","0","true","宋体","0"]
-["312","43","1-1","4.5","❄","30","0","328","240","4500","0","true","宋体","0"]
-["174","30","1-1","4.5","❄","30","0","157","239","4500","0","true","宋体","0"]
-["242","101","1-1","1.1","❄","0","0","242","131","1100","0","true","MS UI Gothic","0"]
-["252","101","1-1","1.1"," ❅","0","0","252","131","1100","0","true","MS UI Gothic","0"]
-["256","101","1-1","1.1"," ❆","0","0","256","131","1100","0","true","MS UI Gothic","0"]
-["265","101","1-1","1.1"," ❄","0","0","265","131","1100","0","true","MS UI Gothic","0"]
-["242","131","1-1","4.5","冬","0","0","242","131","500","0","true","MS UI Gothic","0"]
-["252","131","1-1","4.5"," の","0","0","252","131","500","0","true","MS UI Gothic","0"]
-["256","131","1-1","4.5"," 追","0","0","256","131","500","0","true","MS UI Gothic","0"]
-["265","131","1-1","4.5"," 想","0","0","265","131","500","0","true","MS UI Gothic","0"]
-["-20","45","1-1","4.5","♪","0","0","600","45","4000","0","true","宋体","0"]
-["53","43","0.1-0.1","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.2-0.2","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.3-0.3","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.4-0.4","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.5-0.5","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.6-0.6","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.7-0.7","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.8-0.8","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","0.9-0.9","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["53","43","1-1","3","綺","0","0","53","43","500","0","true","黑体","0"]
-["143","43","0.1-0.1","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.2-0.2","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.3-0.3","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.4-0.4","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.5-0.5","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.6-0.6","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.7-0.7","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.8-0.8","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","0.9-0.9","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["143","43","1-1","3","麗","0","0","143","43","500","0","true","黑体","0"]
-["233","43","0.1-0.1","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.2-0.2","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.3-0.3","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.4-0.4","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.5-0.5","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.6-0.6","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.7-0.7","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.8-0.8","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","0.9-0.9","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["233","43","1-1","3","だ","0","0","233","43","500","0","true","黑体","0"]
-["323","43","0.1-0.1","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.2-0.2","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.3-0.3","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.4-0.4","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.5-0.5","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.6-0.6","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.7-0.7","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.8-0.8","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","0.9-0.9","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["323","43","1-1","3","ね","0","0","323","43","500","0","true","黑体","0"]
-["540","300","1-1","4.5","♬","0","0","-145","300","4000","0","true","宋体","0"]
-["454","298","0.1-0.1","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.2-0.2","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.3-0.3","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.4-0.4","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.5-0.5","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.6-0.6","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.7-0.7","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.8-0.8","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","0.9-0.9","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["454","298","1-1","3","詩","0","0","454","298","500","0","true","黑体","0"]
-["364","298","0.1-0.1","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.2-0.2","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.3-0.3","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.4-0.4","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.5-0.5","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.6-0.6","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.7-0.7","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.8-0.8","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","0.9-0.9","3","う","0","0","364","298","500","0","true","黑体","0"]
-["364","298","1-1","3","う","0","0","364","298","500","0","true","黑体","0"]
-["274","298","0.1-0.1","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.2-0.2","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.3-0.3","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.4-0.4","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.5-0.5","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.6-0.6","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.7-0.7","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.8-0.8","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","0.9-0.9","3","少","0","0","274","298","500","0","true","黑体","0"]
-["274","298","1-1","3","少","0","0","274","298","500","0","true","黑体","0"]
-["184","298","0.1-0.1","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.2-0.2","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.3-0.3","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.4-0.4","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.5-0.5","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.6-0.6","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.7-0.7","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.8-0.8","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","0.9-0.9","3","女","0","0","184","298","500","0","true","黑体","0"]
-["184","298","1-1","3","女","0","0","184","298","500","0","true","黑体","0"]
-["343","130","1-1","0.6","時","0","0","343","130","500","0","false","黑体","1"]
-["343","130","1-1","1.2"," の","0","0","343","130","500","0","false","黑体","1"]
-["343","130","1-1","1.8"," 木","0","0","343","130","500","0","false","黑体","1"]
-["343","130","1-1","2.4"," 枯","0","0","343","130","500","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","220","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","220","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","220","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","220","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","225","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","225","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","225","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","225","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","230","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","230","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","230","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","230","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","235","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","235","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","235","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","235","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","240","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","240","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","240","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","240","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","245","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","245","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","245","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","245","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","250","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","250","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","250","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","250","2000","0","false","黑体","1"]
-["343","130","1-0","2","時","0","0","343","255","2000","0","false","黑体","1"]
-["343","130","1-0","2"," の","0","0","343","255","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 木","0","0","343","255","2000","0","false","黑体","1"]
-["343","130","1-0","2"," 枯","0","0","343","255","2000","0","false","黑体","1"]
-["145","76","1-1","4.5","◯","0","0","145","76","500","0","false","宋体","0"]
-["198","89","1-1","4.5","12","0","0","198","89","500","0","false","宋体","0"]
-["204","170","1-1","4.5","6","0","0","204","170","500","0","false","宋体","0"]
-["243","127","1-1","4.5","3","0","0","243","127","500","0","false","宋体","0"]
-["165","127","1-1","4.5","9","0","0","165","127","500","0","false","宋体","0"]
-["204","124","1-1","4.5","。","0","0","204","124","500","0","false","宋体","0"]
-["176","108","1-1","4.5","-","30","0","176","108","500","0","false","宋体","0"]
-["197","94","1-1","4.5","-","60","0","197","94","500","0","false","宋体","0"]
-["246","105","1-1","4.5","-","120","0","246","105","500","0","false","黑体","0"]
-["257","125","1-1","4.5","-","150","0","257","125","500","0","false","黑体","0"]
-["245","150","1-1","4.5","-","21","0","245","150","500","0","false","黑体","0"]
-["250","176","1-1","4.5","-","210","0","250","176","500","0","false","黑体","0"]
-["228","187","1-1","4.5","-","240","0","228","187","500","0","false","黑体","0"]
-["175","177","1-1","4.5","-","300","0","175","177","500","0","false","黑体","0"]
-["166","156","1-1","4.5","-","330","0","166","156","500","0","false","黑体","0"]
-["177","122","1-1","4.5","←","0","0","177","122","500","0","true","黑体","0"]
-["190","100","1-0","1","↑","0","0","190","100","500","0","true","黑体","0"]
-["198","97","1-0","1","↑","10","0","198","97","500","0","true","黑体","0"]
-["205","95","1-0","1","↑","20","0","205","95","500","0","true","黑体","0"]
-["213","95","1-0","1","↑","30","0","213","95","500","0","true","黑体","0"]
-["220","94","1-0","1","↑","40","0","220","94","500","0","true","黑体","0"]
-["126","105","1-0","4.5","針","300","0","126","105","500","0","true","黑体","0"]
-["155","70","1-0","4.5","は","330","0","155","70","500","0","true","黑体","0"]
-["199","50","1-0","4.5","進","0","0","199","50","500","0","true","黑体","0"]
-["246","60","1-0","4.5","ん","30","0","246","60","500","0","true","黑体","0"]
-["280","83","1-0","4.5","だ","60","0","280","83","500","0","true","黑体","0"]
-["62","333","0-1","2.2","景中是(C'est)——","0","0","62","333","500","0","true","黑体","0"]
-["173","359","0-1","4","夜晚的窗边","0","0","173","359","500","0","true","黑体","0"]
-["245","325","0-1","4.5","微笑的月亮","0","0","245","325","500","0","true","黑体","0"]
-["206","351","0-1","4.5","秋之追忆","0","0","206","351","500","0","true","黑体","0"]
-["85","340","0-1","4.5","美丽的音色","0","0","85","340","500","0","true","黑体","0"]
-["136","362","0-1","4.5"," 歌唱的少女(Monica)","0","0","136","362","500","0","true","黑体","0"]
-["219","340","0-1","4.5","昆虫的振翅","0","0","219","340","500","0","true","黑体","0"]
-["266","363","1-0","4.5","指针的前进 →","0","0","290","363","4500","0","true","黑体","0"]
-["333","342","0-1","3","景中是(C'est)——","0","0","333","342","500","0","true","黑体","0"]
-["145","360","0-1","2","包裹大地的","0","0","145","360","500","0","true","黑体","0"]
-["145","360","1-0","2.5","包裹大地的","0","0","145","360","500","0","true","黑体","0"]
-["145","360","0-1","2"," 洁白的雪花","0","0","145","360","500","0","true","黑体","0"]
-["145","360","1-0","2.5"," 洁白的雪花","0","0","145","360","500","0","true","黑体","0"]
-["211","338","0-1","2","冬之追忆","0","0","211","338","500","0","true","黑体","0"]
-["211","338","1-0","2.5","冬之追忆","0","0","211","338","500","0","true","黑体","0"]
-["76","343","0-1","4.5","美丽的音色","0","0","76","343","500","0","true","黑体","0"]
-["300","357","0-1","4.5","歌吟的少女(Monica)","0","0","300","357","500","0","true","黑体","0"]
-["175","336","1-0","4.5","时间的凋零…","0","0","175","386","4500","0","true","黑体","0"]
-["304","340","1-0","4.5","指针的前进 →","0","0","354","340","4500","0","true","黑体","0"]
-["318","228","1-1","4","綺麗だね","0","0","318","228","500","0","true","黑体","0"]
-["298","228","0-1","2","綺","0","0","318","228","2000","0","false","黑体","0"]
-["298","228","0-1","2"," 麗","0","0","318","228","2000","0","false","黑体","0"]
-["298","228","0-1","2"," だ","0","0","318","228","2000","0","false","黑体","0"]
-["298","228","0-1","2"," ね","0","0","318","228","2000","0","false","黑体","0"]
-["338","228","0-1","2","綺","0","0","318","228","2000","0","false","黑体","0"]
-["338","228","0-1","2"," 麗","0","0","318","228","2000","0","false","黑体","0"]
-["338","228","0-1","2"," だ","0","0","318","228","2000","0","false","黑体","0"]
-["338","228","0-1","2"," ね","0","0","318","228","2000","0","false","黑体","0"]
-["318","228","1-1","2.5","綺","0","0","318","228","2500","0","false","黑体","0"]
-["318","228","1-1","2.5"," 麗","0","0","318","228","2500","0","false","黑体","0"]
-["318","228","1-1","2.5"," だ","0","0","318","228","2500","0","false","黑体","0"]
-["318","228","1-1","2.5"," ね","0","0","318","228","2500","0","false","黑体","0"]
-["1","111","1-1","11","██████████/n██████████/n██████████","0","320","1","111","500","0","false","MS UI Gothic","0"]
-["1","111","1-1","11"," █████████/n █████████/n █████████","0","320","1","111","500","0","false","MS UI Gothic","0"]
-["1","121","1-1","11","██████████/n██████████/n","0","320","1","121","500","0","false","MS UI Gothic","0"]
-["1","121","1-1","11"," █████████/n █████████/n","0","320","1","121","500","0","false","MS UI Gothic","0"]
-["540","127","0-1","3","君","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," が","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," 生","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," き","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," た","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," 景","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3"," 色","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","8","君","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","7.5"," が","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","7"," 生","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","6.5"," き","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","6"," た","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","5.5"," 景","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","5"," 色","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/nず","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n っ","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n と","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n 忘","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n れ","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n な","0","310","8","127","3000","0","true","黑体","0"]
-["540","127","0-1","3","/n い","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","3","/nず","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","2.7","/n っ","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","2.4","/n と","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","2.1","/n 忘","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","1.8","/n れ","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","1.5","/n な","0","310","8","127","3000","0","true","黑体","0"]
-["8","127","1-1","1.2","/n い","0","310","8","127","3000","0","true","黑体","0"]
-["300","280","0-1","2","『 』","0","0","300","280","500","0","true","黑体","0"]
-["300","280","0-1","2"," 美","0","0","300","280","500","0","true","黑体","0"]
-["300","280","0-1","2"," し","0","0","300","280","500","0","true","黑体","0"]
-["300","280","0-1","2"," き","0","0","300","280","500","0","true","黑体","0"]
-["300","280","0-1","2"," も","0","0","300","280","500","0","true","黑体","0"]
-["300","280","0-1","2"," の","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2","『 』","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2"," 美","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2"," し","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2"," き","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2"," も","0","0","300","280","500","0","true","黑体","0"]
-["300","280","1-1","2"," の","0","0","300","280","500","0","true","黑体","0"]
-["93","118","0-1","2","集","0","0","253","236","2000","0","true","黑体","0"]
-["124","50","0-1","2"," め","0","0","253","236","2000","0","true","黑体","0"]
-["252","15","0-1","2"," る","0","0","253","236","2000","0","true","黑体","0"]
-["334","50","0-1","2"," 為","0","0","253","236","2000","0","true","黑体","0"]
-["399","115","0-1","2"," に","0","0","253","236","2000","0","true","黑体","0"]
-["253","236","1-0","3","集","0","0","253","236","2000","0","true","黑体","0"]
-["253","236","1-0","3"," め","0","0","253","236","2000","0","true","黑体","0"]
-["253","236","1-0","3"," る","0","0","253","236","2000","0","true","黑体","0"]
-["253","236","1-0","3"," 為","0","0","253","236","2000","0","true","黑体","0"]
-["253","236","1-0","3"," に","0","0","253","236","2000","0","true","黑体","0"]
-["200","130","1-1","1.1","生命(ひと)は過ぎて行く","0","0","200","130","500","0","true","黑体","0"]
-["600","187","1-0","3.5","➡","180","0","-100","187","3500","0","false","宋体","0"]
-["200","130","1-0","3.5","生命(ひと)は過ぎて行く","0","0","0","130","3500","0","true","黑体","0"]
-["190","120","1-1","4.5","█████████████████","0","0","190","100","1000","0","false","MS UI Gothic","0"]
-["190","120","1-1","4.5"," ████████████████","0","0","190","100","1000","0","false","MS UI Gothic","0"]
-["190","140","1-1","4.5","█████████████████","0","0","190","160","1000","0","false","MS UI Gothic","0"]
-["190","140","1-1","4.5"," ████████████████","0","0","190","160","1000","0","false","MS UI Gothic","0"]
-["362","340","0-1","4.5","真美呢","0","0","362","340","500","0","true","黑体","0"]
-["33","314","0-1","4.5","你生活过的景色","0","0","33","314","500","0","true","黑体","0"]
-["59","338","0-1","4.5","永远不忘","0","0","59","338","500","0","true","黑体","0"]
-["341","334","0-1","4.5","“美丽之物”","0","0","341","334","500","0","true","黑体","0"]
-["332","359","0-1","4.5","为了将它采集","0","0","332","359","500","0","true","黑体","0"]
-["233","337","0-1","1.1","生命(人)才在世上前行","0","0","233","337","500","0","true","黑体","0"]
-["233","337","1-0","3.5","生命(人)才在世上前行","0","0","33","337","3500","0","true","黑体","0"]
-["540","90","1-1","3","君","0","0","0","90","3000","0","false","黑体","0"]
-["560","70","1-1","3","君","0","0","-20","70","3000","0","false","黑体","0"]
-["580","50","1-1","3","君","0","0","-40","50","3000","0","false","黑体","0"]
-["600","30","1-1","3","君","0","0","-60","30","3000","0","false","黑体","0"]
-["540","150","1-1","3","が","0","0","0","150","3000","0","false","黑体","0"]
-["560","138","1-1","3","が","0","0","-20","138","3000","0","false","黑体","0"]
-["580","126","1-1","3","が","0","0","-40","126","3000","0","false","黑体","0"]
-["600","114","1-1","3","が","0","0","-60","114","3000","0","false","黑体","0"]
-["540","184","1-1","3","駈","0","0","0","184","3000","0","false","黑体","0"]
-["560","180","1-1","3","駈","0","0","-20","180","3000","0","false","黑体","0"]
-["580","176","1-1","3","駈","0","0","-40","176","3000","0","false","黑体","0"]
-["600","172","1-1","3","駈","0","0","-60","172","3000","0","false","黑体","0"]
-["540","240","1-1","3","け","0","0","0","240","3000","0","false","黑体","0"]
-["560","246","1-1","3","け","0","0","-20","246","3000","0","false","黑体","0"]
-["580","252","1-1","3","け","0","0","-40","252","3000","0","false","黑体","0"]
-["600","258","1-1","3","け","0","0","-60","258","3000","0","false","黑体","0"]
-["540","307","1-1","3","抜","0","0","0","307","3000","0","false","黑体","0"]
-["560","325","1-1","3","抜","0","0","-20","325","3000","0","false","黑体","0"]
-["580","345","1-1","3","抜","0","0","-40","345","3000","0","false","黑体","0"]
-["600","365","1-1","3","抜","0","0","-60","365","3000","0","false","黑体","0"]
-["540","270","1-1","3","け","0","0","0","270","3000","0","false","黑体","0"]
-["560","285","1-1","3","け","0","0","-20","285","3000","0","false","黑体","0"]
-["580","300","1-1","3","け","0","0","-40","300","3000","0","false","黑体","0"]
-["600","315","1-1","3","け","0","0","-60","315","3000","0","false","黑体","0"]
-["540","240","1-1","3","た","0","0","0","240","3000","0","false","黑体","0"]
-["560","246","1-1","3","た","0","0","-20","246","3000","0","false","黑体","0"]
-["580","252","1-1","3","た","0","0","-40","252","3000","0","false","黑体","0"]
-["600","258","1-1","3","た","0","0","-60","258","3000","0","false","黑体","0"]
-["540","184","1-1","3","昡","0","0","0","184","3000","0","false","黑体","0"]
-["560","180","1-1","3","昡","0","0","-20","180","3000","0","false","黑体","0"]
-["580","176","1-1","3","昡","0","0","-40","176","3000","0","false","黑体","0"]
-["600","172","1-1","3","昡","0","0","-60","172","3000","0","false","黑体","0"]
-["540","120","1-1","3","い","0","0","0","120","3000","0","false","黑体","0"]
-["560","104","1-1","3","い","0","0","-20","104","3000","0","false","黑体","0"]
-["580","88","1-1","3","い","0","0","-40","88","3000","0","false","黑体","0"]
-["600","72","1-1","3","い","0","0","-60","72","3000","0","false","黑体","0"]
-["540","213","1-1","3","季","0","0","0","213","3000","0","false","黑体","0"]
-["560","217","1-1","3","季","0","0","-20","217","3000","0","false","黑体","0"]
-["580","221","1-1","3","季","0","0","-40","221","3000","0","false","黑体","0"]
-["600","225","1-1","3","季","0","0","-60","225","3000","0","false","黑体","0"]
-["540","305","1-1","3","節","0","0","0","305","3000","0","false","黑体","0"]
-["560","323","1-1","3","節","0","0","-20","323","3000","0","false","黑体","0"]
-["580","343","1-1","3","節","0","0","-40","343","3000","0","false","黑体","0"]
-["600","363","1-1","3","節","0","0","-60","363","3000","0","false","黑体","0"]
-["171","287","0-1","3","病","0","0","171","287","500","0","true","黑体","0"]
-["171","287","0-1","3"," の","0","0","171","287","500","0","true","黑体","0"]
-["171","287","0-1","3"," 焔","0","0","171","287","500","0","false","黑体","0"]
-["171","287","0-1","3"," に","0","0","171","287","500","0","false","黑体","0"]
-["171","287","0-1","3"," 灼","0","0","171","287","500","0","false","黑体","0"]
-["171","287","0-1","3"," か","0","0","171","287","500","0","false","黑体","0"]
-["171","287","0-1","3"," れ","0","0","171","287","500","0","false","黑体","0"]
-["171","287","0-1","3"," な","0","0","171","287","500","0","false","黑体","0"]
-["171","287","1-1","3.6","病","0","0","171","287","500","0","true","黑体","0"]
-["171","287","1-1","3"," の","0","0","171","287","500","0","true","黑体","0"]
-["171","287","1-1","2.4"," 焔","0","0","171","287","500","0","false","黑体","0"]
-["171","287","1-1","1.6"," に","0","0","171","287","500","0","false","黑体","0"]
-["171","287","1-1","1.2"," 灼","0","0","171","287","500","0","false","黑体","0"]
-["171","287","1-1","0.6"," か","0","0","171","287","500","0","false","黑体","0"]
-["171","287","1-1","0.2"," れ","0","0","171","287","500","0","false","黑体","0"]
-["73","286","1-0","0.5","♠","30","40","73","286","500","0","false","宋体","0"]
-["173","286","1-0","0.5","♠","40","50","173","286","500","0","false","宋体","0"]
-["341","282","1-0","0.5","♠","25","50","341","282","500","0","false","宋体","0"]
-["306","289","1-0","0.5","♠","25","50","306","289","500","0","false","宋体","0"]
-["503","285","1-0","0.5","♠","25","70","503","285","500","0","false","宋体","0"]
-["446","274","1-0","0.5","♠","350","70","446","274","500","0","false","宋体","0"]
-["422","292","1-0","0.5","♠","350","70","422","292","500","0","false","宋体","0"]
-["368","297","1-0","0.5","♠","350","50","368","297","500","0","false","宋体","0"]
-["372","271","1-0","0.5","♠","10","70","372","271","500","0","false","宋体","0"]
-["235","295","1-0","0.5","♠","346","60","235","295","500","0","false","宋体","0"]
-["192","299","1-0","0.5","♠","346","40","192","299","500","0","false","宋体","0"]
-["181","277","1-0","0.5","♠","0","60","181","277","500","0","false","宋体","0"]
-["129","289","1-0","0.5","♠","340","48","129","289","500","0","false","宋体","0"]
-["101","290","1-0","0.5","♠","340","48","101","290","500","0","false","宋体","0"]
-["58","309","1-0","0.5","♠","320","40","58","309","500","0","false","宋体","0"]
-["2","299","1-0","0.5","♠","340","30","2","299","500","0","false","宋体","0"]
-["41","287","1-0","0.5","♠","330","40","41","287","500","0","false","宋体","0"]
-["34","314","1-0","0.5","♠","330","40","34","314","500","0","false","宋体","0"]
-["39","344","1-0","0.5","♠","330","40","39","344","500","0","false","宋体","0"]
-["57","335","1-0","0.5","♠","340","40","57","335","500","0","false","宋体","0"]
-["84","331","1-0","0.5","♠","345","40","84","331","500","0","false","宋体","0"]
-["126","332","1-0","0.5","♠","345","45","126","332","500","0","false","宋体","0"]
-["149","335","1-0","0.5","♠","345","45","149","335","500","0","false","宋体","0"]
-["180","331","1-0","0.5","♠","345","60","180","331","500","0","false","宋体","0"]
-["213","330","1-0","0.5","♠","10","60","213","330","500","0","false","宋体","0"]
-["221","339","1-0","0.5","♠","355","60","221","339","500","0","false","宋体","0"]
-["245","333","1-0","0.5","♠","355","60","245","333","500","0","false","宋体","0"]
-["294","336","1-0","0.5","♠","10","60","294","336","500","0","false","宋体","0"]
-["324","337","1-0","0.5","♠","27","70","324","337","500","0","false","宋体","0"]
-["353","334","1-0","0.5","♠","27","70","353","334","500","0","false","宋体","0"]
-["370","333","1-0","0.5","♠","20","70","370","333","500","0","false","宋体","0"]
-["393","329","1-0","0.5","♠","20","70","393","329","500","0","false","宋体","0"]
-["393","344","1-0","0.5","♠","350","70","393","344","500","0","false","宋体","0"]
-["441","340","1-0","0.5","♠","350","70","441","340","500","0","false","宋体","0"]
-["460","325","1-0","0.5","♠","355","70","460","325","500","0","false","宋体","0"]
-["484","327","1-0","0.5","♠","17","70","484","327","500","0","false","宋体","0"]
-["0","317","1-0","0.5","♠","350","20","0","317","500","0","false","宋体","0"]
-["52","309","1-0","0.5","♠","5","40","52","309","500","0","false","宋体","0"]
-["97","303","1-0","0.5","♠","20","60","97","303","500","0","false","宋体","0"]
-["116","313","1-0","0.5","♠","20","45","116","313","500","0","false","宋体","0"]
-["133","324","1-0","0.5","♠","0","45","133","324","500","0","false","宋体","0"]
-["176","306","1-0","0.5","♠","15","50","176","306","500","0","false","宋体","0"]
-["209","316","1-0","0.5","♠","15","50","209","316","500","0","false","宋体","0"]
-["237","312","1-0","0.5","♠","3","60","237","312","500","0","false","宋体","0"]
-["509","304","1-0","0.5","♠","23","70","509","304","500","0","false","宋体","0"]
-["472","299","1-0","0.5","♠","16","74","472","299","500","0","false","宋体","0"]
-["432","298","1-0","0.5","♠","350","74","432","298","500","0","false","宋体","0"]
-["400","305","1-0","0.5","♠","345","74","400","305","500","0","false","宋体","0"]
-["343","308","1-0","0.5","♠","345","60","343","308","500","0","false","宋体","0"]
-["376","309","1-0","0.5","♠","0","60","376","309","500","0","false","宋体","0"]
-["315","308","1-0","0.5","♠","0","60","315","308","500","0","false","宋体","0"]
-["265","300","1-0","0.5","♠","10","60","265","300","500","0","false","宋体","0"]
-["288","286","1-0","0.5","♠","10","60","288","286","500","0","false","宋体","0"]
-["502","354","1-0","0.5","♠","25","75","502","354","500","0","false","宋体","0"]
-["482","352","1-0","0.5","♠","10","75","482","352","500","0","false","宋体","0"]
-["465","356","1-0","0.5","♠","345","75","465","356","500","0","false","宋体","0"]
-["397","350","1-0","0.5","♠","345","75","397","350","500","0","false","宋体","0"]
-["421","350","1-0","0.5","♠","345","75","421","350","500","0","false","宋体","0"]
-["376","357","1-0","0.5","♠","345","60","376","357","500","0","false","宋体","0"]
-["323","354","1-0","0.5","♠","18","60","323","354","500","0","false","宋体","0"]
-["293","338","1-0","0.5","♠","2","60","293","338","500","0","false","宋体","0"]
-["276","348","1-0","0.5","♠","2","60","276","348","500","0","false","宋体","0"]
-["254","362","1-0","0.5","♠","350","60","254","362","500","0","false","宋体","0"]
-["209","357","1-0","0.5","♠","14","60","209","357","500","0","false","宋体","0"]
-["176","347","1-0","0.5","♠","6","60","176","347","500","0","false","宋体","0"]
-["150","360","1-0","0.5","♠","350","60","150","360","500","0","false","宋体","0"]
-["24","352","1-0","0.5","♠","350","30","24","352","500","0","false","宋体","0"]
-["55","352","1-0","0.5","♠","4","45","55","352","500","0","false","宋体","0"]
-["74","356","1-0","0.5","♠","6","50","74","356","500","0","false","宋体","0"]
-["112","355","1-0","0.5","♠","20","50","112","355","500","0","false","宋体","0"]
-["485","279","1-0","0.5","♠","17","70","485","279","500","0","false","宋体","0"]
-["453","291","1-0","0.5","♠","0","70","453","291","500","0","false","宋体","0"]
-["418","292","1-0","0.5","♠","350","70","418","292","500","0","false","宋体","0"]
-["382","303","1-0","0.5","♠","330","60","382","303","500","0","false","宋体","0"]
-["363","320","1-0","0.5","♠","330","60","363","320","500","0","false","宋体","0"]
-["318","318","1-0","0.5","♠","330","50","318","318","500","0","false","宋体","0"]
-["296","300","1-0","0.5","♠","354","50","296","300","500","0","false","宋体","0"]
-["247","318","1-0","0.5","♠","330","50","247","318","500","0","false","宋体","0"]
-["213","325","1-0","0.5","♠","318","50","213","325","500","0","false","宋体","0"]
-["198","305","1-0","0.5","♠","350","50","198","305","500","0","false","宋体","0"]
-["179","299","1-0","0.5","♠","355","45","179","299","500","0","false","宋体","0"]
-["163","297","1-0","0.5","♠","355","55","163","297","500","0","false","宋体","0"]
-["110","311","1-0","0.5","♠","330","48","110","311","500","0","false","宋体","0"]
-["74","326","1-0","0.5","♠","320","48","74","326","500","0","false","宋体","0"]
-["21","320","1-0","0.5","♠","320","30","21","320","500","0","false","宋体","0"]
-["0","334","1-0","0.5","♠","330","30","0","334","500","0","false","宋体","0"]
-["0","298","1-0","0.5","♠","350","30","0","298","500","0","false","宋体","0"]
-["31","342","1-0","0.5","♠","350","30","31","342","500","0","false","宋体","0"]
-["70","351","1-0","0.5","♠","330","30","70","351","500","0","false","宋体","0"]
-["104","351","1-0","0.5","♠","330","45","104","351","500","0","false","宋体","0"]
-["147","351","1-0","0.5","♠","330","50","147","351","500","0","false","宋体","0"]
-["178","346","1-0","0.5","♠","350","50","178","346","500","0","false","宋体","0"]
-["194","342","1-0","0.5","♠","5","50","194","342","500","0","false","宋体","0"]
-["214","339","1-0","0.5","♠","5","50","214","339","500","0","false","宋体","0"]
-["253","348","1-0","0.5","♠","340","60","253","348","500","0","false","宋体","0"]
-["274","347","1-0","0.5","♠","340","60","274","347","500","0","false","宋体","0"]
-["320","336","1-0","0.5","♠","0","60","320","336","500","0","false","宋体","0"]
-["366","344","1-0","0.5","♠","350","60","366","344","500","0","false","宋体","0"]
-["393","349","1-0","0.5","♠","345","60","393","349","500","0","false","宋体","0"]
-["424","344","1-0","0.5","♠","340","60","424","344","500","0","false","宋体","0"]
-["447","342","1-0","0.5","♠","346","60","447","342","500","0","false","宋体","0"]
-["484","339","1-0","0.5","♠","12","70","484","339","500","0","false","宋体","0"]
-["73","286","1-0","0.5","♠","30","40","73","286","500","0","false","宋体","0"]
-["173","286","1-0","0.5","♠","40","50","173","286","500","0","false","宋体","0"]
-["341","282","1-0","0.5","♠","25","50","341","282","500","0","false","宋体","0"]
-["306","289","1-0","0.5","♠","25","50","306","289","500","0","false","宋体","0"]
-["503","285","1-0","0.5","♠","25","70","503","285","500","0","false","宋体","0"]
-["446","274","1-0","0.5","♠","350","70","446","274","500","0","false","宋体","0"]
-["422","292","1-0","0.5","♠","350","70","422","292","500","0","false","宋体","0"]
-["368","297","1-0","0.5","♠","350","50","368","297","500","0","false","宋体","0"]
-["372","271","1-0","0.5","♠","10","70","372","271","500","0","false","宋体","0"]
-["235","295","1-0","0.5","♠","346","60","235","295","500","0","false","宋体","0"]
-["192","299","1-0","0.5","♠","346","40","192","299","500","0","false","宋体","0"]
-["181","277","1-0","0.5","♠","0","60","181","277","500","0","false","宋体","0"]
-["129","289","1-0","0.5","♠","340","48","129","289","500","0","false","宋体","0"]
-["101","290","1-0","0.5","♠","340","48","101","290","500","0","false","宋体","0"]
-["58","309","1-0","0.5","♠","320","40","58","309","500","0","false","宋体","0"]
-["2","299","1-0","0.5","♠","340","30","2","299","500","0","false","宋体","0"]
-["41","287","1-0","0.5","♠","330","40","41","287","500","0","false","宋体","0"]
-["34","314","1-0","0.5","♠","330","40","34","314","500","0","false","宋体","0"]
-["39","344","1-0","0.5","♠","330","40","39","344","500","0","false","宋体","0"]
-["57","335","1-0","0.5","♠","340","40","57","335","500","0","false","宋体","0"]
-["84","331","1-0","0.5","♠","345","40","84","331","500","0","false","宋体","0"]
-["126","332","1-0","0.5","♠","345","45","126","332","500","0","false","宋体","0"]
-["149","335","1-0","0.5","♠","345","45","149","335","500","0","false","宋体","0"]
-["180","331","1-0","0.5","♠","345","60","180","331","500","0","false","宋体","0"]
-["213","330","1-0","0.5","♠","10","60","213","330","500","0","false","宋体","0"]
-["221","339","1-0","0.5","♠","355","60","221","339","500","0","false","宋体","0"]
-["245","333","1-0","0.5","♠","355","60","245","333","500","0","false","宋体","0"]
-["294","336","1-0","0.5","♠","10","60","294","336","500","0","false","宋体","0"]
-["324","337","1-0","0.5","♠","27","70","324","337","500","0","false","宋体","0"]
-["353","334","1-0","0.5","♠","27","70","353","334","500","0","false","宋体","0"]
-["370","333","1-0","0.5","♠","20","70","370","333","500","0","false","宋体","0"]
-["393","329","1-0","0.5","♠","20","70","393","329","500","0","false","宋体","0"]
-["393","344","1-0","0.5","♠","350","70","393","344","500","0","false","宋体","0"]
-["441","340","1-0","0.5","♠","350","70","441","340","500","0","false","宋体","0"]
-["460","325","1-0","0.5","♠","355","70","460","325","500","0","false","宋体","0"]
-["484","327","1-0","0.5","♠","17","70","484","327","500","0","false","宋体","0"]
-["0","317","1-0","0.5","♠","350","20","0","317","500","0","false","宋体","0"]
-["52","309","1-0","0.5","♠","5","40","52","309","500","0","false","宋体","0"]
-["97","303","1-0","0.5","♠","20","60","97","303","500","0","false","宋体","0"]
-["116","313","1-0","0.5","♠","20","45","116","313","500","0","false","宋体","0"]
-["133","324","1-0","0.5","♠","0","45","133","324","500","0","false","宋体","0"]
-["176","306","1-0","0.5","♠","15","50","176","306","500","0","false","宋体","0"]
-["209","316","1-0","0.5","♠","15","50","209","316","500","0","false","宋体","0"]
-["237","312","1-0","0.5","♠","3","60","237","312","500","0","false","宋体","0"]
-["509","304","1-0","0.5","♠","23","70","509","304","500","0","false","宋体","0"]
-["472","299","1-0","0.5","♠","16","74","472","299","500","0","false","宋体","0"]
-["432","298","1-0","0.5","♠","350","74","432","298","500","0","false","宋体","0"]
-["400","305","1-0","0.5","♠","345","74","400","305","500","0","false","宋体","0"]
-["343","308","1-0","0.5","♠","345","60","343","308","500","0","false","宋体","0"]
-["376","309","1-0","0.5","♠","0","60","376","309","500","0","false","宋体","0"]
-["315","308","1-0","0.5","♠","0","60","315","308","500","0","false","宋体","0"]
-["265","300","1-0","0.5","♠","10","60","265","300","500","0","false","宋体","0"]
-["288","286","1-0","0.5","♠","10","60","288","286","500","0","false","宋体","0"]
-["502","354","1-0","0.5","♠","25","75","502","354","500","0","false","宋体","0"]
-["482","352","1-0","0.5","♠","10","75","482","352","500","0","false","宋体","0"]
-["465","356","1-0","0.5","♠","345","75","465","356","500","0","false","宋体","0"]
-["397","350","1-0","0.5","♠","345","75","397","350","500","0","false","宋体","0"]
-["421","350","1-0","0.5","♠","345","75","421","350","500","0","false","宋体","0"]
-["376","357","1-0","0.5","♠","345","60","376","357","500","0","false","宋体","0"]
-["323","354","1-0","0.5","♠","18","60","323","354","500","0","false","宋体","0"]
-["293","338","1-0","0.5","♠","2","60","293","338","500","0","false","宋体","0"]
-["276","348","1-0","0.5","♠","2","60","276","348","500","0","false","宋体","0"]
-["254","362","1-0","0.5","♠","350","60","254","362","500","0","false","宋体","0"]
-["209","357","1-0","0.5","♠","14","60","209","357","500","0","false","宋体","0"]
-["176","347","1-0","0.5","♠","6","60","176","347","500","0","false","宋体","0"]
-["150","360","1-0","0.5","♠","350","60","150","360","500","0","false","宋体","0"]
-["24","352","1-0","0.5","♠","350","30","24","352","500","0","false","宋体","0"]
-["55","352","1-0","0.5","♠","4","45","55","352","500","0","false","宋体","0"]
-["74","356","1-0","0.5","♠","6","50","74","356","500","0","false","宋体","0"]
-["112","355","1-0","0.5","♠","20","50","112","355","500","0","false","宋体","0"]
-["485","279","1-0","0.5","♠","17","70","485","279","500","0","false","宋体","0"]
-["453","291","1-0","0.5","♠","0","70","453","291","500","0","false","宋体","0"]
-["418","292","1-0","0.5","♠","350","70","418","292","500","0","false","宋体","0"]
-["382","303","1-0","0.5","♠","330","60","382","303","500","0","false","宋体","0"]
-["363","320","1-0","0.5","♠","330","60","363","320","500","0","false","宋体","0"]
-["318","318","1-0","0.5","♠","330","50","318","318","500","0","false","宋体","0"]
-["296","300","1-0","0.5","♠","354","50","296","300","500","0","false","宋体","0"]
-["247","318","1-0","0.5","♠","330","50","247","318","500","0","false","宋体","0"]
-["213","325","1-0","0.5","♠","318","50","213","325","500","0","false","宋体","0"]
-["198","305","1-0","0.5","♠","350","50","198","305","500","0","false","宋体","0"]
-["179","299","1-0","0.5","♠","355","45","179","299","500","0","false","宋体","0"]
-["163","297","1-0","0.5","♠","355","55","163","297","500","0","false","宋体","0"]
-["110","311","1-0","0.5","♠","330","48","110","311","500","0","false","宋体","0"]
-["74","326","1-0","0.5","♠","320","48","74","326","500","0","false","宋体","0"]
-["21","320","1-0","0.5","♠","320","30","21","320","500","0","false","宋体","0"]
-["0","334","1-0","0.5","♠","330","30","0","334","500","0","false","宋体","0"]
-["0","298","1-0","0.5","♠","350","30","0","298","500","0","false","宋体","0"]
-["31","342","1-0","0.5","♠","350","30","31","342","500","0","false","宋体","0"]
-["70","351","1-0","0.5","♠","330","30","70","351","500","0","false","宋体","0"]
-["104","351","1-0","0.5","♠","330","45","104","351","500","0","false","宋体","0"]
-["147","351","1-0","0.5","♠","330","50","147","351","500","0","false","宋体","0"]
-["178","346","1-0","0.5","♠","350","50","178","346","500","0","false","宋体","0"]
-["194","342","1-0","0.5","♠","5","50","194","342","500","0","false","宋体","0"]
-["214","339","1-0","0.5","♠","5","50","214","339","500","0","false","宋体","0"]
-["253","348","1-0","0.5","♠","340","60","253","348","500","0","false","宋体","0"]
-["274","347","1-0","0.5","♠","340","60","274","347","500","0","false","宋体","0"]
-["320","336","1-0","0.5","♠","0","60","320","336","500","0","false","宋体","0"]
-["366","344","1-0","0.5","♠","350","60","366","344","500","0","false","宋体","0"]
-["393","349","1-0","0.5","♠","345","60","393","349","500","0","false","宋体","0"]
-["424","344","1-0","0.5","♠","340","60","424","344","500","0","false","宋体","0"]
-["447","342","1-0","0.5","♠","346","60","447","342","500","0","false","宋体","0"]
-["484","339","1-0","0.5","♠","12","70","484","339","500","0","false","宋体","0"]
-["73","286","1-0","0.5","♠","30","40","73","286","500","0","false","宋体","0"]
-["173","286","1-0","0.5","♠","40","50","173","286","500","0","false","宋体","0"]
-["341","282","1-0","0.5","♠","25","50","341","282","500","0","false","宋体","0"]
-["306","289","1-0","0.5","♠","25","50","306","289","500","0","false","宋体","0"]
-["503","285","1-0","0.5","♠","25","70","503","285","500","0","false","宋体","0"]
-["446","274","1-0","0.5","♠","350","70","446","274","500","0","false","宋体","0"]
-["422","292","1-0","0.5","♠","350","70","422","292","500","0","false","宋体","0"]
-["368","297","1-0","0.5","♠","350","50","368","297","500","0","false","宋体","0"]
-["372","271","1-0","0.5","♠","10","70","372","271","500","0","false","宋体","0"]
-["235","295","1-0","0.5","♠","346","60","235","295","500","0","false","宋体","0"]
-["192","299","1-0","0.5","♠","346","40","192","299","500","0","false","宋体","0"]
-["181","277","1-0","0.5","♠","0","60","181","277","500","0","false","宋体","0"]
-["129","289","1-0","0.5","♠","340","48","129","289","500","0","false","宋体","0"]
-["101","290","1-0","0.5","♠","340","48","101","290","500","0","false","宋体","0"]
-["58","309","1-0","0.5","♠","320","40","58","309","500","0","false","宋体","0"]
-["2","299","1-0","0.5","♠","340","30","2","299","500","0","false","宋体","0"]
-["41","287","1-0","0.5","♠","330","40","41","287","500","0","false","宋体","0"]
-["34","314","1-0","0.5","♠","330","40","34","314","500","0","false","宋体","0"]
-["39","344","1-0","0.5","♠","330","40","39","344","500","0","false","宋体","0"]
-["57","335","1-0","0.5","♠","340","40","57","335","500","0","false","宋体","0"]
-["84","331","1-0","0.5","♠","345","40","84","331","500","0","false","宋体","0"]
-["126","332","1-0","0.5","♠","345","45","126","332","500","0","false","宋体","0"]
-["149","335","1-0","0.5","♠","345","45","149","335","500","0","false","宋体","0"]
-["180","331","1-0","0.5","♠","345","60","180","331","500","0","false","宋体","0"]
-["213","330","1-0","0.5","♠","10","60","213","330","500","0","false","宋体","0"]
-["221","339","1-0","0.5","♠","355","60","221","339","500","0","false","宋体","0"]
-["245","333","1-0","0.5","♠","355","60","245","333","500","0","false","宋体","0"]
-["294","336","1-0","0.5","♠","10","60","294","336","500","0","false","宋体","0"]
-["324","337","1-0","0.5","♠","27","70","324","337","500","0","false","宋体","0"]
-["353","334","1-0","0.5","♠","27","70","353","334","500","0","false","宋体","0"]
-["370","333","1-0","0.5","♠","20","70","370","333","500","0","false","宋体","0"]
-["393","329","1-0","0.5","♠","20","70","393","329","500","0","false","宋体","0"]
-["393","344","1-0","0.5","♠","350","70","393","344","500","0","false","宋体","0"]
-["441","340","1-0","0.5","♠","350","70","441","340","500","0","false","宋体","0"]
-["460","325","1-0","0.5","♠","355","70","460","325","500","0","false","宋体","0"]
-["484","327","1-0","0.5","♠","17","70","484","327","500","0","false","宋体","0"]
-["0","317","1-0","0.5","♠","350","20","0","317","500","0","false","宋体","0"]
-["52","309","1-0","0.5","♠","5","40","52","309","500","0","false","宋体","0"]
-["97","303","1-0","0.5","♠","20","60","97","303","500","0","false","宋体","0"]
-["116","313","1-0","0.5","♠","20","45","116","313","500","0","false","宋体","0"]
-["133","324","1-0","0.5","♠","0","45","133","324","500","0","false","宋体","0"]
-["176","306","1-0","0.5","♠","15","50","176","306","500","0","false","宋体","0"]
-["209","316","1-0","0.5","♠","15","50","209","316","500","0","false","宋体","0"]
-["237","312","1-0","0.5","♠","3","60","237","312","500","0","false","宋体","0"]
-["509","304","1-0","0.5","♠","23","70","509","304","500","0","false","宋体","0"]
-["472","299","1-0","0.5","♠","16","74","472","299","500","0","false","宋体","0"]
-["432","298","1-0","0.5","♠","350","74","432","298","500","0","false","宋体","0"]
-["400","305","1-0","0.5","♠","345","74","400","305","500","0","false","宋体","0"]
-["343","308","1-0","0.5","♠","345","60","343","308","500","0","false","宋体","0"]
-["376","309","1-0","0.5","♠","0","60","376","309","500","0","false","宋体","0"]
-["315","308","1-0","0.5","♠","0","60","315","308","500","0","false","宋体","0"]
-["265","300","1-0","0.5","♠","10","60","265","300","500","0","false","宋体","0"]
-["288","286","1-0","0.5","♠","10","60","288","286","500","0","false","宋体","0"]
-["502","354","1-0","0.5","♠","25","75","502","354","500","0","false","宋体","0"]
-["482","352","1-0","0.5","♠","10","75","482","352","500","0","false","宋体","0"]
-["465","356","1-0","0.5","♠","345","75","465","356","500","0","false","宋体","0"]
-["397","350","1-0","0.5","♠","345","75","397","350","500","0","false","宋体","0"]
-["421","350","1-0","0.5","♠","345","75","421","350","500","0","false","宋体","0"]
-["376","357","1-0","0.5","♠","345","60","376","357","500","0","false","宋体","0"]
-["323","354","1-0","0.5","♠","18","60","323","354","500","0","false","宋体","0"]
-["293","338","1-0","0.5","♠","2","60","293","338","500","0","false","宋体","0"]
-["276","348","1-0","0.5","♠","2","60","276","348","500","0","false","宋体","0"]
-["254","362","1-0","0.5","♠","350","60","254","362","500","0","false","宋体","0"]
-["209","357","1-0","0.5","♠","14","60","209","357","500","0","false","宋体","0"]
-["176","347","1-0","0.5","♠","6","60","176","347","500","0","false","宋体","0"]
-["150","360","1-0","0.5","♠","350","60","150","360","500","0","false","宋体","0"]
-["24","352","1-0","0.5","♠","350","30","24","352","500","0","false","宋体","0"]
-["55","352","1-0","0.5","♠","4","45","55","352","500","0","false","宋体","0"]
-["74","356","1-0","0.5","♠","6","50","74","356","500","0","false","宋体","0"]
-["112","355","1-0","0.5","♠","20","50","112","355","500","0","false","宋体","0"]
-["485","279","1-0","0.5","♠","17","70","485","279","500","0","false","宋体","0"]
-["453","291","1-0","0.5","♠","0","70","453","291","500","0","false","宋体","0"]
-["418","292","1-0","0.5","♠","350","70","418","292","500","0","false","宋体","0"]
-["382","303","1-0","0.5","♠","330","60","382","303","500","0","false","宋体","0"]
-["363","320","1-0","0.5","♠","330","60","363","320","500","0","false","宋体","0"]
-["318","318","1-0","0.5","♠","330","50","318","318","500","0","false","宋体","0"]
-["296","300","1-0","0.5","♠","354","50","296","300","500","0","false","宋体","0"]
-["247","318","1-0","0.5","♠","330","50","247","318","500","0","false","宋体","0"]
-["213","325","1-0","0.5","♠","318","50","213","325","500","0","false","宋体","0"]
-["198","305","1-0","0.5","♠","350","50","198","305","500","0","false","宋体","0"]
-["179","299","1-0","0.5","♠","355","45","179","299","500","0","false","宋体","0"]
-["163","297","1-0","0.5","♠","355","55","163","297","500","0","false","宋体","0"]
-["110","311","1-0","0.5","♠","330","48","110","311","500","0","false","宋体","0"]
-["74","326","1-0","0.5","♠","320","48","74","326","500","0","false","宋体","0"]
-["21","320","1-0","0.5","♠","320","30","21","320","500","0","false","宋体","0"]
-["0","334","1-0","0.5","♠","330","30","0","334","500","0","false","宋体","0"]
-["0","298","1-0","0.5","♠","350","30","0","298","500","0","false","宋体","0"]
-["31","342","1-0","0.5","♠","350","30","31","342","500","0","false","宋体","0"]
-["70","351","1-0","0.5","♠","330","30","70","351","500","0","false","宋体","0"]
-["104","351","1-0","0.5","♠","330","45","104","351","500","0","false","宋体","0"]
-["147","351","1-0","0.5","♠","330","50","147","351","500","0","false","宋体","0"]
-["178","346","1-0","0.5","♠","350","50","178","346","500","0","false","宋体","0"]
-["194","342","1-0","0.5","♠","5","50","194","342","500","0","false","宋体","0"]
-["214","339","1-0","0.5","♠","5","50","214","339","500","0","false","宋体","0"]
-["253","348","1-0","0.5","♠","340","60","253","348","500","0","false","宋体","0"]
-["274","347","1-0","0.5","♠","340","60","274","347","500","0","false","宋体","0"]
-["320","336","1-0","0.5","♠","0","60","320","336","500","0","false","宋体","0"]
-["366","344","1-0","0.5","♠","350","60","366","344","500","0","false","宋体","0"]
-["393","349","1-0","0.5","♠","345","60","393","349","500","0","false","宋体","0"]
-["424","344","1-0","0.5","♠","340","60","424","344","500","0","false","宋体","0"]
-["447","342","1-0","0.5","♠","346","60","447","342","500","0","false","宋体","0"]
-["484","339","1-0","0.5","♠","12","70","484","339","500","0","false","宋体","0"]
-["73","286","1-0","0.5","♠","30","40","73","286","500","0","false","宋体","0"]
-["173","286","1-0","0.5","♠","40","50","173","286","500","0","false","宋体","0"]
-["341","282","1-0","0.5","♠","25","50","341","282","500","0","false","宋体","0"]
-["306","289","1-0","0.5","♠","25","50","306","289","500","0","false","宋体","0"]
-["503","285","1-0","0.5","♠","25","70","503","285","500","0","false","宋体","0"]
-["446","274","1-0","0.5","♠","350","70","446","274","500","0","false","宋体","0"]
-["422","292","1-0","0.5","♠","350","70","422","292","500","0","false","宋体","0"]
-["368","297","1-0","0.5","♠","350","50","368","297","500","0","false","宋体","0"]
-["372","271","1-0","0.5","♠","10","70","372","271","500","0","false","宋体","0"]
-["235","295","1-0","0.5","♠","346","60","235","295","500","0","false","宋体","0"]
-["192","299","1-0","0.5","♠","346","40","192","299","500","0","false","宋体","0"]
-["181","277","1-0","0.5","♠","0","60","181","277","500","0","false","宋体","0"]
-["129","289","1-0","0.5","♠","340","48","129","289","500","0","false","宋体","0"]
-["101","290","1-0","0.5","♠","340","48","101","290","500","0","false","宋体","0"]
-["58","309","1-0","0.5","♠","320","40","58","309","500","0","false","宋体","0"]
-["2","299","1-0","0.5","♠","340","30","2","299","500","0","false","宋体","0"]
-["41","287","1-0","0.5","♠","330","40","41","287","500","0","false","宋体","0"]
-["34","314","1-0","0.5","♠","330","40","34","314","500","0","false","宋体","0"]
-["39","344","1-0","0.5","♠","330","40","39","344","500","0","false","宋体","0"]
-["57","335","1-0","0.5","♠","340","40","57","335","500","0","false","宋体","0"]
-["84","331","1-0","0.5","♠","345","40","84","331","500","0","false","宋体","0"]
-["126","332","1-0","0.5","♠","345","45","126","332","500","0","false","宋体","0"]
-["149","335","1-0","0.5","♠","345","45","149","335","500","0","false","宋体","0"]
-["180","331","1-0","0.5","♠","345","60","180","331","500","0","false","宋体","0"]
-["213","330","1-0","0.5","♠","10","60","213","330","500","0","false","宋体","0"]
-["221","339","1-0","0.5","♠","355","60","221","339","500","0","false","宋体","0"]
-["245","333","1-0","0.5","♠","355","60","245","333","500","0","false","宋体","0"]
-["294","336","1-0","0.5","♠","10","60","294","336","500","0","false","宋体","0"]
-["324","337","1-0","0.5","♠","27","70","324","337","500","0","false","宋体","0"]
-["353","334","1-0","0.5","♠","27","70","353","334","500","0","false","宋体","0"]
-["370","333","1-0","0.5","♠","20","70","370","333","500","0","false","宋体","0"]
-["393","329","1-0","0.5","♠","20","70","393","329","500","0","false","宋体","0"]
-["393","344","1-0","0.5","♠","350","70","393","344","500","0","false","宋体","0"]
-["441","340","1-0","0.5","♠","350","70","441","340","500","0","false","宋体","0"]
-["460","325","1-0","0.5","♠","355","70","460","325","500","0","false","宋体","0"]
-["484","327","1-0","0.5","♠","17","70","484","327","500","0","false","宋体","0"]
-["0","317","1-0","0.5","♠","350","20","0","317","500","0","false","宋体","0"]
-["52","309","1-0","0.5","♠","5","40","52","309","500","0","false","宋体","0"]
-["97","303","1-0","0.5","♠","20","60","97","303","500","0","false","宋体","0"]
-["116","313","1-0","0.5","♠","20","45","116","313","500","0","false","宋体","0"]
-["133","324","1-0","0.5","♠","0","45","133","324","500","0","false","宋体","0"]
-["176","306","1-0","0.5","♠","15","50","176","306","500","0","false","宋体","0"]
-["209","316","1-0","0.5","♠","15","50","209","316","500","0","false","宋体","0"]
-["237","312","1-0","0.5","♠","3","60","237","312","500","0","false","宋体","0"]
-["509","304","1-0","0.5","♠","23","70","509","304","500","0","false","宋体","0"]
-["472","299","1-0","0.5","♠","16","74","472","299","500","0","false","宋体","0"]
-["432","298","1-0","0.5","♠","350","74","432","298","500","0","false","宋体","0"]
-["400","305","1-0","0.5","♠","345","74","400","305","500","0","false","宋体","0"]
-["343","308","1-0","0.5","♠","345","60","343","308","500","0","false","宋体","0"]
-["376","309","1-0","0.5","♠","0","60","376","309","500","0","false","宋体","0"]
-["315","308","1-0","0.5","♠","0","60","315","308","500","0","false","宋体","0"]
-["265","300","1-0","0.5","♠","10","60","265","300","500","0","false","宋体","0"]
-["288","286","1-0","0.5","♠","10","60","288","286","500","0","false","宋体","0"]
-["502","354","1-0","0.5","♠","25","75","502","354","500","0","false","宋体","0"]
-["482","352","1-0","0.5","♠","10","75","482","352","500","0","false","宋体","0"]
-["465","356","1-0","0.5","♠","345","75","465","356","500","0","false","宋体","0"]
-["397","350","1-0","0.5","♠","345","75","397","350","500","0","false","宋体","0"]
-["421","350","1-0","0.5","♠","345","75","421","350","500","0","false","宋体","0"]
-["376","357","1-0","0.5","♠","345","60","376","357","500","0","false","宋体","0"]
-["323","354","1-0","0.5","♠","18","60","323","354","500","0","false","宋体","0"]
-["293","338","1-0","0.5","♠","2","60","293","338","500","0","false","宋体","0"]
-["276","348","1-0","0.5","♠","2","60","276","348","500","0","false","宋体","0"]
-["254","362","1-0","0.5","♠","350","60","254","362","500","0","false","宋体","0"]
-["209","357","1-0","0.5","♠","14","60","209","357","500","0","false","宋体","0"]
-["176","347","1-0","0.5","♠","6","60","176","347","500","0","false","宋体","0"]
-["150","360","1-0","0.5","♠","350","60","150","360","500","0","false","宋体","0"]
-["24","352","1-0","0.5","♠","350","30","24","352","500","0","false","宋体","0"]
-["55","352","1-0","0.5","♠","4","45","55","352","500","0","false","宋体","0"]
-["74","356","1-0","0.5","♠","6","50","74","356","500","0","false","宋体","0"]
-["112","355","1-0","0.5","♠","20","50","112","355","500","0","false","宋体","0"]
-["485","279","1-0","0.5","♠","17","70","485","279","500","0","false","宋体","0"]
-["453","291","1-0","0.5","♠","0","70","453","291","500","0","false","宋体","0"]
-["418","292","1-0","0.5","♠","350","70","418","292","500","0","false","宋体","0"]
-["382","303","1-0","0.5","♠","330","60","382","303","500","0","false","宋体","0"]
-["363","320","1-0","0.5","♠","330","60","363","320","500","0","false","宋体","0"]
-["318","318","1-0","0.5","♠","330","50","318","318","500","0","false","宋体","0"]
-["296","300","1-0","0.5","♠","354","50","296","300","500","0","false","宋体","0"]
-["247","318","1-0","0.5","♠","330","50","247","318","500","0","false","宋体","0"]
-["213","325","1-0","0.5","♠","318","50","213","325","500","0","false","宋体","0"]
-["198","305","1-0","0.5","♠","350","50","198","305","500","0","false","宋体","0"]
-["179","299","1-0","0.5","♠","355","45","179","299","500","0","false","宋体","0"]
-["163","297","1-0","0.5","♠","355","55","163","297","500","0","false","宋体","0"]
-["110","311","1-0","0.5","♠","330","48","110","311","500","0","false","宋体","0"]
-["74","326","1-0","0.5","♠","320","48","74","326","500","0","false","宋体","0"]
-["21","320","1-0","0.5","♠","320","30","21","320","500","0","false","宋体","0"]
-["0","334","1-0","0.5","♠","330","30","0","334","500","0","false","宋体","0"]
-["0","298","1-0","0.5","♠","350","30","0","298","500","0","false","宋体","0"]
-["31","342","1-0","0.5","♠","350","30","31","342","500","0","false","宋体","0"]
-["70","351","1-0","0.5","♠","330","30","70","351","500","0","false","宋体","0"]
-["104","351","1-0","0.5","♠","330","45","104","351","500","0","false","宋体","0"]
-["147","351","1-0","0.5","♠","330","50","147","351","500","0","false","宋体","0"]
-["178","346","1-0","0.5","♠","350","50","178","346","500","0","false","宋体","0"]
-["194","342","1-0","0.5","♠","5","50","194","342","500","0","false","宋体","0"]
-["214","339","1-0","0.5","♠","5","50","214","339","500","0","false","宋体","0"]
-["253","348","1-0","0.5","♠","340","60","253","348","500","0","false","宋体","0"]
-["274","347","1-0","0.5","♠","340","60","274","347","500","0","false","宋体","0"]
-["320","336","1-0","0.5","♠","0","60","320","336","500","0","false","宋体","0"]
-["366","344","1-0","0.5","♠","350","60","366","344","500","0","false","宋体","0"]
-["393","349","1-0","0.5","♠","345","60","393","349","500","0","false","宋体","0"]
-["424","344","1-0","0.5","♠","340","60","424","344","500","0","false","宋体","0"]
-["447","342","1-0","0.5","♠","346","60","447","342","500","0","false","宋体","0"]
-["484","339","1-0","0.5","♠","12","70","484","339","500","0","false","宋体","0"]
-["73","286","1-0","0.5","♠","30","40","73","286","500","0","false","宋体","0"]
-["173","286","1-0","0.5","♠","40","50","173","286","500","0","false","宋体","0"]
-["341","282","1-0","0.5","♠","25","50","341","282","500","0","false","宋体","0"]
-["306","289","1-0","0.5","♠","25","50","306","289","500","0","false","宋体","0"]
-["503","285","1-0","0.5","♠","25","70","503","285","500","0","false","宋体","0"]
-["446","274","1-0","0.5","♠","350","70","446","274","500","0","false","宋体","0"]
-["422","292","1-0","0.5","♠","350","70","422","292","500","0","false","宋体","0"]
-["368","297","1-0","0.5","♠","350","50","368","297","500","0","false","宋体","0"]
-["372","271","1-0","0.5","♠","10","70","372","271","500","0","false","宋体","0"]
-["235","295","1-0","0.5","♠","346","60","235","295","500","0","false","宋体","0"]
-["192","299","1-0","0.5","♠","346","40","192","299","500","0","false","宋体","0"]
-["181","277","1-0","0.5","♠","0","60","181","277","500","0","false","宋体","0"]
-["129","289","1-0","0.5","♠","340","48","129","289","500","0","false","宋体","0"]
-["101","290","1-0","0.5","♠","340","48","101","290","500","0","false","宋体","0"]
-["58","309","1-0","0.5","♠","320","40","58","309","500","0","false","宋体","0"]
-["2","299","1-0","0.5","♠","340","30","2","299","500","0","false","宋体","0"]
-["41","287","1-0","0.5","♠","330","40","41","287","500","0","false","宋体","0"]
-["34","314","1-0","0.5","♠","330","40","34","314","500","0","false","宋体","0"]
-["39","344","1-0","0.5","♠","330","40","39","344","500","0","false","宋体","0"]
-["57","335","1-0","0.5","♠","340","40","57","335","500","0","false","宋体","0"]
-["84","331","1-0","0.5","♠","345","40","84","331","500","0","false","宋体","0"]
-["126","332","1-0","0.5","♠","345","45","126","332","500","0","false","宋体","0"]
-["149","335","1-0","0.5","♠","345","45","149","335","500","0","false","宋体","0"]
-["180","331","1-0","0.5","♠","345","60","180","331","500","0","false","宋体","0"]
-["213","330","1-0","0.5","♠","10","60","213","330","500","0","false","宋体","0"]
-["221","339","1-0","0.5","♠","355","60","221","339","500","0","false","宋体","0"]
-["245","333","1-0","0.5","♠","355","60","245","333","500","0","false","宋体","0"]
-["294","336","1-0","0.5","♠","10","60","294","336","500","0","false","宋体","0"]
-["324","337","1-0","0.5","♠","27","70","324","337","500","0","false","宋体","0"]
-["353","334","1-0","0.5","♠","27","70","353","334","500","0","false","宋体","0"]
-["370","333","1-0","0.5","♠","20","70","370","333","500","0","false","宋体","0"]
-["393","329","1-0","0.5","♠","20","70","393","329","500","0","false","宋体","0"]
-["393","344","1-0","0.5","♠","350","70","393","344","500","0","false","宋体","0"]
-["441","340","1-0","0.5","♠","350","70","441","340","500","0","false","宋体","0"]
-["460","325","1-0","0.5","♠","355","70","460","325","500","0","false","宋体","0"]
-["484","327","1-0","0.5","♠","17","70","484","327","500","0","false","宋体","0"]
-["146","8","0-1","3","你所跑过的短暂的季节(Saison)","0","0","146","8","500","0","true","黑体","0"]
-["146","8","1-1","4","你所跑过的短暂的季节(Saison)","0","0","146","8","500","0","true","黑体","0"]
-["158","30","0-1","3","尽管满是疾病之火的灼烧","0","0","158","30","500","0","true","黑体","0"]
-["158","30","1-1","2","尽管满是疾病之火的灼烧","0","0","158","30","500","0","true","黑体","0"]
-["154","65","0-1","2.5","「嗚呼…綺麗だね」","0","0","154","65","500","0","false","黑体","0"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","184","95","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","184","35","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","124","95","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","124","35","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","189","100","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","189","30","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","119","100","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","119","30","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","194","105","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","194","25","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","114","105","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","114","25","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","199","110","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","199","20","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","109","110","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","109","20","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","204","115","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","204","15","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","104","115","2000","0","false","黑体","1"]
-["154","65","1-0","2","「嗚呼…綺麗だね」","0","0","104","15","2000","0","false","黑体","1"]
-["199","215","1-0","4.5","笑","50","0","177","187","1000","0","true","黑体","0"]
-["235","233","1-0","4.5","っ","30","0","199","215","1000","0","true","黑体","0"]
-["260","233","1-0","4.5","て","10","0","235","233","1000","0","true","黑体","0"]
-["260","233","1-0","4.5","逝","350","0","280","233","1000","0","true","黑体","0"]
-["280","237","1-0","4.5","っ","330","0","315","227","1000","0","true","黑体","0"]
-["315","227","1-0","4.5","た","310","0","347","205","1000","0","true","黑体","0"]
-["158","91","1-1","4.5","█","0","0","158","91","500","0","false","宋体","0"]
-["158","91","1-1","4.5","君","0","0","158","91","500","0","false","黑体","0"]
-["194","100","1-1","4.5","の","0","0","194","100","500","0","false","黑体","0"]
-["194","120","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","80","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","120","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","75","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","125","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","70","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","130","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","65","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","135","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","60","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","0"]
-["194","140","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","55","0-1","1.5"," 面影 (Image)","0","0","194","100","1500","0","false","黑体","1"]
-["194","100","1-1","2"," 面影 (Image)","0","0","194","100","2000","0","false","黑体","1"]
-["245","178","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["245","138","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["205","178","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["205","138","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["255","188","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["255","128","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["195","188","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["195","128","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["265","198","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["265","118","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["185","198","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["185","118","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["275","208","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["275","108","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["175","208","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["175","108","0-1","2","忘","0","0","225","158","2000","0","false","黑体","1"]
-["225","158","1-1","2.4","忘","0","0","225","158","2000","0","false","黑体","0"]
-["275","108","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["275","208","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["175","108","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["175","208","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["265","118","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["265","198","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["185","118","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["185","198","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["255","128","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["255","188","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["195","128","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["195","188","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["245","138","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["245","178","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["205","138","0-1","2"," れ","0","0","225","158","2000","0","false","黑体","1"]
-["205","178","0-1","2"," れ","0","0","225","158","2000","300","false","黑体","1"]
-["225","158","1-1","1.7"," れ","0","0","225","158","2000","0","false","黑体","0"]
-["275","108","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["275","208","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["175","108","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["175","208","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["265","118","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["265","198","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["185","118","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["185","198","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["255","128","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["255","188","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["195","128","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["195","188","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["245","138","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["245","178","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["205","138","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["205","178","0-1","2"," な","0","0","225","158","2000","0","false","黑体","1"]
-["225","158","1-1","1.1"," な","0","0","225","158","2000","0","false","黑体","0"]
-["275","108","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["275","208","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["175","108","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["175","208","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["265","118","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["265","198","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["185","118","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["185","198","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["255","128","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["255","188","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["195","128","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["195","188","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["245","138","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["245","178","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["205","138","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["205","178","0-1","2"," い","0","0","225","158","2000","0","false","黑体","1"]
-["225","158","1-1","0.8"," い","0","0","225","158","2000","0","false","黑体","1"]
-["275","108","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["275","208","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["175","108","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["175","208","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["265","118","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["265","198","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["185","118","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["185","198","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["255","128","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["255","188","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["195","128","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["195","188","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["245","138","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["245","178","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["205","138","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["205","178","0-1","2"," よ","0","0","225","158","2000","0","false","黑体","1"]
-["196","8","0-1","2","“啊…真美呢”","0","0","196","8","500","0","false","黑体","0"]
-["196","8","1-0","2.5","“啊…真美呢”","0","0","196","8","500","0","false","黑体","0"]
-["188","31","0-1","1.5","微笑着离开了世界","0","0","188","31","500","0","false","黑体","0"]
-["188","31","1-0","3","微笑着离开了世界","0","0","188","31","500","0","false","黑体","0"]
-["207","7","0-1","4.5","你的面容(Image)","0","0","207","7","500","0","false","黑体","0"]
-["263","35","0-1","4.5","永远不忘","0","0","263","35","500","0","false","黑体","0"]
-["66","370","1-1","4.5","♪","0","0","66","-35","2000","0","false","MS UI Gothic","0"]
-["66","370","0.8-0.8","4.5","♪","0","0","66","-35","2000","100","false","MS UI Gothic","0"]
-["66","370","0.6-0.6","4.5","♪","0","0","66","-35","2000","200","false","MS UI Gothic","0"]
-["66","370","0.4-0.4","4.5","♪","0","0","66","-35","2000","300","false","MS UI Gothic","0"]
-["156","370","1-1","4.5","♬","0","0","156","-35","2000","0","false","MS UI Gothic","0"]
-["156","370","0.8-0.8","4.5","♬","0","0","156","-35","2000","100","false","MS UI Gothic","0"]
-["156","370","0.6-0.6","4.5","♬","0","0","156","-35","2000","200","false","MS UI Gothic","0"]
-["156","370","0.4-0.4","4.5","♬","0","0","156","-35","2000","300","false","MS UI Gothic","0"]
-["246","370","1-1","4.5","♩","0","0","246","-35","2000","0","false","MS UI Gothic","0"]
-["246","370","0.8-0.8","4.5","♩","0","0","246","-35","2000","100","false","MS UI Gothic","0"]
-["246","370","0.6-0.6","4.5","♩","0","0","246","-35","2000","200","false","MS UI Gothic","0"]
-["246","370","0.4-0.4","4.5","♩","0","0","246","-35","2000","300","false","MS UI Gothic","0"]
-["336","370","1-1","4.5","♫","0","0","336","-35","2000","0","false","MS UI Gothic","0"]
-["336","370","0.8-0.8","4.5","♫","0","0","336","-35","2000","100","false","MS UI Gothic","0"]
-["336","370","0.6-0.6","4.5","♫","0","0","336","-35","2000","200","false","MS UI Gothic","0"]
-["336","370","0.4-0.4","4.5","♫","0","0","336","-35","2000","300","false","MS UI Gothic","0"]
-["426","370","1-1","4.5","♭","0","0","426","-35","2000","0","false","MS UI Gothic","0"]
-["426","370","0.8-0.8","4.5","♭","0","0","426","-35","2000","100","false","MS UI Gothic","0"]
-["426","370","0.6-0.6","4.5","♭","0","0","426","-35","2000","200","false","MS UI Gothic","0"]
-["426","370","0.4-0.4","4.5","♭","0","0","426","-35","2000","300","false","MS UI Gothic","0"]
-["336","370","1-1","4.5","♪","0","0","336","-35","2000","0","false","MS UI Gothic","0"]
-["336","370","0.8-0.8","4.5","♪","0","0","336","-35","2000","100","false","MS UI Gothic","0"]
-["336","370","0.6-0.6","4.5","♪","0","0","336","-35","2000","200","false","MS UI Gothic","0"]
-["336","370","0.4-0.4","4.5","♪","0","0","336","-35","2000","300","false","MS UI Gothic","0"]
-["426","370","1-1","4.5","♭","0","0","426","-35","2000","0","false","MS UI Gothic","0"]
-["426","370","0.8-0.8","4.5","♭","0","0","426","-35","2000","100","false","MS UI Gothic","0"]
-["426","370","0.6-0.6","4.5","♭","0","0","426","-35","2000","200","false","MS UI Gothic","0"]
-["426","370","0.4-0.4","4.5","♭","0","0","426","-35","2000","300","false","MS UI Gothic","0"]
-["259","370","1-1","4.5","♬","0","0","259","-35","2000","0","false","MS UI Gothic","0"]
-["259","370","0.8-0.8","4.5","♬","0","0","259","-35","2000","100","false","MS UI Gothic","0"]
-["259","370","0.6-0.6","4.5","♬","0","0","259","-35","2000","200","false","MS UI Gothic","0"]
-["259","370","0.4-0.4","4.5","♬","0","0","259","-35","2000","300","false","MS UI Gothic","0"]
-["172","370","1-1","4.5","♩","0","0","172","-35","2000","0","false","MS UI Gothic","0"]
-["172","370","0.8-0.8","4.5","♩","0","0","172","-35","2000","100","false","MS UI Gothic","0"]
-["172","370","0.6-0.6","4.5","♩","0","0","172","-35","2000","200","false","MS UI Gothic","0"]
-["172","370","0.4-0.4","4.5","♩","0","0","172","-35","2000","300","false","MS UI Gothic","0"]
-["92","370","1-1","4.5","♫","0","0","92","-35","2000","0","false","MS UI Gothic","0"]
-["92","370","0.8-0.8","4.5","♫","0","0","92","-35","2000","100","false","MS UI Gothic","0"]
-["92","370","0.6-0.6","4.5","♫","0","0","92","-35","2000","200","false","MS UI Gothic","0"]
-["92","370","0.4-0.4","4.5","♫","0","0","92","-35","2000","300","false","MS UI Gothic","0"]
-["153","370","1-1","4.5","♭","0","0","153","-35","2000","0","false","MS UI Gothic","0"]
-["153","370","0.8-0.8","4.5","♭","0","0","153","-35","2000","100","false","MS UI Gothic","0"]
-["153","370","0.6-0.6","4.5","♭","0","0","153","-35","2000","200","false","MS UI Gothic","0"]
-["153","370","0.4-0.4","4.5","♭","0","0","153","-35","2000","300","false","MS UI Gothic","0"]
-["228","370","1-1","4.5","♪","0","0","228","-35","2000","0","false","MS UI Gothic","0"]
-["228","370","0.8-0.8","4.5","♪","0","0","228","-35","2000","100","false","MS UI Gothic","0"]
-["228","370","0.6-0.6","4.5","♪","0","0","228","-35","2000","200","false","MS UI Gothic","0"]
-["228","370","0.4-0.4","4.5","♪","0","0","228","-35","2000","300","false","MS UI Gothic","0"]
-["306","370","1-1","4.5","♬","0","0","306","-35","2000","0","false","MS UI Gothic","0"]
-["306","370","0.8-0.8","4.5","♬","0","0","306","-35","2000","100","false","MS UI Gothic","0"]
-["306","370","0.6-0.6","4.5","♬","0","0","306","-35","2000","200","false","MS UI Gothic","0"]
-["306","370","0.4-0.4","4.5","♬","0","0","306","-35","2000","300","false","MS UI Gothic","0"]
-["385","370","1-1","4.5","♩","0","0","385","-35","2000","0","false","MS UI Gothic","0"]
-["385","370","0.8-0.8","4.5","♩","0","0","385","-35","2000","100","false","MS UI Gothic","0"]
-["385","370","0.6-0.6","4.5","♩","0","0","385","-35","2000","200","false","MS UI Gothic","0"]
-["385","370","0.4-0.4","4.5","♩","0","0","385","-35","2000","300","false","MS UI Gothic","0"]
-["306","370","1-1","4.5","♭","0","0","306","-35","2000","0","false","MS UI Gothic","0"]
-["306","370","0.8-0.8","4.5","♭","0","0","306","-35","2000","100","false","MS UI Gothic","0"]
-["306","370","0.6-0.6","4.5","♭","0","0","306","-35","2000","200","false","MS UI Gothic","0"]
-["306","370","0.4-0.4","4.5","♭","0","0","306","-35","2000","300","false","MS UI Gothic","0"]
-["385","370","1-1","4.5","♩","0","0","385","-35","2000","0","false","MS UI Gothic","0"]
-["385","370","0.8-0.8","4.5","♩","0","0","385","-35","2000","100","false","MS UI Gothic","0"]
-["385","370","0.6-0.6","4.5","♩","0","0","385","-35","2000","200","false","MS UI Gothic","0"]
-["385","370","0.4-0.4","4.5","♩","0","0","385","-35","2000","300","false","MS UI Gothic","0"]
-["306","370","1-1","4.5","♭","0","0","306","-35","2000","0","false","MS UI Gothic","0"]
-["306","370","0.8-0.8","4.5","♭","0","0","306","-35","2000","100","false","MS UI Gothic","0"]
-["306","370","0.6-0.6","4.5","♭","0","0","306","-35","2000","200","false","MS UI Gothic","0"]
-["306","370","0.4-0.4","4.5","♭","0","0","306","-35","2000","300","false","MS UI Gothic","0"]
-["220","370","1-1","4.5","♫","0","0","220","-35","2000","0","false","MS UI Gothic","0"]
-["220","370","0.8-0.8","4.5","♫","0","0","220","-35","2000","100","false","MS UI Gothic","0"]
-["220","370","0.6-0.6","4.5","♫","0","0","220","-35","2000","200","false","MS UI Gothic","0"]
-["220","370","0.4-0.4","4.5","♫","0","0","220","-35","2000","300","false","MS UI Gothic","0"]
-["133","370","1-1","4.5","♪","0","0","133","-35","2000","0","false","MS UI Gothic","0"]
-["133","370","0.8-0.8","4.5","♪","0","0","133","-35","2000","100","false","MS UI Gothic","0"]
-["133","370","0.6-0.6","4.5","♪","0","0","133","-35","2000","200","false","MS UI Gothic","0"]
-["133","370","0.4-0.4","4.5","♪","0","0","133","-35","2000","300","false","MS UI Gothic","0"]
-["123","370","1-1","4.5","♪","0","0","123","-35","2000","0","false","MS UI Gothic","0"]
-["123","370","0.8-0.8","4.5","♪","0","0","123","-35","2000","100","false","MS UI Gothic","0"]
-["123","370","0.6-0.6","4.5","♪","0","0","123","-35","2000","200","false","MS UI Gothic","0"]
-["123","370","0.4-0.4","4.5","♪","0","0","123","-35","2000","300","false","MS UI Gothic","0"]
-["189","370","1-1","4.5","♬","0","0","189","-35","2000","0","false","MS UI Gothic","0"]
-["189","370","0.8-0.8","4.5","♬","0","0","189","-35","2000","100","false","MS UI Gothic","0"]
-["189","370","0.6-0.6","4.5","♬","0","0","189","-35","2000","200","false","MS UI Gothic","0"]
-["189","370","0.4-0.4","4.5","♬","0","0","189","-35","2000","300","false","MS UI Gothic","0"]
-["133","370","1-1","4.5","♪","0","0","133","-35","2000","0","false","MS UI Gothic","0"]
-["133","370","0.8-0.8","4.5","♪","0","0","133","-35","2000","100","false","MS UI Gothic","0"]
-["133","370","0.6-0.6","4.5","♪","0","0","133","-35","2000","200","false","MS UI Gothic","0"]
-["133","370","0.4-0.4","4.5","♪","0","0","133","-35","2000","300","false","MS UI Gothic","0"]
-["94","370","1-1","4.5","♭","0","0","94","-35","2000","0","false","MS UI Gothic","0"]
-["94","370","0.8-0.8","4.5","♭","0","0","94","-35","2000","100","false","MS UI Gothic","0"]
-["94","370","0.6-0.6","4.5","♭","0","0","94","-35","2000","200","false","MS UI Gothic","0"]
-["94","370","0.4-0.4","4.5","♭","0","0","94","-35","2000","300","false","MS UI Gothic","0"]
-["177","370","1-1","4.5","♫","0","0","177","-35","2000","0","false","MS UI Gothic","0"]
-["177","370","0.8-0.8","4.5","♫","0","0","177","-35","2000","100","false","MS UI Gothic","0"]
-["177","370","0.6-0.6","4.5","♫","0","0","177","-35","2000","200","false","MS UI Gothic","0"]
-["177","370","0.4-0.4","4.5","♫","0","0","177","-35","2000","300","false","MS UI Gothic","0"]
-["260","370","1-1","4.5","♩","0","0","260","-35","2000","0","false","MS UI Gothic","0"]
-["260","370","0.8-0.8","4.5","♩","0","0","260","-35","2000","100","false","MS UI Gothic","0"]
-["260","370","0.6-0.6","4.5","♩","0","0","260","-35","2000","200","false","MS UI Gothic","0"]
-["260","370","0.4-0.4","4.5","♩","0","0","260","-35","2000","300","false","MS UI Gothic","0"]
-["352","370","1-1","4.5","♬","0","0","352","-35","2000","0","false","MS UI Gothic","0"]
-["352","370","0.8-0.8","4.5","♬","0","0","352","-35","2000","100","false","MS UI Gothic","0"]
-["352","370","0.6-0.6","4.5","♬","0","0","352","-35","2000","200","false","MS UI Gothic","0"]
-["352","370","0.4-0.4","4.5","♬","0","0","352","-35","2000","300","false","MS UI Gothic","0"]
-["435","370","1-1","4.5","♪","0","0","435","-35","2000","0","false","MS UI Gothic","0"]
-["435","370","0.8-0.8","4.5","♪","0","0","435","-35","2000","100","false","MS UI Gothic","0"]
-["435","370","0.6-0.6","4.5","♪","0","0","435","-35","2000","200","false","MS UI Gothic","0"]
-["435","370","0.4-0.4","4.5","♪","0","0","435","-35","2000","300","false","MS UI Gothic","0"]
-["440","370","1-1","4.5","♪","0","0","440","-35","2000","0","false","MS UI Gothic","0"]
-["440","370","0.8-0.8","4.5","♪","0","0","440","-35","2000","100","false","MS UI Gothic","0"]
-["440","370","0.6-0.6","4.5","♪","0","0","440","-35","2000","200","false","MS UI Gothic","0"]
-["440","370","0.4-0.4","4.5","♪","0","0","440","-35","2000","300","false","MS UI Gothic","0"]
-["445","370","1-1","4.5","♪","0","0","445","-35","2000","0","false","MS UI Gothic","0"]
-["445","370","0.8-0.8","4.5","♪","0","0","445","-35","2000","100","false","MS UI Gothic","0"]
-["445","370","0.6-0.6","4.5","♪","0","0","445","-35","2000","200","false","MS UI Gothic","0"]
-["445","370","0.4-0.4","4.5","♪","0","0","445","-35","2000","300","false","MS UI Gothic","0"]
-["370","370","1-1","4.5","♩","0","0","370","-35","2000","0","false","MS UI Gothic","0"]
-["370","370","0.8-0.8","4.5","♩","0","0","370","-35","2000","100","false","MS UI Gothic","0"]
-["370","370","0.6-0.6","4.5","♩","0","0","370","-35","2000","200","false","MS UI Gothic","0"]
-["370","370","0.4-0.4","4.5","♩","0","0","370","-35","2000","300","false","MS UI Gothic","0"]
-["435","370","1-1","4.5","♪","0","0","435","-35","2000","0","false","MS UI Gothic","0"]
-["435","370","0.8-0.8","4.5","♪","0","0","435","-35","2000","100","false","MS UI Gothic","0"]
-["435","370","0.6-0.6","4.5","♪","0","0","435","-35","2000","200","false","MS UI Gothic","0"]
-["435","370","0.4-0.4","4.5","♪","0","0","435","-35","2000","300","false","MS UI Gothic","0"]
-["259","370","1-1","4.5","♫","0","0","259","-35","2000","0","false","MS UI Gothic","0"]
-["259","370","0.8-0.8","4.5","♫","0","0","259","-35","2000","100","false","MS UI Gothic","0"]
-["259","370","0.6-0.6","4.5","♫","0","0","259","-35","2000","200","false","MS UI Gothic","0"]
-["259","370","0.4-0.4","4.5","♫","0","0","259","-35","2000","300","false","MS UI Gothic","0"]
-["180","370","1-1","4.5","♭","0","0","180","-35","2000","0","false","MS UI Gothic","0"]
-["180","370","0.8-0.8","4.5","♭","0","0","180","-35","2000","100","false","MS UI Gothic","0"]
-["180","370","0.6-0.6","4.5","♭","0","0","180","-35","2000","200","false","MS UI Gothic","0"]
-["180","370","0.4-0.4","4.5","♭","0","0","180","-35","2000","300","false","MS UI Gothic","0"]
-["259","370","1-1","4.5","♫","0","0","259","-35","2000","0","false","MS UI Gothic","0"]
-["259","370","0.8-0.8","4.5","♫","0","0","259","-35","2000","100","false","MS UI Gothic","0"]
-["259","370","0.6-0.6","4.5","♫","0","0","259","-35","2000","200","false","MS UI Gothic","0"]
-["259","370","0.4-0.4","4.5","♫","0","0","259","-35","2000","300","false","MS UI Gothic","0"]
-["393","370","1-1","4.5","♪","0","0","393","-35","2000","0","false","MS UI Gothic","0"]
-["393","370","0.8-0.8","4.5","♪","0","0","393","-35","2000","100","false","MS UI Gothic","0"]
-["393","370","0.6-0.6","4.5","♪","0","0","393","-35","2000","200","false","MS UI Gothic","0"]
-["393","370","0.4-0.4","4.5","♪","0","0","393","-35","2000","300","false","MS UI Gothic","0"]
-["180","370","1-1","4.5","♭","0","0","180","-35","2000","0","false","MS UI Gothic","0"]
-["180","370","0.8-0.8","4.5","♭","0","0","180","-35","2000","100","false","MS UI Gothic","0"]
-["180","370","0.6-0.6","4.5","♭","0","0","180","-35","2000","200","false","MS UI Gothic","0"]
-["180","370","0.4-0.4","4.5","♭","0","0","180","-35","2000","300","false","MS UI Gothic","0"]
-["417","370","1-1","4.5","♩","0","0","417","-35","2000","0","false","MS UI Gothic","0"]
-["417","370","0.8-0.8","4.5","♩","0","0","417","-35","2000","100","false","MS UI Gothic","0"]
-["417","370","0.6-0.6","4.5","♩","0","0","417","-35","2000","200","false","MS UI Gothic","0"]
-["417","370","0.4-0.4","4.5","♩","0","0","417","-35","2000","300","false","MS UI Gothic","0"]
-["310","370","1-1","4.5","♬","0","0","310","-35","2000","0","false","MS UI Gothic","0"]
-["310","370","0.8-0.8","4.5","♬","0","0","310","-35","2000","100","false","MS UI Gothic","0"]
-["310","370","0.6-0.6","4.5","♬","0","0","310","-35","2000","200","false","MS UI Gothic","0"]
-["310","370","0.4-0.4","4.5","♬","0","0","310","-35","2000","300","false","MS UI Gothic","0"]
-["325","370","1-1","4.5","♬","0","0","325","-35","2000","0","false","MS UI Gothic","0"]
-["325","370","0.8-0.8","4.5","♬","0","0","325","-35","2000","100","false","MS UI Gothic","0"]
-["325","370","0.6-0.6","4.5","♬","0","0","325","-35","2000","200","false","MS UI Gothic","0"]
-["325","370","0.4-0.4","4.5","♬","0","0","325","-35","2000","300","false","MS UI Gothic","0"]
-["227","370","1-1","4.5","♫","0","0","227","-35","2000","0","false","MS UI Gothic","0"]
-["227","370","0.8-0.8","4.5","♫","0","0","227","-35","2000","100","false","MS UI Gothic","0"]
-["227","370","0.6-0.6","4.5","♫","0","0","227","-35","2000","200","false","MS UI Gothic","0"]
-["227","370","0.4-0.4","4.5","♫","0","0","227","-35","2000","300","false","MS UI Gothic","0"]
-["144","370","1-1","4.5","♪","0","0","144","-35","2000","0","false","MS UI Gothic","0"]
-["144","370","0.8-0.8","4.5","♪","0","0","144","-35","2000","100","false","MS UI Gothic","0"]
-["144","370","0.6-0.6","4.5","♪","0","0","144","-35","2000","200","false","MS UI Gothic","0"]
-["144","370","0.4-0.4","4.5","♪","0","0","144","-35","2000","300","false","MS UI Gothic","0"]
-["58","370","1-1","4.5","♭","0","0","58","-35","2000","0","false","MS UI Gothic","0"]
-["58","370","0.8-0.8","4.5","♭","0","0","58","-35","2000","100","false","MS UI Gothic","0"]
-["58","370","0.6-0.6","4.5","♭","0","0","58","-35","2000","200","false","MS UI Gothic","0"]
-["58","370","0.4-0.4","4.5","♭","0","0","58","-35","2000","300","false","MS UI Gothic","0"]
-["144","370","1-1","4.5","♪","0","0","144","-35","2000","0","false","MS UI Gothic","0"]
-["144","370","0.8-0.8","4.5","♪","0","0","144","-35","2000","100","false","MS UI Gothic","0"]
-["144","370","0.6-0.6","4.5","♪","0","0","144","-35","2000","200","false","MS UI Gothic","0"]
-["144","370","0.4-0.4","4.5","♪","0","0","144","-35","2000","300","false","MS UI Gothic","0"]
-["87","370","1-1","4.5","♫","0","0","87","-35","2000","0","false","MS UI Gothic","0"]
-["87","370","0.8-0.8","4.5","♫","0","0","87","-35","2000","100","false","MS UI Gothic","0"]
-["87","370","0.6-0.6","4.5","♫","0","0","87","-35","2000","200","false","MS UI Gothic","0"]
-["87","370","0.4-0.4","4.5","♫","0","0","87","-35","2000","300","false","MS UI Gothic","0"]
-["60","355","0.9-0","0.5","●","0","0","60","355","500","0","false","宋体","0"]
-["93","291","0.9-0","0.5","●","0","0","93","291","500","0","false","宋体","0"]
-["75","254","0.9-0","0.5","●","0","0","75","254","500","0","false","宋体","0"]
-["64","182","0.9-0","0.5","●","0","0","64","182","500","0","false","宋体","0"]
-["94","107","0.9-0","0.5","●","0","0","94","107","500","0","false","宋体","0"]
-["86","128","0.9-0","0.5","●","0","0","86","128","500","0","false","宋体","0"]
-["63","44","0.9-0","0.5","●","0","0","63","44","500","0","false","宋体","0"]
-["166","350","0.9-0","0.5","●","0","0","166","350","500","0","false","宋体","0"]
-["154","274","0.9-0","0.5","●","0","0","154","274","500","0","false","宋体","0"]
-["173","186","0.9-0","0.5","●","0","0","173","186","500","0","false","宋体","0"]
-["158","106","0.9-0","0.5","●","0","0","158","106","500","0","false","宋体","0"]
-["185","44","0.9-0","0.5","●","0","0","185","44","500","0","false","宋体","0"]
-["146","16","0.9-0","0.5","●","0","0","146","16","500","0","false","宋体","0"]
-["256","351","0.9-0","0.5","●","0","0","256","351","500","0","false","宋体","0"]
-["241","287","0.9-0","0.5","●","0","0","241","287","500","0","false","宋体","0"]
-["266","205","0.9-0","0.5","●","0","0","266","205","500","0","false","宋体","0"]
-["232","189","0.9-0","0.5","●","0","0","232","189","500","0","false","宋体","0"]
-["256","83","0.9-0","0.5","●","0","0","256","83","500","0","false","宋体","0"]
-["235","9","0.9-0","0.5","●","0","0","235","9","500","0","false","宋体","0"]
-["357","361","0.9-0","0.5","●","0","0","357","361","500","0","false","宋体","0"]
-["327","319","0.9-0","0.5","●","0","0","327","319","500","0","false","宋体","0"]
-["353","236","0.9-0","0.5","●","0","0","353","236","500","0","false","宋体","0"]
-["322","154","0.9-0","0.5","●","0","0","322","154","500","0","false","宋体","0"]
-["337","56","0.9-0","0.5","●","0","0","337","56","500","0","false","宋体","0"]
-["362","6","0.9-0","0.5","●","0","0","362","6","500","0","false","宋体","0"]
-["412","342","0.9-0","0.5","●","0","0","412","342","500","0","false","宋体","0"]
-["451","365","0.9-0","0.5","●","0","0","451","365","500","0","false","宋体","0"]
-["438","260","0.9-0","0.5","●","0","0","438","260","500","0","false","宋体","0"]
-["417","163","0.9-0","0.5","●","0","0","417","163","500","0","false","宋体","0"]
-["443","66","0.9-0","0.5","●","0","0","443","66","500","0","false","宋体","0"]
-["431","15","0.9-0","0.5","●","0","0","431","15","500","0","false","宋体","0"]
-["323","309","0.9-0","0.5","●","0","0","323","309","500","0","false","宋体","0"]
-["356","352","0.9-0","0.5","●","0","0","356","352","500","0","false","宋体","0"]
-["355","224","0.9-0","0.5","●","0","0","355","224","500","0","false","宋体","0"]
-["336","137","0.9-0","0.5","●","0","0","336","137","500","0","false","宋体","0"]
-["353","57","0.9-0","0.5","●","0","0","353","57","500","0","false","宋体","0"]
-["324","5","0.9-0","0.5","●","0","0","324","5","500","0","false","宋体","0"]
-["416","363","0.9-0","0.5","●","0","0","416","363","500","0","false","宋体","0"]
-["442","290","0.9-0","0.5","●","0","0","442","290","500","0","false","宋体","0"]
-["414","264","0.9-0","0.5","●","0","0","414","264","500","0","false","宋体","0"]
-["434","171","0.9-0","0.5","●","0","0","434","171","500","0","false","宋体","0"]
-["423","94","0.9-0","0.5","●","0","0","423","94","500","0","false","宋体","0"]
-["443","15","0.9-0","0.5","●","0","0","443","15","500","0","false","宋体","0"]
-["272","352","0.9-0","0.5","●","0","0","272","352","500","0","false","宋体","0"]
-["252","282","0.9-0","0.5","●","0","0","252","282","500","0","false","宋体","0"]
-["273","254","0.9-0","0.5","●","0","0","273","254","500","0","false","宋体","0"]
-["246","186","0.9-0","0.5","●","0","0","246","186","500","0","false","宋体","0"]
-["256","105","0.9-0","0.5","●","0","0","256","105","500","0","false","宋体","0"]
-["278","10","0.9-0","0.5","●","0","0","278","10","500","0","false","宋体","0"]
-["157","264","0.9-0","0.5","●","0","0","157","264","500","0","false","宋体","0"]
-["184","349","0.9-0","0.5","●","0","0","184","349","500","0","false","宋体","0"]
-["175","180","0.9-0","0.5","●","0","0","175","180","500","0","false","宋体","0"]
-["156","146","0.9-0","0.5","●","0","0","156","146","500","0","false","宋体","0"]
-["184","58","0.9-0","0.5","●","0","0","184","58","500","0","false","宋体","0"]
-["152","12","0.9-0","0.5","●","0","0","152","12","500","0","false","宋体","0"]
-["105","368","0.9-0","0.5","●","0","0","105","368","500","0","false","宋体","0"]
-["85","295","0.9-0","0.5","●","0","0","85","295","500","0","false","宋体","0"]
-["105","221","0.9-0","0.5","●","0","0","105","221","500","0","false","宋体","0"]
-["81","196","0.9-0","0.5","●","0","0","81","196","500","0","false","宋体","0"]
-["99","103","0.9-0","0.5","●","0","0","99","103","500","0","false","宋体","0"]
-["79","22","0.9-0","0.5","●","0","0","79","22","500","0","false","宋体","0"]
-["147","363","0.9-0","0.5","●","0","0","147","363","500","0","false","宋体","0"]
-["170","293","0.9-0","0.5","●","0","0","170","293","500","0","false","宋体","0"]
-["148","283","0.9-0","0.5","●","0","0","148","283","500","0","false","宋体","0"]
-["162","201","0.9-0","0.5","●","0","0","162","201","500","0","false","宋体","0"]
-["141","108","0.9-0","0.5","●","0","0","141","108","500","0","false","宋体","0"]
-["181","30","0.9-0","0.5","●","0","0","181","30","500","0","false","宋体","0"]
-["235","363","0.9-0","0.5","●","0","0","235","363","500","0","false","宋体","0"]
-["221","322","0.9-0","0.5","●","0","0","221","322","500","0","false","宋体","0"]
-["253","249","0.9-0","0.5","●","0","0","253","249","500","0","false","宋体","0"]
-["229","184","0.9-0","0.5","●","0","0","229","184","500","0","false","宋体","0"]
-["239","95","0.9-0","0.5","●","0","0","239","95","500","0","false","宋体","0"]
-["229","21","0.9-0","0.5","●","0","0","229","21","500","0","false","宋体","0"]
-["330","358","0.9-0","0.5","●","0","0","330","358","500","0","false","宋体","0"]
-["302","279","0.9-0","0.5","●","0","0","302","279","500","0","false","宋体","0"]
-["322","222","0.9-0","0.5","●","0","0","322","222","500","0","false","宋体","0"]
-["297","156","0.9-0","0.5","●","0","0","297","156","500","0","false","宋体","0"]
-["333","80","0.9-0","0.5","●","0","0","333","80","500","0","false","宋体","0"]
-["299","12","0.9-0","0.5","●","0","0","299","12","500","0","false","宋体","0"]
-["371","332","0.9-0","0.5","●","0","0","371","332","500","0","false","宋体","0"]
-["403","248","0.9-0","0.5","●","0","0","403","248","500","0","false","宋体","0"]
-["367","183","0.9-0","0.5","●","0","0","367","183","500","0","false","宋体","0"]
-["383","98","0.9-0","0.5","●","0","0","383","98","500","0","false","宋体","0"]
-["356","76","0.9-0","0.5","●","0","0","356","76","500","0","false","宋体","0"]
-["375","13","0.9-0","0.5","●","0","0","375","13","500","0","false","宋体","0"]
-["304","363","0.9-0","0.5","●","0","0","304","363","500","0","false","宋体","0"]
-["324","284","0.9-0","0.5","●","0","0","324","284","500","0","false","宋体","0"]
-["287","220","0.9-0","0.5","●","0","0","287","220","500","0","false","宋体","0"]
-["319","193","0.9-0","0.5","●","0","0","319","193","500","0","false","宋体","0"]
-["296","107","0.9-0","0.5","●","0","0","296","107","500","0","false","宋体","0"]
-["311","31","0.9-0","0.5","●","0","0","311","31","500","0","false","宋体","0"]
-["395","351","0.9-0","0.5","●","0","0","395","351","500","0","false","宋体","0"]
-["369","282","0.9-0","0.5","●","0","0","369","282","500","0","false","宋体","0"]
-["389","210","0.9-0","0.5","●","0","0","389","210","500","0","false","宋体","0"]
-["377","128","0.9-0","0.5","●","0","0","377","128","500","0","false","宋体","0"]
-["405","54","0.9-0","0.5","●","0","0","405","54","500","0","false","宋体","0"]
-["361","17","0.9-0","0.5","●","0","0","361","17","500","0","false","宋体","0"]
-["324","347","0.9-0","0.5","●","0","0","324","347","500","0","false","宋体","0"]
-["297","280","0.9-0","0.5","●","0","0","297","280","500","0","false","宋体","0"]
-["324","252","0.9-0","0.5","●","0","0","324","252","500","0","false","宋体","0"]
-["304","183","0.9-0","0.5","●","0","0","304","183","500","0","false","宋体","0"]
-["329","105","0.9-0","0.5","●","0","0","329","105","500","0","false","宋体","0"]
-["298","33","0.9-0","0.5","●","0","0","298","33","500","0","false","宋体","0"]
-["335","16","0.9-0","0.5","●","0","0","335","16","500","0","false","宋体","0"]
-["212","353","0.9-0","0.5","●","0","0","212","353","500","0","true","宋体","0"]
-["235","292","0.9-0","0.5","●","0","0","235","292","500","0","true","宋体","0"]
-["220","202","0.9-0","0.5","●","0","0","220","202","500","0","true","宋体","0"]
-["226","118","0.9-0","0.5","●","0","0","226","118","500","0","true","宋体","0"]
-["196","49","0.9-0","0.5","●","0","0","196","49","500","0","true","宋体","0"]
-["239","9","0.9-0","0.5","●","0","0","239","9","500","0","true","宋体","0"]
-["154","359","0.9-0","0.5","●","0","0","154","359","500","0","false","宋体","0"]
-["129","286","0.9-0","0.5","●","0","0","129","286","500","0","false","宋体","0"]
-["149","218","0.9-0","0.5","●","0","0","149","218","500","0","false","宋体","0"]
-["120","195","0.9-0","0.5","●","0","0","120","195","500","0","false","宋体","0"]
-["135","115","0.9-0","0.5","●","0","0","135","115","500","0","false","宋体","0"]
-["122","17","0.9-0","0.5","●","0","0","122","17","500","0","false","宋体","0"]
-["115","357","0.9-0","0.5","●","0","0","115","357","500","0","false","黑体","0"]
-["138","303","0.9-0","0.5","●","0","0","138","303","500","0","false","黑体","0"]
-["117","231","0.9-0","0.5","●","0","0","117","231","500","0","false","黑体","0"]
-["158","198","0.9-0","0.5","●","0","0","158","198","500","0","false","黑体","0"]
-["123","110","0.9-0","0.5","●","0","0","123","110","500","0","false","黑体","0"]
-["151","33","0.9-0","0.5","●","0","0","151","33","500","0","false","黑体","0"]
-["118","10","0.9-0","0.5","●","0","0","118","10","500","0","false","黑体","0"]
-["203","349","0.9-0","0.5","●","0","0","203","349","500","0","false","宋体","0"]
-["184","270","0.9-0","0.5","●","0","0","184","270","500","0","false","宋体","0"]
-["210","201","0.9-0","0.5","●","0","0","210","201","500","0","false","宋体","0"]
-["182","182","0.9-0","0.5","●","0","0","182","182","500","0","false","宋体","0"]
-["197","100","0.9-0","0.5","●","0","0","197","100","500","0","false","宋体","0"]
-["179","24","0.9-0","0.5","●","0","0","179","24","500","0","false","宋体","0"]
-["152","352","0.9-0","0.5","●","0","0","152","352","500","0","false","宋体","0"]
-["121","284","0.9-0","0.5","●","0","0","121","284","500","0","false","宋体","0"]
-["165","212","0.9-0","0.5","●","0","0","165","212","500","0","false","宋体","0"]
-["137","139","0.9-0","0.5","●","0","0","137","139","500","0","false","宋体","0"]
-["165","99","0.9-0","0.5","●","0","0","165","99","500","0","false","宋体","0"]
-["123","23","0.9-0","0.5","●","0","0","123","23","500","0","false","宋体","0"]
-["83","351","0.9-0","0.5","●","0","0","83","351","500","0","false","宋体","0"]
-["118","291","0.9-0","0.5","●","0","0","118","291","500","0","false","宋体","0"]
-["88","213","0.9-0","0.5","●","0","0","88","213","500","0","false","宋体","0"]
-["119","180","0.9-0","0.5","●","0","0","119","180","500","0","false","宋体","0"]
-["100","120","0.9-0","0.5","●","0","0","100","120","500","0","false","宋体","0"]
-["122","42","0.9-0","0.5","●","0","0","122","42","500","0","false","宋体","0"]
-["99","19","0.9-0","0.5","●","0","0","99","19","500","0","false","宋体","0"]
-["189","340","0.9-0","0.5","●","0","0","189","340","500","0","false","宋体","0"]
-["167","271","0.9-0","0.5","●","0","0","167","271","500","0","false","宋体","0"]
-["195","225","0.9-0","0.5","●","0","0","195","225","500","0","false","宋体","0"]
-["172","136","0.9-0","0.5","●","0","0","172","136","500","0","false","宋体","0"]
-["196","59","0.9-0","0.5","●","0","0","196","59","500","0","false","宋体","0"]
-["173","21","0.9-0","0.5","●","0","0","173","21","500","0","false","宋体","0"]
-["261","326","0.9-0","0.5","●","0","0","261","326","500","0","false","黑体","0"]
-["242","256","0.9-0","0.5","●","0","0","242","256","500","0","false","黑体","0"]
-["271","204","0.9-0","0.5","●","0","0","271","204","500","0","false","黑体","0"]
-["260","132","0.9-0","0.5","●","0","0","260","132","500","0","false","黑体","0"]
-["240","51","0.9-0","0.5","●","0","0","240","51","500","0","false","黑体","0"]
-["278","21","0.9-0","0.5","●","0","0","278","21","500","0","false","黑体","0"]
-["372","341","0.9-0","0.5","●","0","0","372","341","500","0","false","黑体","0"]
-["347","281","0.9-0","0.5","●","0","0","347","281","500","0","false","黑体","0"]
-["371","206","0.9-0","0.5","●","0","0","371","206","500","0","false","黑体","0"]
-["359","144","0.9-0","0.5","●","0","0","359","144","500","0","false","黑体","0"]
-["376","64","0.9-0","0.5","●","0","0","376","64","500","0","false","黑体","0"]
-["337","28","0.9-0","0.5","●","0","0","337","28","500","0","false","黑体","0"]
-["428","344","0.9-0","0.5","●","0","0","428","344","500","0","false","宋体","0"]
-["468","323","0.9-0","0.5","●","0","0","468","323","500","0","false","宋体","0"]
-["440","294","0.9-0","0.5","●","0","0","440","294","500","0","false","宋体","0"]
-["463","239","0.9-0","0.5","●","0","0","463","239","500","0","false","宋体","0"]
-["430","179","0.9-0","0.5","●","0","0","430","179","500","0","false","宋体","0"]
-["455","114","0.9-0","0.5","●","0","0","455","114","500","0","false","宋体","0"]
-["437","74","0.9-0","0.5","●","0","0","437","74","500","0","false","宋体","0"]
-["462","42","0.9-0","0.5","●","0","0","462","42","500","0","false","宋体","0"]
-["420","10","0.9-0","0.5","●","0","0","420","10","500","0","false","宋体","0"]
-["443","351","0.9-0","0.5","●","0","0","443","351","500","0","false","宋体","0"]
-["469","277","0.9-0","0.5","●","0","0","469","277","500","0","false","宋体","0"]
-["440","203","0.9-0","0.5","●","0","0","440","203","500","0","false","宋体","0"]
-["461","148","0.9-0","0.5","●","0","0","461","148","500","0","false","宋体","0"]
-["451","69","0.9-0","0.5","●","0","0","451","69","500","0","false","宋体","0"]
-["473","32","0.9-0","0.5","●","0","0","473","32","500","0","false","宋体","0"]
-["355","335","0.9-0","0.5","●","0","0","355","335","500","0","false","宋体","0"]
-["378","268","0.9-0","0.5","●","0","0","378","268","500","0","false","宋体","0"]
-["356","235","0.9-0","0.5","●","0","0","356","235","500","0","false","宋体","0"]
-["377","173","0.9-0","0.5","●","0","0","377","173","500","0","false","宋体","0"]
-["354","117","0.9-0","0.5","●","0","0","354","117","500","0","false","宋体","0"]
-["394","60","0.9-0","0.5","●","0","0","394","60","500","0","false","宋体","0"]
-["350","18","0.9-0","0.5","●","0","0","350","18","500","0","false","宋体","0"]
-["457","306","0.9-0","0.5","●","0","0","457","306","500","0","false","黑体","0"]
-["435","241","0.9-0","0.5","●","0","0","435","241","500","0","false","黑体","0"]
-["461","182","0.9-0","0.5","●","0","0","461","182","500","0","false","黑体","0"]
-["433","142","0.9-0","0.5","●","0","0","433","142","500","0","false","黑体","0"]
-["468","67","0.9-0","0.5","●","0","0","468","67","500","0","false","黑体","0"]
-["437","23","0.9-0","0.5","●","0","0","437","23","500","0","false","黑体","0"]
-["240","314","0.9-0","0.5","●","0","0","240","314","500","0","false","宋体","0"]
-["274","250","0.9-0","0.5","●","0","0","274","250","500","0","false","宋体","0"]
-["255","192","0.9-0","0.5","●","0","0","255","192","500","0","false","宋体","0"]
-["229","124","0.9-0","0.5","●","0","0","229","124","500","0","false","宋体","0"]
-["263","73","0.9-0","0.5","●","0","0","263","73","500","0","false","宋体","0"]
-["244","18","0.9-0","0.5","●","0","0","244","18","500","0","false","宋体","0"]
-["200","342","0.9-0","0.5","●","0","0","200","342","500","0","false","宋体","0"]
-["181","275","0.9-0","0.5","●","0","0","181","275","500","0","false","宋体","0"]
-["213","237","0.9-0","0.5","●","0","0","213","237","500","0","false","宋体","0"]
-["192","148","0.9-0","0.5","●","0","0","192","148","500","0","false","宋体","0"]
-["163","64","0.9-0","0.5","●","0","0","163","64","500","0","false","宋体","0"]
-["196","15","0.9-0","0.5","●","0","0","196","15","500","0","false","宋体","0"]
-["189","361","0.9-0","0.5","●","0","0","189","361","500","0","false","宋体","0"]
-["246","350","0.9-0","0.5","●","0","0","246","350","500","0","false","宋体","0"]
-["275","291","0.9-0","0.5","●","0","0","275","291","500","0","false","宋体","0"]
-["259","228","0.9-0","0.5","●","0","0","259","228","500","0","false","宋体","0"]
-["289","205","0.9-0","0.5","●","0","0","289","205","500","0","false","宋体","0"]
-["271","124","0.9-0","0.5","●","0","0","271","124","500","0","false","宋体","0"]
-["242","43","0.9-0","0.5","●","0","0","242","43","500","0","false","宋体","0"]
-["278","12","0.9-0","0.5","●","0","0","278","12","500","0","false","宋体","0"]
-["416","345","0.9-0","0.5","●","0","0","416","345","500","0","false","宋体","0"]
-["391","282","0.9-0","0.5","●","0","0","391","282","500","0","false","宋体","0"]
-["419","225","0.9-0","0.5","●","0","0","419","225","500","0","false","宋体","0"]
-["407","167","0.9-0","0.5","●","0","0","407","167","500","0","false","宋体","0"]
-["387","72","0.9-0","0.5","●","0","0","387","72","500","0","false","宋体","0"]
-["420","14","0.9-0","0.5","●","0","0","420","14","500","0","false","宋体","0"]
-["178","314","0.9-0","0.5","●","0","0","178","314","500","0","false","宋体","0"]
-["205","245","0.9-0","0.5","●","0","0","205","245","500","0","false","宋体","0"]
-["173","208","0.9-0","0.5","●","0","0","173","208","500","0","false","宋体","0"]
-["205","143","0.9-0","0.5","●","0","0","205","143","500","0","false","宋体","0"]
-["175","71","0.9-0","0.5","●","0","0","175","71","500","0","false","宋体","0"]
-["207","23","0.9-0","0.5","●","0","0","207","23","500","0","false","宋体","0"]
-["428","347","0.9-0","0.5","●","0","0","428","347","500","0","false","黑体","0"]
-["405","282","0.9-0","0.5","●","0","0","405","282","500","0","false","黑体","0"]
-["431","226","0.9-0","0.5","●","0","0","431","226","500","0","false","黑体","0"]
-["420","147","0.9-0","0.5","●","0","0","420","147","500","0","false","黑体","0"]
-["434","78","0.9-0","0.5","●","0","0","434","78","500","0","false","黑体","0"]
-["396","14","0.9-0","0.5","●","0","0","396","14","500","0","false","黑体","0"]
-["342","317","0.9-0","0.5","●","0","0","342","317","500","0","false","黑体","0"]
-["308","272","0.9-0","0.5","●","0","0","308","272","500","0","false","黑体","0"]
-["342","210","0.9-0","0.5","●","0","0","342","210","500","0","false","黑体","0"]
-["321","151","0.9-0","0.5","●","0","0","321","151","500","0","false","黑体","0"]
-["335","89","0.9-0","0.5","●","0","0","335","89","500","0","false","黑体","0"]
-["309","29","0.9-0","0.5","●","0","0","309","29","500","0","false","黑体","0"]
-["349","5","0.9-0","0.5","●","0","0","349","5","500","0","false","黑体","0"]
-["303","323","0.9-0","0.5","●","0","0","303","323","500","0","false","宋体","0"]
-["328","262","0.9-0","0.5","●","0","0","328","262","500","0","false","宋体","0"]
-["309","191","0.9-0","0.5","●","0","0","309","191","500","0","false","宋体","0"]
-["344","119","0.9-0","0.5","●","0","0","344","119","500","0","false","宋体","0"]
-["323","56","0.9-0","0.5","●","0","0","323","56","500","0","false","宋体","0"]
-["337","3","0.9-0","0.5","●","0","0","337","3","500","0","false","宋体","0"]
-["239","360","0.9-0","0.5","●","0","0","239","360","500","0","false","宋体","0"]
-["214","297","0.9-0","0.5","●","0","0","214","297","500","0","false","宋体","0"]
-["247","258","0.9-0","0.5","●","0","0","247","258","500","0","false","宋体","0"]
-["233","189","0.9-0","0.5","●","0","0","233","189","500","0","false","宋体","0"]
-["207","116","0.9-0","0.5","●","0","0","207","116","500","0","false","宋体","0"]
-["256","76","0.9-0","0.5","●","0","0","256","76","500","0","false","宋体","0"]
-["242","11","0.9-0","0.5","●","0","0","242","11","500","0","false","宋体","0"]
-["72","335","0.9-0","0.5","●","0","0","72","335","500","0","true","黑体","0"]
-["53","262","0.9-0","0.5","●","0","0","53","262","500","0","true","黑体","0"]
-["81","228","0.9-0","0.5","●","0","0","81","228","500","0","true","黑体","0"]
-["70","152","0.9-0","0.5","●","0","0","70","152","500","0","true","黑体","0"]
-["56","76","0.9-0","0.5","●","0","0","56","76","500","0","true","黑体","0"]
-["90","36","0.9-0","0.5","●","0","0","90","36","500","0","true","黑体","0"]
-["172","333","0.9-0","0.5","●","0","0","172","333","500","0","false","黑体","0"]
-["147","262","0.9-0","0.5","●","0","0","147","262","500","0","false","黑体","0"]
-["171","198","0.9-0","0.5","●","0","0","171","198","500","0","false","黑体","0"]
-["134","166","0.9-0","0.5","●","0","0","134","166","500","0","false","黑体","0"]
-["164","79","0.9-0","0.5","●","0","0","164","79","500","0","false","黑体","0"]
-["143","28","0.9-0","0.5","●","0","0","143","28","500","0","false","黑体","0"]
-["104","349","0.9-0","0.5","●","0","0","104","349","500","0","false","宋体","0"]
-["76","279","0.9-0","0.5","●","0","0","76","279","500","0","false","宋体","0"]
-["103","236","0.9-0","0.5","●","0","0","103","236","500","0","false","宋体","0"]
-["82","162","0.9-0","0.5","●","0","0","82","162","500","0","false","宋体","0"]
-["112","93","0.9-0","0.5","●","0","0","112","93","500","0","false","宋体","0"]
-["73","15","0.9-0","0.5","●","0","0","73","15","500","0","false","宋体","0"]
-["164","333","0.9-0","0.5","●","0","0","164","333","500","0","false","宋体","0"]
-["143","267","0.9-0","0.5","●","0","0","143","267","500","0","false","宋体","0"]
-["171","243","0.9-0","0.5","●","0","0","171","243","500","0","false","宋体","0"]
-["155","170","0.9-0","0.5","●","0","0","155","170","500","0","false","宋体","0"]
-["182","97","0.9-0","0.5","●","0","0","182","97","500","0","false","宋体","0"]
-["139","32","0.9-0","0.5","●","0","0","139","32","500","0","false","宋体","0"]
-["172","5","0.9-0","0.5","●","0","0","172","5","500","0","false","宋体","0"]
-["24","44","0-1","2","●","0","0","24","44","500","0","false","黑体","0"]
-["24","44","1-1","4.5","●","0","0","385","44","4500","0","false","黑体","0"]
-["119","84","1-1","4.5","君が生まれた朝","0","0","119","84","500","0","false","黑体","0"]
-["118","160","1-1","0.5","●","0","0","118","235","500","0","false","黑体","0"]
-["120","148","1-1","0.5","▲","0","0","120","223","500","0","false","黑体","0"]
-["121","258","1-0","0.5","●","0","0","93","242","500","0","false","黑体","0"]
-["121","258","1-0","0.5","●","0","0","85","253","500","0","false","黑体","0"]
-["131","257","1-0","0.5","●","0","0","173","247","500","0","false","黑体","0"]
-["131","257","1-0","0.4","●","0","0","163","251","400","0","false","黑体","0"]
-["115","262","1-1","4.5","泣き蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5","泣","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," き","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["115","262","1-1","4.5"," 蟲","0","0","115","262","500","0","true","黑体","0"]
-["173","304","0-1","4.5","だった","0","0","173","304","500","0","true","黑体","0"]
-["284","287","0-1","2","私は","0","0","284","287","500","0","true","黑体","0"]
-["281","284","0-1","2","私は","0","0","281","284","500","0","true","黑体","0"]
-["284","287","1-1","2.5","私は","0","0","284","287","500","0","true","黑体","0"]
-["281","284","1-1","2.5","私は","0","0","281","284","500","0","true","黑体","0"]
-["347","212","1-1","4.5","小さくても","340","0","292","234","1500","0","true","黑体","0"]
-["347","212","1-1","4.5","小さく","340","0","292","234","1500","0","true","黑体","0"]
-["347","212","1-1","4.5","/n 姉となった—","340","0","292","234","1500","0","true","黑体","0"]
-["347","212","1-1","4.5","/n 姉","340","0","292","234","1500","0","true","黑体","0"]
-["106","90","0-1","2","嬉し","0","0","106","90","500","0","true","黑体","0"]
-["103","87","0-1","2","嬉し","0","0","103","87","500","0","true","黑体","0"]
-["106","90","1-1","2.5","嬉し","0","0","106","90","500","0","true","黑体","0"]
-["103","87","1-1","2.5","嬉し","0","0","103","87","500","0","true","黑体","0"]
-["149","135","0-1","4.5","くて","0","0","149","135","500","0","true","黑体","0"]
-["125","234","0-1","4.5","少し","0","0","125","234","500","0","true","黑体","0"]
-["198","217","0-1","2","照れ","0","0","198","217","500","0","true","黑体","0"]
-["195","214","0-1","2","照れ","0","0","195","214","500","0","true","黑体","0"]
-["198","217","1-1","2","照れ","0","0","198","217","500","0","true","黑体","0"]
-["195","214","1-1","2","照れ","0","0","195","214","500","0","true","黑体","0"]
-["247","258","1-0","3","くさ","340","0","247","258","500","0","true","黑体","0"]
-["302","239","1-0","3","くて","310","0","302","239","500","0","true","黑体","0"]
-["0","-75","1-1","5","██████████████████████","28","0","0","-75","500","0","false","黑体","0"]
-["0","-75","1-1","5"," ██████████████████████","28","0","0","-75","500","0","false","黑体","0"]
-["186","42","1-1","5","██████████","37","0","186","42","500","0","false","黑体","0"]
-["186","42","1-1","5"," ██████████","37","0","186","42","500","0","false","黑体","0"]
-["325","122","1-1","5","██████","32","0","325","122","500","0","false","黑体","0"]
-["325","122","1-1","5"," ██████","32","0","325","122","500","0","false","黑体","0"]
-["0","-90","1-1","5","██████████████████████","40","0","0","-90","500","0","false","黑体","0"]
-["0","-90","1-1","5"," ██████████████████████","40","0","0","-90","500","0","false","黑体","0"]
-["295","131","1-1","5","█","0","0","295","131","500","0","false","黑体","0"]
-["328","103","1-1","5","とても/n","30","25","328","103","500","0","true","黑体","0"]
-["344","160","1-1","5","誇","40","30","344","160","500","0","true","黑体","0"]
-["344","160","1-1","5"," らし","40","30","344","160","500","0","true","黑体","0"]
-["407","203","1-1","5","か","40","30","407","203","500","0","true","黑体","0"]
-["347","159","1-1","5"," っ","40","30","347","159","500","0","true","黑体","0"]
-["347","159","1-1","5"," た","40","30","347","159","500","0","true","黑体","0"]
-["0","-160","1-1","0.2"," ████████████/n ████████████","34","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.2","████████████/n████████████","34","0","0","-160","500","0","false","黑体","0"]
-["518","342","1-1","0.5","█","0","0","518","342","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","33","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","33","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","35","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","35","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","32","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","32","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","36","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","36","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","31","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","31","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","37","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","37","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","30","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","30","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","38","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","38","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","29","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","29","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","39","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","39","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","████████████","28","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1"," ████████████","28","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n ████████████","40","0","0","-160","500","0","false","黑体","0"]
-["0","-160","1-1","0.1","/n████████████","40","0","0","-160","500","0","false","黑体","0"]
-["101","111","0-1","0.5","苦しみに揺蕩う","0","0","101","111","500","0","false","宋体","0"]
-["101","111","1-1","2","苦しみに揺蕩う","0","0","101","111","500","0","false","宋体","0"]
-["101","111","1-0","0.5","苦しみに揺蕩う","0","0","101","111","500","0","false","宋体","0"]
-["400","118","1-1","0.5","_________________","0","0","100","118","500","0","true","宋体","0"]
-["100","118","1-1","2","_________________","0","0","45","118","2000","0","true","宋体","0"]
-["45","118","1-1","0.5","_________________","0","0","-365","118","500","0","true","宋体","0"]
-["-365","77","1-1","0.5","_________________","0","0","45","77","500","0","true","宋体","0"]
-["45","77","1-1","2","_________________","0","0","100","77","2000","0","true","宋体","0"]
-["100","77","1-1","0.5","_________________","0","0","400","77","500","0","true","宋体","0"]
-["341","-212","1-1","0.5","___","90","0","341","88","500","0","true","黑体","0"]
-["341","88","1-1","2","___","90","0","341","109","2000","0","true","黑体","0"]
-["341","109","1-1","0.5","___","90","0","341","409","500","0","true","黑体","0"]
-["128","409","1-1","0.5","___","90","0","128","109","500","0","true","黑体","0"]
-["128","109","1-1","2","___","90","0","128","88","2000","0","true","黑体","0"]
-["128","88","1-1","0.5","___","90","0","128","-212","500","0","true","黑体","0"]
-["235","205","0-1","0.5","生存の荒野を","0","0","235","205","500","0","true","黑体","0"]
-["235","205","1-1","2","生存の荒野を","0","0","235","205","500","0","true","黑体","0"]
-["235","205","1-0","0.5","生存の荒野を","0","0","235","205","500","0","true","黑体","0"]
-["-135","170","1-1","0.5","________________","0","0","165","170","500","0","true","黑体","0"]
-["165","170","1-1","2","________________","0","0","230","170","2000","0","true","黑体","0"]
-["230","170","1-1","0.5","________________","0","0","530","170","500","0","true","黑体","0"]
-["530","213","1-1","0.5","________________","0","0","230","213","500","0","true","黑体","0"]
-["230","213","1-1","2","________________","0","0","165","213","2000","0","true","黑体","0"]
-["165","213","1-1","0.5","________________","0","0","-135","213","500","0","true","黑体","0"]
-["445","-119","1-1","0.5","___","90","0","445","181","500","0","true","黑体","0"]
-["445","181","1-1","2","___","90","0","445","204","2000","0","true","黑体","0"]
-["445","204","1-1","0.5","___","90","0","445","504","500","0","true","黑体","0"]
-["263","504","1-1","0.5","___","90","0","263","204","500","0","true","黑体","0"]
-["263","204","1-1","2","___","90","0","263","181","2000","0","true","黑体","0"]
-["263","181","1-1","0.5","___","90","0","263","-119","500","0","true","黑体","0"]
-["800","132","1-1","0.5","『","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9","『","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9","『","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5","『","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," 美","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," 美","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," 美","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," 美","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," し","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," し","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," し","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," し","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," き","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," き","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," き","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," き","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," も","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," も","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," も","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," も","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," の","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," の","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," の","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," の","0","0","-497","135","500","0","true","黑体","1"]
-["800","132","1-1","0.5"," 』","0","0","150","132","500","0","true","黑体","1"]
-["150","132","1-1","0.9"," 』","0","0","160","140","900","0","true","黑体","1"]
-["160","140","1-1","0.9"," 』","0","0","153","135","900","0","true","黑体","1"]
-["153","135","1-1","0.5"," 』","0","0","-497","135","500","0","true","黑体","1"]
-["-800","92","1-1","4.5","______________________","0","0","800","92","500","0","true","黑体","0"]
-["-800","110","1-1","4.5","______________________","0","0","800","110","500","0","true","黑体","0"]
-["-800","144","1-1","4.5","______________________","0","0","800","144","500","0","true","黑体","0"]
-["-800","117","1-1","4.5","______________________","0","0","800","117","500","0","true","黑体","0"]
-["-800","160","1-1","4.5","______________________","0","0","800","160","500","0","true","黑体","0"]
-["-800","126","1-1","4.5","______________________","0","0","800","126","500","0","true","黑体","0"]
-["-800","106","1-1","4.5","______________________","0","0","800","106","500","0","true","黑体","0"]
-["-800","186","1-1","4.5","______________________","0","0","800","186","500","0","true","黑体","0"]
-["-800","106","1-1","4.5","______________________","0","0","800","106","500","0","true","黑体","0"]
-["-800","220","1-1","4.5","______________________","0","0","800","220","500","0","true","黑体","0"]
-["-800","207","1-1","4.5","______________________","0","0","800","207","500","0","true","黑体","0"]
-["-800","188","1-1","4.5","______________________","0","0","800","188","500","0","true","黑体","0"]
-["-800","144","1-1","4.5","______________________","0","0","800","144","500","0","true","黑体","0"]
-["-800","180","1-1","4.5","______________________","0","0","800","180","500","0","true","黑体","0"]
-["-800","200","1-1","4.5","______________________","0","0","800","200","500","0","true","黑体","0"]
-["-800","160","1-1","4.5","______________________","0","0","800","160","500","0","true","黑体","0"]
-["-800","184","1-1","4.5","______________________","0","0","800","184","500","0","true","黑体","0"]
-["-800","129","1-1","4.5","______________________","0","0","800","129","500","0","true","黑体","0"]
-["768","199","1-1","0.5","探","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9","探","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9","探","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9","探","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5","探","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," す","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," す","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," す","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," す","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," す","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," よ","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," よ","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," よ","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," よ","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," よ","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," う","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," う","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," う","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," う","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," う","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," に","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," に","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," に","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," に","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," に","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," 駈","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," 駈","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," 駈","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," 駈","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," 駈","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," け","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," け","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," け","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," け","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," け","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," 抜","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," 抜","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," 抜","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," 抜","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," 抜","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," け","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," け","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," け","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," け","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," け","0","0","-534","198","500","0","true","黑体","0"]
-["768","199","1-1","0.5"," た","0","0","118","199","500","0","true","黑体","0"]
-["118","199","1-1","0.9"," た","0","0","121","195","1200","0","true","黑体","0"]
-["121","195","1-1","0.9"," た","0","0","118","197","1200","0","true","黑体","0"]
-["118","197","1-1","0.9"," た","0","0","116","198","1200","0","true","黑体","0"]
-["116","198","1-1","0.5"," た","0","0","-534","198","500","0","true","黑体","0"]
-["135","112","1-0","0.5","果てしなき地平へ","0","0","135","112","500","0","true","黑体","0"]
-["133","120","1-0","0.5","_______________","0","0","133","120","500","0","true","黑体","0"]
-["138","109","1-0","0.5","果てしなき地平へ","0","0","138","109","500","0","true","黑体","0"]
-["137","115","1-0","0.5","_______________","0","0","137","115","500","0","true","黑体","0"]
-["141","106","1-0","0.5","果てしなき地平へ","0","0","141","106","500","0","true","黑体","0"]
-["141","110","1-0","0.5","_______________","0","0","141","110","500","0","true","黑体","0"]
-["145","103","1-0","0.5","果てしなき地平へ","0","0","145","103","500","0","true","黑体","0"]
-["145","105","1-0","0.5","_______________","0","0","141","105","500","0","true","黑体","0"]
-["149","100","1-0","0.5","果てしなき地平へ","0","0","149","100","500","0","true","黑体","0"]
-["149","100","1-0","0.5","_______________","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5","果てしなき地平へ","0","0","154","97","500","0","true","黑体","0"]
-["154","98","1-0","0.5","_______________","0","0","154","98","500","0","true","黑体","0"]
-["158","95","1-0","0.5","果てしなき地平へ","0","0","158","95","500","0","true","黑体","0"]
-["158","96","1-0","0.5","_______________","0","0","158","96","500","0","true","黑体","0"]
-["162","92","1-0","0.5","果てしなき地平へ","0","0","162","92","500","0","true","黑体","0"]
-["162","93","1-0","0.5","_______________","0","0","162","93","500","0","true","黑体","0"]
-["165","90","1-0","0.5","果てしなき地平へ","0","0","165","90","500","0","true","黑体","0"]
-["165","91","1-0","0.5","_______________","0","0","165","91","500","0","true","黑体","0"]
-["169","88","1-0","0.5","果てしなき地平へ","0","0","169","88","500","0","true","黑体","0"]
-["169","89","1-0","0.5","_______________","0","0","169","89","500","0","true","黑体","0"]
-["173","85","1-0","0.5","果てしなき地平へ","0","0","173","85","500","0","true","黑体","0"]
-["173","87","1-0","0.5","_______________","0","0","173","87","500","0","true","黑体","0"]
-["178","83","1-0","0.5","果てしなき地平へ","0","0","178","83","500","0","true","黑体","0"]
-["178","84","1-0","0.5","_______________","0","0","178","84","500","0","true","黑体","0"]
-["182","82","1-0","0.5","果てしなき地平へ","0","0","182","82","500","0","true","黑体","0"]
-["182","83","1-0","0.5","_______________","0","0","182","83","500","0","true","黑体","0"]
-["186","81","1-0","0.5","果てしなき地平へ","0","0","186","81","500","0","true","黑体","0"]
-["186","82","1-0","0.5","_______________","0","0","186","82","500","0","true","黑体","0"]
-["190","79","1-0","0.5","果てしなき地平へ","0","0","190","79","500","0","true","黑体","0"]
-["190","80","1-0","0.5","_______________","0","0","190","80","500","0","true","黑体","0"]
-["194","78","1-0","0.5","果てしなき地平へ","0","0","194","78","500","0","true","黑体","0"]
-["194","79","1-0","0.5","_______________","0","0","194","79","500","0","true","黑体","0"]
-["198","76","1-0","0.5","果てしなき地平へ","0","0","198","76","500","0","true","黑体","0"]
-["198","77","1-0","0.5","_______________","0","0","198","77","500","0","true","黑体","0"]
-["202","74","1-0","0.5","果てしなき地平へ","0","0","202","74","500","0","true","黑体","0"]
-["202","75","1-0","0.5","_______________","0","0","202","75","500","0","true","黑体","0"]
-["207","73","1-0","0.5","果てしなき地平へ","0","0","207","73","500","0","true","黑体","0"]
-["207","74","1-0","0.5","_______________","0","0","207","74","500","0","true","黑体","0"]
-["211","71","1-0","0.5","果てしなき地平へ","0","0","211","71","500","0","true","黑体","0"]
-["211","72","1-0","0.5","_______________","0","0","211","72","500","0","true","黑体","0"]
-["215","70","1-0","0.5","果てしなき地平へ","0","0","215","70","500","0","true","黑体","0"]
-["215","71","1-0","0.5","_______________","0","0","215","71","500","0","true","黑体","0"]
-["219","69","1-0","0.5","果てしなき地平へ","0","0","219","69","500","0","true","黑体","0"]
-["219","70","1-0","0.5","_______________","0","0","219","70","500","0","true","黑体","0"]
-["223","68","1-0","0.5","果てしなき地平へ","0","0","223","68","500","0","true","黑体","0"]
-["223","69","1-0","0.5","_______________","0","0","223","69","500","0","true","黑体","0"]
-["228","67","1-0","0.5","果てしなき地平へ","0","0","228","67","500","0","true","黑体","0"]
-["228","68","1-0","0.5","_______________","0","0","228","68","500","0","true","黑体","0"]
-["232","66","1-0","0.5","果てしなき地平へ","0","0","232","66","500","0","true","黑体","0"]
-["232","67","1-0","0.5","_______________","0","0","232","67","500","0","true","黑体","0"]
-["236","65","1-0","0.5","果てしなき地平へ","0","0","236","65","500","0","true","黑体","0"]
-["236","66","1-0","0.5","_______________","0","0","236","66","500","0","true","黑体","0"]
-["239","64","1-0","0.5","果てしなき地平へ","0","0","239","64","500","0","true","黑体","0"]
-["239","65","1-0","0.5","_______________","0","0","239","65","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," 旅立つ君の","0","0","135","112","500","0","true","黑体","0"]
-["133","120","1-0","0.5","_______________","0","0","133","120","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," 旅立つ君の","0","0","138","109","500","0","true","黑体","0"]
-["137","115","1-0","0.5","_______________","0","0","137","115","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," 旅立つ君の","0","0","141","106","500","0","true","黑体","0"]
-["141","110","1-0","0.5","_______________","0","0","141","110","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," 旅立つ君の","0","0","145","103","500","0","true","黑体","0"]
-["145","105","1-0","0.5","_______________","0","0","141","105","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," 旅立つ君の","0","0","149","100","500","0","true","黑体","0"]
-["149","100","1-0","0.5","_______________","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," 旅立つ君の","0","0","154","97","500","0","true","黑体","0"]
-["154","98","1-0","0.5","_______________","0","0","154","98","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," 旅立つ君の","0","0","158","95","500","0","true","黑体","0"]
-["158","96","1-0","0.5","_______________","0","0","158","96","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," 旅立つ君の","0","0","162","92","500","0","true","黑体","0"]
-["162","93","1-0","0.5","_______________","0","0","162","93","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," 旅立つ君の","0","0","165","90","500","0","true","黑体","0"]
-["165","91","1-0","0.5","_______________","0","0","165","91","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," 旅立つ君の","0","0","169","88","500","0","true","黑体","0"]
-["169","89","1-0","0.5","_______________","0","0","169","89","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," 旅立つ君の","0","0","173","85","500","0","true","黑体","0"]
-["173","87","1-0","0.5","_______________","0","0","173","87","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," 旅立つ君の","0","0","178","83","500","0","true","黑体","0"]
-["178","84","1-0","0.5","_______________","0","0","178","84","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," 旅立つ君の","0","0","182","82","500","0","true","黑体","0"]
-["182","83","1-0","0.5","_______________","0","0","182","83","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," 旅立つ君の","0","0","186","81","500","0","true","黑体","0"]
-["186","82","1-0","0.5","_______________","0","0","186","82","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," 旅立つ君の","0","0","190","79","500","0","true","黑体","0"]
-["190","80","1-0","0.5","_______________","0","0","190","80","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," 旅立つ君の","0","0","194","78","500","0","true","黑体","0"]
-["194","79","1-0","0.5","_______________","0","0","194","79","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," 旅立つ君の","0","0","198","76","500","0","true","黑体","0"]
-["198","77","1-0","0.5","_______________","0","0","198","77","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," 旅立つ君の","0","0","202","74","500","0","true","黑体","0"]
-["202","75","1-0","0.5","_______________","0","0","202","75","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," 旅立つ君の","0","0","207","73","500","0","true","黑体","0"]
-["207","74","1-0","0.5","_______________","0","0","207","74","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," 旅立つ君の","0","0","211","71","500","0","true","黑体","0"]
-["211","72","1-0","0.5","_______________","0","0","211","72","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," 旅立つ君の","0","0","215","70","500","0","true","黑体","0"]
-["215","71","1-0","0.5","_______________","0","0","215","71","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," 旅立つ君の","0","0","219","69","500","0","true","黑体","0"]
-["219","70","1-0","0.5","_______________","0","0","219","70","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," 旅立つ君の","0","0","223","68","500","0","true","黑体","0"]
-["223","69","1-0","0.5","_______________","0","0","223","69","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," 旅立つ君の","0","0","228","67","500","0","true","黑体","0"]
-["228","68","1-0","0.5","_______________","0","0","228","68","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," 旅立つ君の","0","0","232","66","500","0","true","黑体","0"]
-["232","67","1-0","0.5","_______________","0","0","232","67","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," 旅立つ君の","0","0","236","65","500","0","true","黑体","0"]
-["236","66","1-0","0.5","_______________","0","0","236","66","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," 旅立つ君の","0","0","239","64","500","0","true","黑体","0"]
-["239","65","1-0","0.5","_______________","0","0","239","65","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," 寢顔","0","0","135","112","500","0","true","黑体","0"]
-["133","120","1-0","0.5","_______________","0","0","133","120","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," 寢顔","0","0","138","109","500","0","true","黑体","0"]
-["137","115","1-0","0.5","_______________","0","0","137","115","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," 寢顔","0","0","141","106","500","0","true","黑体","0"]
-["141","110","1-0","0.5","_______________","0","0","141","110","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," 寢顔","0","0","145","103","500","0","true","黑体","0"]
-["145","105","1-0","0.5","_______________","0","0","141","105","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," 寢顔","0","0","149","100","500","0","true","黑体","0"]
-["149","100","1-0","0.5","_______________","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," 寢顔","0","0","154","97","500","0","true","黑体","0"]
-["154","98","1-0","0.5","_______________","0","0","154","98","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," 寢顔","0","0","158","95","500","0","true","黑体","0"]
-["158","96","1-0","0.5","_______________","0","0","158","96","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," 寢顔","0","0","162","92","500","0","true","黑体","0"]
-["162","93","1-0","0.5","_______________","0","0","162","93","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," 寢顔","0","0","165","90","500","0","true","黑体","0"]
-["165","91","1-0","0.5","_______________","0","0","165","91","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," 寢顔","0","0","169","88","500","0","true","黑体","0"]
-["169","89","1-0","0.5","_______________","0","0","169","89","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," 寢顔","0","0","173","85","500","0","true","黑体","0"]
-["173","87","1-0","0.5","_______________","0","0","173","87","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," 寢顔","0","0","178","83","500","0","true","黑体","0"]
-["178","84","1-0","0.5","_______________","0","0","178","84","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," 寢顔","0","0","182","82","500","0","true","黑体","0"]
-["182","83","1-0","0.5","_______________","0","0","182","83","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," 寢顔","0","0","186","81","500","0","true","黑体","0"]
-["186","82","1-0","0.5","_______________","0","0","186","82","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," 寢顔","0","0","190","79","500","0","true","黑体","0"]
-["190","80","1-0","0.5","_______________","0","0","190","80","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," 寢顔","0","0","194","78","500","0","true","黑体","0"]
-["194","79","1-0","0.5","_______________","0","0","194","79","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," 寢顔","0","0","198","76","500","0","true","黑体","0"]
-["198","77","1-0","0.5","_______________","0","0","198","77","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," 寢顔","0","0","202","74","500","0","true","黑体","0"]
-["202","75","1-0","0.5","_______________","0","0","202","75","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," 寢顔","0","0","207","73","500","0","true","黑体","0"]
-["207","74","1-0","0.5","_______________","0","0","207","74","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," 寢顔","0","0","211","71","500","0","true","黑体","0"]
-["211","72","1-0","0.5","_______________","0","0","211","72","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," 寢顔","0","0","215","70","500","0","true","黑体","0"]
-["215","71","1-0","0.5","_______________","0","0","215","71","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," 寢顔","0","0","219","69","500","0","true","黑体","0"]
-["219","70","1-0","0.5","_______________","0","0","219","70","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," 寢顔","0","0","223","68","500","0","true","黑体","0"]
-["223","69","1-0","0.5","_______________","0","0","223","69","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," 寢顔","0","0","228","67","500","0","true","黑体","0"]
-["228","68","1-0","0.5","_______________","0","0","228","68","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," 寢顔","0","0","232","66","500","0","true","黑体","0"]
-["232","67","1-0","0.5","_______________","0","0","232","67","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," 寢顔","0","0","236","65","500","0","true","黑体","0"]
-["236","66","1-0","0.5","_______________","0","0","236","66","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," 寢顔","0","0","239","64","500","0","true","黑体","0"]
-["239","65","1-0","0.5","_______________","0","0","239","65","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," 何","0","0","135","112","500","0","true","黑体","0"]
-["133","120","1-0","0.5","_______________","0","0","133","120","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," 何","0","0","138","109","500","0","true","黑体","0"]
-["137","115","1-0","0.5","_______________","0","0","137","115","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," 何","0","0","141","106","500","0","true","黑体","0"]
-["141","110","1-0","0.5","_______________","0","0","141","110","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," 何","0","0","145","103","500","0","true","黑体","0"]
-["145","105","1-0","0.5","_______________","0","0","141","105","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," 何","0","0","149","100","500","0","true","黑体","0"]
-["149","100","1-0","0.5","_______________","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," 何","0","0","154","97","500","0","true","黑体","0"]
-["154","98","1-0","0.5","_______________","0","0","154","98","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," 何","0","0","158","95","500","0","true","黑体","0"]
-["158","96","1-0","0.5","_______________","0","0","158","96","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," 何","0","0","162","92","500","0","true","黑体","0"]
-["162","93","1-0","0.5","_______________","0","0","162","93","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," 何","0","0","165","90","500","0","true","黑体","0"]
-["165","91","1-0","0.5","_______________","0","0","165","91","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," 何","0","0","169","88","500","0","true","黑体","0"]
-["169","89","1-0","0.5","_______________","0","0","169","89","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," 何","0","0","173","85","500","0","true","黑体","0"]
-["173","87","1-0","0.5","_______________","0","0","173","87","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," 何","0","0","178","83","500","0","true","黑体","0"]
-["178","84","1-0","0.5","_______________","0","0","178","84","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," 何","0","0","182","82","500","0","true","黑体","0"]
-["182","83","1-0","0.5","_______________","0","0","182","83","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," 何","0","0","186","81","500","0","true","黑体","0"]
-["186","82","1-0","0.5","_______________","0","0","186","82","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," 何","0","0","190","79","500","0","true","黑体","0"]
-["190","80","1-0","0.5","_______________","0","0","190","80","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," 何","0","0","194","78","500","0","true","黑体","0"]
-["194","79","1-0","0.5","_______________","0","0","194","79","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," 何","0","0","198","76","500","0","true","黑体","0"]
-["198","77","1-0","0.5","_______________","0","0","198","77","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," 何","0","0","202","74","500","0","true","黑体","0"]
-["202","75","1-0","0.5","_______________","0","0","202","75","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," 何","0","0","207","73","500","0","true","黑体","0"]
-["207","74","1-0","0.5","_______________","0","0","207","74","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," 何","0","0","211","71","500","0","true","黑体","0"]
-["211","72","1-0","0.5","_______________","0","0","211","72","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," 何","0","0","215","70","500","0","true","黑体","0"]
-["215","71","1-0","0.5","_______________","0","0","215","71","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," 何","0","0","219","69","500","0","true","黑体","0"]
-["219","70","1-0","0.5","_______________","0","0","219","70","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," 何","0","0","223","68","500","0","true","黑体","0"]
-["223","69","1-0","0.5","_______________","0","0","223","69","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," 何","0","0","228","67","500","0","true","黑体","0"]
-["228","68","1-0","0.5","_______________","0","0","228","68","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," 何","0","0","232","66","500","0","true","黑体","0"]
-["232","67","1-0","0.5","_______________","0","0","232","67","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," 何","0","0","236","65","500","0","true","黑体","0"]
-["236","66","1-0","0.5","_______________","0","0","236","66","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," 何","0","0","239","64","500","0","true","黑体","0"]
-["239","65","1-0","0.5","_______________","0","0","239","65","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," よ","0","0","135","112","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," よ","0","0","138","109","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," よ","0","0","141","106","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," よ","0","0","145","103","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," よ","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," よ","0","0","154","97","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," よ","0","0","158","95","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," よ","0","0","162","92","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," よ","0","0","165","90","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," よ","0","0","169","88","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," よ","0","0","173","85","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," よ","0","0","178","83","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," よ","0","0","182","82","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," よ","0","0","186","81","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," よ","0","0","190","79","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," よ","0","0","194","78","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," よ","0","0","198","76","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," よ","0","0","202","74","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," よ","0","0","207","73","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," よ","0","0","211","71","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," よ","0","0","215","70","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," よ","0","0","219","69","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," よ","0","0","223","68","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," よ","0","0","228","67","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," よ","0","0","232","66","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," よ","0","0","236","65","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," よ","0","0","239","64","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," 美","0","0","135","112","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," 美","0","0","138","109","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," 美","0","0","141","106","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," 美","0","0","145","103","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," 美","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," 美","0","0","154","97","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," 美","0","0","158","95","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," 美","0","0","162","92","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," 美","0","0","165","90","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," 美","0","0","169","88","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," 美","0","0","173","85","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," 美","0","0","178","83","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," 美","0","0","182","82","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," 美","0","0","186","81","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," 美","0","0","190","79","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," 美","0","0","194","78","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," 美","0","0","198","76","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," 美","0","0","202","74","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," 美","0","0","207","73","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," 美","0","0","211","71","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," 美","0","0","215","70","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," 美","0","0","219","69","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," 美","0","0","223","68","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," 美","0","0","228","67","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," 美","0","0","232","66","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," 美","0","0","236","65","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," 美","0","0","239","64","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," し","0","0","135","112","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," し","0","0","138","109","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," し","0","0","141","106","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," し","0","0","145","103","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," し","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," し","0","0","154","97","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," し","0","0","158","95","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," し","0","0","162","92","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," し","0","0","165","90","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," し","0","0","169","88","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," し","0","0","173","85","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," し","0","0","178","83","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," し","0","0","182","82","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," し","0","0","186","81","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," し","0","0","190","79","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," し","0","0","194","78","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," し","0","0","198","76","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," し","0","0","202","74","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," し","0","0","207","73","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," し","0","0","211","71","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," し","0","0","215","70","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," し","0","0","219","69","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," し","0","0","223","68","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," し","0","0","228","67","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," し","0","0","232","66","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," し","0","0","236","65","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," し","0","0","239","64","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," い","0","0","135","112","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," い","0","0","138","109","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," い","0","0","141","106","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," い","0","0","145","103","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," い","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," い","0","0","154","97","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," い","0","0","158","95","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," い","0","0","162","92","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," い","0","0","165","90","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," い","0","0","169","88","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," い","0","0","173","85","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," い","0","0","178","83","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," い","0","0","182","82","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," い","0","0","186","81","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," い","0","0","190","79","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," い","0","0","194","78","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," い","0","0","198","76","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," い","0","0","202","74","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," い","0","0","207","73","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," い","0","0","211","71","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," い","0","0","215","70","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," い","0","0","219","69","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," い","0","0","223","68","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," い","0","0","228","67","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," い","0","0","232","66","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," い","0","0","236","65","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," い","0","0","239","64","500","0","true","黑体","0"]
-["135","112","1-0","0.5"," と思ったよ","0","0","135","112","500","0","true","黑体","0"]
-["133","120","1-0","0.5","_______________","0","0","133","120","500","0","true","黑体","0"]
-["138","109","1-0","0.5"," と思ったよ","0","0","138","109","500","0","true","黑体","0"]
-["137","115","1-0","0.5","_______________","0","0","137","115","500","0","true","黑体","0"]
-["141","106","1-0","0.5"," と思ったよ","0","0","141","106","500","0","true","黑体","0"]
-["141","110","1-0","0.5","_______________","0","0","141","110","500","0","true","黑体","0"]
-["145","103","1-0","0.5"," と思ったよ","0","0","145","103","500","0","true","黑体","0"]
-["145","105","1-0","0.5","_______________","0","0","141","105","500","0","true","黑体","0"]
-["149","100","1-0","0.5"," と思ったよ","0","0","149","100","500","0","true","黑体","0"]
-["149","100","1-0","0.5","_______________","0","0","149","100","500","0","true","黑体","0"]
-["154","97","1-0","0.5"," と思ったよ","0","0","154","97","500","0","true","黑体","0"]
-["154","98","1-0","0.5","_______________","0","0","154","98","500","0","true","黑体","0"]
-["158","95","1-0","0.5"," と思ったよ","0","0","158","95","500","0","true","黑体","0"]
-["158","96","1-0","0.5","_______________","0","0","158","96","500","0","true","黑体","0"]
-["162","92","1-0","0.5"," と思ったよ","0","0","162","92","500","0","true","黑体","0"]
-["162","93","1-0","0.5","_______________","0","0","162","93","500","0","true","黑体","0"]
-["165","90","1-0","0.5"," と思ったよ","0","0","165","90","500","0","true","黑体","0"]
-["165","91","1-0","0.5","_______________","0","0","165","91","500","0","true","黑体","0"]
-["169","88","1-0","0.5"," と思ったよ","0","0","169","88","500","0","true","黑体","0"]
-["169","89","1-0","0.5","_______________","0","0","169","89","500","0","true","黑体","0"]
-["173","85","1-0","0.5"," と思ったよ","0","0","173","85","500","0","true","黑体","0"]
-["173","87","1-0","0.5","_______________","0","0","173","87","500","0","true","黑体","0"]
-["178","83","1-0","0.5"," と思ったよ","0","0","178","83","500","0","true","黑体","0"]
-["178","84","1-0","0.5","_______________","0","0","178","84","500","0","true","黑体","0"]
-["182","82","1-0","0.5"," と思ったよ","0","0","182","82","500","0","true","黑体","0"]
-["182","83","1-0","0.5","_______________","0","0","182","83","500","0","true","黑体","0"]
-["186","81","1-0","0.5"," と思ったよ","0","0","186","81","500","0","true","黑体","0"]
-["186","82","1-0","0.5","_______________","0","0","186","82","500","0","true","黑体","0"]
-["190","79","1-0","0.5"," と思ったよ","0","0","190","79","500","0","true","黑体","0"]
-["190","80","1-0","0.5","_______________","0","0","190","80","500","0","true","黑体","0"]
-["194","78","1-0","0.5"," と思ったよ","0","0","194","78","500","0","true","黑体","0"]
-["194","79","1-0","0.5","_______________","0","0","194","79","500","0","true","黑体","0"]
-["198","76","1-0","0.5"," と思ったよ","0","0","198","76","500","0","true","黑体","0"]
-["198","77","1-0","0.5","_______________","0","0","198","77","500","0","true","黑体","0"]
-["202","74","1-0","0.5"," と思ったよ","0","0","202","74","500","0","true","黑体","0"]
-["202","75","1-0","0.5","_______________","0","0","202","75","500","0","true","黑体","0"]
-["207","73","1-0","0.5"," と思ったよ","0","0","207","73","500","0","true","黑体","0"]
-["207","74","1-0","0.5","_______________","0","0","207","74","500","0","true","黑体","0"]
-["211","71","1-0","0.5"," と思ったよ","0","0","211","71","500","0","true","黑体","0"]
-["211","72","1-0","0.5","_______________","0","0","211","72","500","0","true","黑体","0"]
-["215","70","1-0","0.5"," と思ったよ","0","0","215","70","500","0","true","黑体","0"]
-["215","71","1-0","0.5","_______________","0","0","215","71","500","0","true","黑体","0"]
-["219","69","1-0","0.5"," と思ったよ","0","0","219","69","500","0","true","黑体","0"]
-["219","70","1-0","0.5","_______________","0","0","219","70","500","0","true","黑体","0"]
-["223","68","1-0","0.5"," と思ったよ","0","0","223","68","500","0","true","黑体","0"]
-["223","69","1-0","0.5","_______________","0","0","223","69","500","0","true","黑体","0"]
-["228","67","1-0","0.5"," と思ったよ","0","0","228","67","500","0","true","黑体","0"]
-["228","68","1-0","0.5","_______________","0","0","228","68","500","0","true","黑体","0"]
-["232","66","1-0","0.5"," と思ったよ","0","0","232","66","500","0","true","黑体","0"]
-["232","67","1-0","0.5","_______________","0","0","232","67","500","0","true","黑体","0"]
-["236","65","1-0","0.5"," と思ったよ","0","0","236","65","500","0","true","黑体","0"]
-["236","66","1-0","0.5","_______________","0","0","236","66","500","0","true","黑体","0"]
-["239","64","1-0","0.5"," と思ったよ","0","0","239","64","500","0","true","黑体","0"]
-["239","65","1-0","0.5","_______________","0","0","239","65","500","0","true","黑体","0"]
-["372","278","1-0","1.1","◆","30","70","372","278","500","0","false","黑体","0"]
-["102","282","1-0","1.1","◆","0","70","102","282","500","0","false","黑体","0"]
-["311","271","1-0","1.1","◆","0","70","311","271","500","0","false","黑体","0"]
-["483","288","1-0","1.1","◆","50","80","483","288","500","0","false","黑体","0"]
-["38","274","1-0","1.1","◆","340","60","38","274","500","0","false","黑体","0"]
-["127","259","1-0","1.1","◆","340","60","127","259","500","0","false","黑体","0"]
-["236","300","1-0","1.1","◆","350","60","236","300","500","0","false","黑体","0"]
-["332","289","1-0","1.1","◆","350","70","332","289","500","0","false","黑体","0"]
-["437","276","1-0","1.1","◆","10","80","437","276","500","0","false","黑体","0"]
-["288","288","1-0","1.1","◆","10","80","288","288","500","0","false","黑体","0"]
-["109","265","1-0","1.1","◆","10","60","109","265","500","0","false","黑体","0"]
-["53","284","1-0","1.1","◆","325","60","53","284","500","0","false","黑体","0"]
-["245","289","1-0","1.1","◆","325","60","245","289","500","0","false","黑体","0"]
-["421","300","1-0","1.1","◆","325","60","421","300","500","0","false","黑体","0"]
-["334","304","1-0","1.1","◆","325","60","334","304","500","0","false","黑体","0"]
-["119","306","1-0","1.1","◆","325","60","119","306","500","0","false","黑体","0"]
-["233","285","1-0","1.1","◆","325","60","233","285","500","0","false","黑体","0"]
-["160","282","1-0","1.1","◆","300","60","160","282","500","0","false","黑体","0"]
-["523","291","1-0","1.1","◆","20","90","523","291","500","0","false","黑体","0"]
-["300","313","1-0","1.1","◆","20","90","300","313","500","0","false","黑体","0"]
-["135","268","1-0","1.1","◆","20","60","135","268","500","0","false","黑体","0"]
-["386","307","1-0","1.1","◆","20","60","386","307","500","0","false","黑体","0"]
-["407","268","1-0","1.1","◆","20","77","407","268","500","0","false","黑体","0"]
-["288","308","1-0","1.1","◆","20","77","288","308","500","0","false","黑体","0"]
-["49","242","1-0","1.1","◆","350","60","49","242","500","0","false","黑体","0"]
-["190","251","1-0","1.1","◆","340","60","190","251","500","0","false","黑体","0"]
-["482","289","1-0","1.1","◆","340","75","482","289","500","0","false","黑体","0"]
-["457","249","1-0","1.1","◆","10","75","457","249","500","0","false","黑体","0"]
-["292","242","1-0","1.1","◆","355","70","292","242","500","0","false","黑体","0"]
-["286","283","1-0","1.1","◆","355","70","286","283","500","0","false","黑体","0"]
-["427","273","1-0","1.1","◆","15","80","427","273","500","0","false","黑体","0"]
-["16","268","1-0","1.1","◆","345","48","16","268","500","0","false","黑体","0"]
-["218","309","1-0","1.1","◆","345","55","218","309","500","0","false","黑体","0"]
-["286","302","1-0","1.1","◆","5","60","286","302","500","0","false","黑体","0"]
-["264","295","1-0","1.1","◆","5","60","264","295","500","0","false","黑体","0"]
-["238","266","1-0","1.1","◆","10","60","238","266","500","0","false","黑体","0"]
-["180","7","0-1","4.5","在你诞生的那个早晨","0","0","180","7","500","0","true","黑体","0"]
-["80","355","0-1","4.5","只是个爱哭鬼的我","0","0","80","355","500","0","true","黑体","0"]
-["284","355","0-1","4.5","变成了小小的姐姐——","0","0","284","355","500","0","true","黑体","0"]
-["84","343","0-1","4.5","真的很高兴啊","0","0","84","343","500","0","true","黑体","0"]
-["120","362","0-1","4.5","虽然也有点不好意思","0","0","120","362","500","0","true","黑体","0"]
-["292","30","0-1","4.5","但那真是值得骄傲的事","28","20","292","30","500","0","true","黑体","0"]
-["111","333","0-1","4.5","在这摇曳着痛苦的","0","0","111","333","500","0","true","黑体","0"]
-["253","359","0-1","4.5","生存的荒野上","0","0","253","359","500","0","true","黑体","0"]
-["133","333","0-1","3","为了寻找“美丽之物”而纵横驰骋","0","0","133","333","500","0","true","黑体","0"]
-["133","333","1-1","1.5","为了寻找“美丽之物”而纵横驰骋","0","0","133","333","500","0","true","黑体","0"]
-["133","333","1-0","1.1","为了寻找“美丽之物”而纵横驰骋","0","0","0","333","1100","0","true","黑体","0"]
-["180","325","1-0","4.5","往没有尽头的地平线","0","0","180","205","4500","0","true","黑体","0"]
-["180","325","1-0","4.5"," 旅行而去的","0","0","180","205","4500","0","true","黑体","0"]
-["180","325","1-0","4.5"," 你的睡脸","0","0","180","205","4500","0","true","黑体","0"]
-["180","325","1-0","4.5"," 比任何东西","0","0","180","205","4500","0","true","黑体","0"]
-["180","325","1-0","4.5"," 都要更加美丽","0","0","180","205","4500","0","true","黑体","0"]
-["114","93","0.2-0.2","4.5","君の","0","0","114","93","500","0","false","黑体","0"]
-["106","93","0.2-0.2","4.5","君の","0","0","106","93","500","0","false","黑体","0"]
-["110","97","0.2-0.2","4.5","君の","0","0","110","97","500","0","false","黑体","0"]
-["110","89","0.2-0.2","4.5","君の","0","0","110","89","500","0","false","黑体","0"]
-["112","91","0.2-0.2","4.5","君の","0","0","112","91","500","0","false","黑体","0"]
-["112","95","0.2-0.2","4.5","君の","0","0","112","95","500","0","false","黑体","0"]
-["108","91","0.2-0.2","4.5","君の","0","0","108","91","500","0","false","黑体","0"]
-["108","95","0.2-0.2","4.5","君の","0","0","108","95","500","0","false","黑体","0"]
-["114","96","1-1","4.5","君","0","0","114","96","500","0","false","黑体","0"]
-["160","96","1-1","4.5","の","0","0","160","96","500","0","false","黑体","0"]
-["1","68","1-1","0.5","♪","0","0","99","211","500","0","true","宋体","0"]
-["88","216","1-1","10","大","330","0","88","216","500","0","true","黑体","0"]
-["88","216","0-1","0.8","大","330","0","88","216","500","0","true","黑体","0"]
-["88","216","1-1","10","大","330","0","88","216","500","0","true","黑体","0"]
-["26","1","1-1","0.5","♬","0","0","125","194","500","0","true","宋体","0"]
-["125","194","1-1","10","好","335","0","125","194","500","0","true","黑体","0"]
-["125","194","0-1","0.8","好","335","0","125","194","500","0","true","黑体","0"]
-["125","194","1-1","10","好","335","0","125","194","500","0","true","黑体","0"]
-["107","4","1-1","0.5","♩","0","0","166","175","500","0","true","宋体","0"]
-["166","175","1-1","10","き","340","0","166","175","500","0","true","黑体","0"]
-["166","175","0-1","0.8","き","340","0","166","175","500","0","true","黑体","0"]
-["166","175","1-1","10","き","340","0","166","175","500","0","true","黑体","0"]
-["168","3","1-1","0.5","♫","0","0","210","162","500","0","true","宋体","0"]
-["210","162","1-1","10","な","345","0","210","162","500","0","true","黑体","0"]
-["210","162","0-1","0.8","な","345","0","210","162","500","0","true","黑体","0"]
-["210","162","1-1","10","な","345","0","210","162","500","0","true","黑体","0"]
-["247","0","1-1","0.5","♭","0","0","255","153","500","0","true","宋体","0"]
-["255","153","1-1","10","こ","350","0","255","153","500","0","true","黑体","0"]
-["255","153","0-1","0.8","こ","350","0","255","153","500","0","true","黑体","0"]
-["255","153","1-1","10","こ","350","0","255","153","500","0","true","黑体","0"]
-["316","0","1-1","0.5","♪","0","0","306","155","500","0","true","宋体","0"]
-["306","155","1-1","10","の","0","0","306","155","500","0","true","黑体","0"]
-["306","155","0-1","0.8","の","0","0","306","155","500","0","true","黑体","0"]
-["306","155","1-1","10","の","0","0","306","155","500","0","true","黑体","0"]
-["394","0","1-1","0.5","♬","0","0","352","193","500","0","true","宋体","0"]
-["270","194","1-1","10","旋律(Mélodie)","0","0","270","194","500","0","true","黑体","0"]
-["270","194","0-1","0.8","旋律(Mélodie)","0","0","270","194","500","0","true","黑体","0"]
-["270","194","1-1","10","旋律(Mélodie)","0","0","270","194","500","0","true","黑体","0"]
-["11","139","1-1","10","████","0","0","11","139","500","0","false","黑体","0"]
-["11","139","1-1","10"," ███","0","0","11","139","500","0","false","黑体","0"]
-["134","334","0-1","3","你最喜欢的这段旋律(Mélodie)","0","0","134","334","500","0","true","黑体","0"]
-["134","334","1-1","2.6","你最喜欢的这段旋律(Mélodie)","0","0","134","334","500","0","true","黑体","0"]
-["-5","-5","1-1","5","███████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","5"," ██████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","5","1-1","5","███████","0","0","-5","5","500","0","false","MS UI Gothic","0"]
-["-5","5","1-1","5"," ██████","0","0","-5","5","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","5","███████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","5"," ██████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","5","███████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","5"," ██████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","5","███████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","5"," ██████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","5","███████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","5"," ██████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","5","███████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","5"," ██████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","5","███████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","5"," ██████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","5","███████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","5"," ██████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","5","███████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","5"," ██████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","5","███████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","5"," ██████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-10","134","1-1","5","██","320","0","-10","134","500","0","false","黑体","0"]
-["16","114","1-1","5","██","322","0","16","114","500","0","false","黑体","0"]
-["39","97","1-1","5","██","326","0","39","97","500","0","false","黑体","0"]
-["60","83","1-1","5","██","331","0","60","83","500","0","false","黑体","0"]
-["86","69","1-1","5","██","335","0","86","69","500","0","false","黑体","0"]
-["113","57","1-1","5","██","339","0","113","57","500","0","false","黑体","0"]
-["137","48","1-1","5","██","343","0","137","48","500","0","false","黑体","0"]
-["164","40","1-1","5","██","348","0","164","40","500","0","false","黑体","0"]
-["192","34","1-1","5","██","351","0","192","34","500","0","false","黑体","0"]
-["221","30","1-1","5","██","355","0","221","30","500","0","false","黑体","0"]
-["247","28","1-1","5","██","358","0","247","28","500","0","false","黑体","0"]
-["274","27","1-1","5","██","2","0","274","27","500","0","false","黑体","0"]
-["301","28","1-1","5","██","5","0","301","28","500","0","false","黑体","0"]
-["326","30","1-1","5","██","9","0","326","30","500","0","false","黑体","0"]
-["354","34","1-1","5","██","13","0","354","34","500","0","false","黑体","0"]
-["388","41","1-1","5","██","15","0","388","41","500","0","false","宋体","0"]
-["414","48","1-1","5","██","16","0","414","48","500","0","false","宋体","0"]
-["435","54","1-1","5","██","20","0","435","54","500","0","false","黑体","0"]
-["458","62","1-1","5","██","24","0","458","62","500","0","false","黑体","0"]
-["475","69","1-1","5","██","27","0","475","69","500","0","false","黑体","0"]
-["388","41","1-1","5"," ██","15","0","388","41","500","0","false","宋体","0"]
-["414","48","1-1","5"," ██","16","0","414","48","500","0","false","宋体","0"]
-["435","54","1-1","5"," ██","20","0","435","54","500","0","false","黑体","0"]
-["458","62","1-1","5"," ██","24","0","458","62","500","0","false","黑体","0"]
-["475","69","1-1","5"," ██","27","0","475","69","500","0","false","黑体","0"]
-["-10","134","1-1","5"," ██","320","0","-10","134","500","0","false","黑体","0"]
-["16","114","1-1","5"," ██","322","0","16","114","500","0","false","黑体","0"]
-["39","97","1-1","5"," ██","326","0","39","97","500","0","false","黑体","0"]
-["60","83","1-1","5"," ██","331","0","60","83","500","0","false","黑体","0"]
-["86","69","1-1","5"," ██","335","0","86","69","500","0","false","黑体","0"]
-["113","57","1-1","5"," ██","339","0","113","57","500","0","false","黑体","0"]
-["137","48","1-1","5"," ██","343","0","137","48","500","0","false","黑体","0"]
-["164","40","1-1","5"," ██","348","0","164","40","500","0","false","黑体","0"]
-["192","34","1-1","5"," ██","351","0","192","34","500","0","false","黑体","0"]
-["221","30","1-1","5"," ██","355","0","221","30","500","0","false","黑体","0"]
-["247","28","1-1","5"," ██","358","0","247","28","500","0","false","黑体","0"]
-["274","27","1-1","5"," ██","2","0","274","27","500","0","false","黑体","0"]
-["301","28","1-1","5"," ██","10","0","301","28","500","0","false","黑体","0"]
-["326","30","1-1","5"," ██","9","0","326","30","500","0","false","黑体","0"]
-["354","34","1-1","5"," ██","13","0","354","34","500","0","false","黑体","0"]
-["7","122","1-1","5","█","320","0","7","122","500","0","false","黑体","0"]
-["-10","152","1-1","5","██","320","0","-10","152","500","0","false","黑体","0"]
-["14","133","1-1","5","██","322","0","14","133","500","0","false","黑体","0"]
-["36","116","1-1","5","██","325","0","36","116","500","0","false","黑体","0"]
-["59","100","1-1","5","██","330","0","59","100","500","0","false","黑体","0"]
-["86","85","1-1","5","██","333","0","86","85","500","0","false","黑体","0"]
-["109","74","1-1","5","██","337","0","109","74","500","0","false","黑体","0"]
-["133","64","1-1","5","██","341","0","133","64","500","0","false","黑体","0"]
-["162","54","1-1","5","██","345","0","162","54","500","0","false","黑体","0"]
-["188","47","1-1","5","██","349","0","188","47","500","0","false","黑体","0"]
-["217","41","1-1","5","██","355","0","217","41","500","0","false","黑体","0"]
-["246","39","1-1","5","██","0","0","246","39","500","0","false","黑体","0"]
-["274","38","1-1","5","██","2","0","274","38","500","0","false","黑体","0"]
-["302","39","1-1","5","██","6","0","302","39","500","0","false","黑体","0"]
-["329","42","1-1","5","██","10","0","329","42","500","0","false","黑体","0"]
-["357","47","1-1","5","██","13","0","357","47","500","0","false","黑体","0"]
-["-10","152","1-1","5"," ██","320","0","-10","152","500","0","false","黑体","0"]
-["14","133","1-1","5"," ██","322","0","14","133","500","0","false","黑体","0"]
-["36","116","1-1","5"," ██","325","0","36","116","500","0","false","黑体","0"]
-["59","100","1-1","5"," ██","330","0","59","100","500","0","false","黑体","0"]
-["86","85","1-1","5"," ██","333","0","86","85","500","0","false","黑体","0"]
-["109","74","1-1","5"," ██","337","0","109","74","500","0","false","黑体","0"]
-["133","64","1-1","5"," ██","341","0","133","64","500","0","false","黑体","0"]
-["162","54","1-1","5"," ██","345","0","162","54","500","0","false","黑体","0"]
-["188","47","1-1","5"," ██","349","0","188","47","500","0","false","黑体","0"]
-["217","41","1-1","5"," ██","355","0","217","41","500","0","false","黑体","0"]
-["246","39","1-1","5"," ██","0","0","246","39","500","0","false","黑体","0"]
-["274","38","1-1","5"," ██","2","0","274","38","500","0","false","黑体","0"]
-["302","39","1-1","5"," ██","6","0","302","39","500","0","false","黑体","0"]
-["329","42","1-1","5"," ██","10","0","329","42","500","0","false","黑体","0"]
-["357","47","1-1","5"," ██","13","0","357","47","500","0","false","黑体","0"]
-["389","54","1-1","5","██","15","0","389","54","500","0","false","黑体","0"]
-["416","61","1-1","5","██","19","0","416","61","500","0","false","黑体","0"]
-["442","69","1-1","5","██","22","0","442","69","500","0","false","黑体","0"]
-["464","77","1-1","5","██","25","0","464","77","500","0","false","黑体","0"]
-["490","88","1-1","5","██","28","0","490","88","500","0","false","黑体","0"]
-["389","54","1-1","5"," ██","15","0","389","54","500","0","false","黑体","0"]
-["416","61","1-1","5"," ██","19","0","416","61","500","0","false","黑体","0"]
-["442","69","1-1","5"," ██","22","0","442","69","500","0","false","黑体","0"]
-["464","77","1-1","5"," ██","25","0","464","77","500","0","false","黑体","0"]
-["490","88","1-1","5"," █","28","0","490","88","500","0","false","黑体","0"]
-["-10","169","1-1","5","██","320","0","-10","169","500","0","false","黑体","0"]
-["13","150","1-1","5","██","322","0","13","150","500","0","false","黑体","0"]
-["34","134","1-1","5","██","325","0","34","134","500","0","false","黑体","0"]
-["59","117","1-1","5","██","328","0","59","117","500","0","false","黑体","0"]
-["76","107","1-1","5","██","331","0","76","107","500","0","false","黑体","0"]
-["103","92","1-1","5","██","335","0","103","92","500","0","false","黑体","0"]
-["132","79","1-1","5","██","339","0","132","79","500","0","false","黑体","0"]
-["159","69","1-1","5","██","342","0","159","69","500","0","false","黑体","0"]
-["187","60","1-1","5","██","347","0","187","60","500","0","false","黑体","0"]
-["212","54","1-1","5","██","354","0","212","54","500","0","false","黑体","0"]
-["239","51","1-1","5","██","0","0","239","51","500","0","false","黑体","0"]
-["263","51","1-1","5","██","2","0","263","51","500","0","false","黑体","0"]
-["288","52","1-1","5","██","3","0","288","52","500","0","false","黑体","0"]
-["316","54","1-1","5","██","7","0","316","54","500","0","false","黑体","0"]
-["347","58","1-1","5","██","12","0","347","58","500","0","false","黑体","0"]
-["371","63","1-1","5","██","15","0","371","63","500","0","false","黑体","0"]
-["-10","169","1-1","5"," ██","320","0","-10","169","500","0","false","黑体","0"]
-["13","150","1-1","5"," ██","322","0","13","150","500","0","false","黑体","0"]
-["34","134","1-1","5"," ██","325","0","34","134","500","0","false","黑体","0"]
-["59","117","1-1","5"," ██","328","0","59","117","500","0","false","黑体","0"]
-["76","107","1-1","5"," ██","331","0","76","107","500","0","false","黑体","0"]
-["103","92","1-1","5"," ██","335","0","103","92","500","0","false","黑体","0"]
-["132","79","1-1","5"," ██","339","0","132","79","500","0","false","黑体","0"]
-["159","69","1-1","5"," ██","342","0","159","69","500","0","false","黑体","0"]
-["187","60","1-1","5"," ██","347","0","187","60","500","0","false","黑体","0"]
-["212","54","1-1","5"," ██","354","0","212","54","500","0","false","黑体","0"]
-["239","51","1-1","5"," ██","0","0","239","51","500","0","false","黑体","0"]
-["263","51","1-1","5"," ██","2","0","263","51","500","0","false","黑体","0"]
-["288","52","1-1","5"," ██","3","0","288","52","500","0","false","黑体","0"]
-["316","54","1-1","5"," ██","7","0","316","54","500","0","false","黑体","0"]
-["347","58","1-1","5"," ██","12","0","347","58","500","0","false","黑体","0"]
-["371","63","1-1","5"," █","15","0","371","63","500","0","false","黑体","0"]
-["400","70","1-1","5","██","19","0","400","70","500","0","false","黑体","0"]
-["426","78","1-1","5","██","21","0","426","78","500","0","false","黑体","0"]
-["451","87","1-1","5","██","24","0","451","87","500","0","false","黑体","0"]
-["477","98","1-1","5","██","26","0","477","98","500","0","false","黑体","0"]
-["400","70","1-1","5"," ██","19","0","400","70","500","0","false","黑体","0"]
-["426","78","1-1","5"," ██","21","0","426","78","500","0","false","黑体","0"]
-["451","87","1-1","5"," ██","24","0","451","87","500","0","false","黑体","0"]
-["477","98","1-1","5"," ██","26","0","477","98","500","0","false","黑体","0"]
-["-10","187","1-1","5","██","320","0","-10","187","500","0","false","黑体","0"]
-["13","168","1-1","5","██","322","0","13","168","500","0","false","黑体","0"]
-["37","151","1-1","5","██","324","0","37","151","500","0","false","黑体","0"]
-["62","133","1-1","5","██","327","0","62","133","500","0","false","黑体","0"]
-["86","118","1-1","5","██","331","0","86","118","500","0","false","黑体","0"]
-["113","104","1-1","5","██","334","0","113","104","500","0","false","黑体","0"]
-["142","91","1-1","5","██","339","0","142","91","500","0","false","黑体","0"]
-["171","80","1-1","5","██","343","0","171","80","500","0","false","黑体","0"]
-["201","71","1-1","5","██","349","0","201","71","500","0","false","黑体","0"]
-["229","65","1-1","5","██","356","0","229","65","500","0","false","黑体","0"]
-["257","63","1-1","5","██","2","0","257","63","500","0","false","黑体","0"]
-["289","64","1-1","5","██","6","0","289","64","500","0","false","黑体","0"]
-["319","67","1-1","5","██","8","0","319","67","500","0","false","黑体","0"]
-["345","70","1-1","5","██","12","0","345","70","500","0","false","黑体","0"]
-["373","76","1-1","5","██","16","0","373","76","500","0","false","黑体","0"]
-["-10","187","1-1","5"," ██","320","0","-10","187","500","0","false","黑体","0"]
-["13","168","1-1","5"," ██","322","0","13","168","500","0","false","黑体","0"]
-["37","151","1-1","5"," ██","324","0","37","151","500","0","false","黑体","0"]
-["62","133","1-1","5"," ██","327","0","62","133","500","0","false","黑体","0"]
-["86","118","1-1","5"," ██","331","0","86","118","500","0","false","黑体","0"]
-["113","104","1-1","5"," ██","334","0","113","104","500","0","false","黑体","0"]
-["142","91","1-1","5"," ██","339","0","142","91","500","0","false","黑体","0"]
-["171","80","1-1","5"," ██","343","0","171","80","500","0","false","黑体","0"]
-["201","71","1-1","5"," ██","349","0","201","71","500","0","false","黑体","0"]
-["229","65","1-1","5"," ██","356","0","229","65","500","0","false","黑体","0"]
-["257","63","1-1","5"," ██","2","0","257","63","500","0","false","黑体","0"]
-["289","64","1-1","5"," ██","6","0","289","64","500","0","false","黑体","0"]
-["319","67","1-1","5"," ██","8","0","319","67","500","0","false","黑体","0"]
-["345","70","1-1","5"," ██","12","0","345","70","500","0","false","黑体","0"]
-["373","76","1-1","5"," ██","16","0","373","76","500","0","false","黑体","0"]
-["408","86","1-1","5","██","19","0","408","86","500","0","false","黑体","0"]
-["436","95","1-1","5","██","22","0","436","95","500","0","false","黑体","0"]
-["459","104","1-1","5","██","24","0","459","104","500","0","false","黑体","0"]
-["483","114","1-1","5","██","25","0","483","114","500","0","false","黑体","0"]
-["408","86","1-1","5"," ██","19","0","408","86","500","0","false","黑体","0"]
-["436","95","1-1","5"," ██","22","0","436","95","500","0","false","黑体","0"]
-["459","104","1-1","5"," ██","24","0","459","104","500","0","false","黑体","0"]
-["483","114","1-1","5"," ██","25","0","483","114","500","0","false","黑体","0"]
-["-10","205","1-1","5","██","320","0","-10","205","500","0","false","黑体","0"]
-["13","186","1-1","5","██","321","0","13","186","500","0","false","黑体","0"]
-["36","168","1-1","5","██","324","0","36","168","500","0","false","黑体","0"]
-["61","150","1-1","5","██","327","0","61","150","500","0","false","黑体","0"]
-["85","135","1-1","5","██","330","0","85","135","500","0","false","黑体","0"]
-["111","120","1-1","5","██","334","0","111","120","500","0","false","黑体","0"]
-["138","107","1-1","5","██","338","0","138","107","500","0","false","黑体","0"]
-["166","96","1-1","5","██","341","0","166","96","500","0","false","黑体","0"]
-["193","87","1-1","5","██","348","0","193","87","500","0","false","黑体","0"]
-["222","81","1-1","5","██","354","0","222","81","500","0","false","黑体","0"]
-["250","78","1-1","5","██","0","0","250","78","500","0","false","黑体","0"]
-["276","78","1-1","5","██","4","0","276","78","500","0","false","黑体","0"]
-["306","80","1-1","5","██","7","0","306","80","500","0","false","黑体","0"]
-["333","83","1-1","5","██","10","0","333","83","500","0","false","黑体","0"]
-["364","89","1-1","5","██","12","0","364","89","500","0","false","黑体","0"]
-["386","95","1-1","5","██","13","0","386","95","500","0","false","黑体","0"]
-["-10","205","1-1","5"," ██","320","0","-10","205","500","0","false","黑体","0"]
-["13","186","1-1","5"," ██","321","0","13","186","500","0","false","黑体","0"]
-["36","168","1-1","5"," ██","324","0","36","168","500","0","false","黑体","0"]
-["61","150","1-1","5"," ██","327","0","61","150","500","0","false","黑体","0"]
-["85","135","1-1","5"," ██","330","0","85","135","500","0","false","黑体","0"]
-["111","120","1-1","5"," ██","334","0","111","120","500","0","false","黑体","0"]
-["138","107","1-1","5"," ██","338","0","138","107","500","0","false","黑体","0"]
-["166","96","1-1","5"," ██","341","0","166","96","500","0","false","黑体","0"]
-["193","87","1-1","5"," ██","348","0","193","87","500","0","false","黑体","0"]
-["222","81","1-1","5"," ██","354","0","222","81","500","0","false","黑体","0"]
-["250","78","1-1","5"," ██","0","0","250","78","500","0","false","黑体","0"]
-["276","78","1-1","5"," ██","4","0","276","78","500","0","false","黑体","0"]
-["306","80","1-1","5"," ██","7","0","306","80","500","0","false","黑体","0"]
-["333","83","1-1","5"," ██","10","0","333","83","500","0","false","黑体","0"]
-["364","89","1-1","5"," ██","12","0","364","89","500","0","false","黑体","0"]
-["386","95","1-1","5"," █","13","0","386","95","500","0","false","黑体","0"]
-["415","101","1-1","5","██","19","0","415","101","500","0","false","黑体","0"]
-["441","109","1-1","5","██","24","0","441","109","500","0","false","黑体","0"]
-["466","119","1-1","5","██","25","0","466","119","500","0","false","黑体","0"]
-["489","129","1-1","5","██","27","0","489","129","500","0","false","黑体","0"]
-["415","101","1-1","5"," ██","19","0","415","101","500","0","false","黑体","0"]
-["441","109","1-1","5"," ██","24","0","441","109","500","0","false","黑体","0"]
-["466","119","1-1","5"," ██","25","0","466","119","500","0","false","黑体","0"]
-["489","129","1-1","5"," ██","27","0","489","129","500","0","false","黑体","0"]
-["-10","224","1-1","5","██","320","0","-10","224","500","0","false","黑体","0"]
-["14","204","1-1","5","██","321","0","14","204","500","0","false","黑体","0"]
-["37","186","1-1","5","██","324","0","37","186","500","0","false","黑体","0"]
-["60","169","1-1","5","██","326","0","60","169","500","0","false","黑体","0"]
-["81","155","1-1","5","██","328","0","81","155","500","0","false","黑体","0"]
-["106","140","1-1","5","██","332","0","106","140","500","0","false","黑体","0"]
-["132","127","1-1","5","██","335","0","132","127","500","0","false","黑体","0"]
-["160","114","1-1","5","██","339","0","160","114","500","0","false","黑体","0"]
-["189","103","1-1","5","██","346","0","189","103","500","0","false","黑体","0"]
-["217","96","1-1","5","██","352","0","217","96","500","0","false","黑体","0"]
-["247","92","1-1","5","██","358","0","247","92","500","0","false","黑体","0"]
-["277","91","1-1","5","██","3","0","277","91","500","0","false","黑体","0"]
-["306","92","1-1","5","██","7","0","306","92","500","0","false","黑体","0"]
-["334","95","1-1","5","██","9","0","334","95","500","0","false","黑体","0"]
-["364","100","1-1","5","██","12","0","364","100","500","0","false","黑体","0"]
-["390","106","1-1","5","██","13","0","390","106","500","0","false","黑体","0"]
-["-10","224","1-1","5"," ██","320","0","-10","224","500","0","false","黑体","0"]
-["14","204","1-1","5"," ██","321","0","14","204","500","0","false","黑体","0"]
-["37","186","1-1","5"," ██","324","0","37","186","500","0","false","黑体","0"]
-["60","169","1-1","5"," ██","326","0","60","169","500","0","false","黑体","0"]
-["81","155","1-1","5"," ██","328","0","81","155","500","0","false","黑体","0"]
-["106","140","1-1","5"," ██","332","0","106","140","500","0","false","黑体","0"]
-["132","127","1-1","5"," ██","335","0","132","127","500","0","false","黑体","0"]
-["160","114","1-1","5"," ██","339","0","160","114","500","0","false","黑体","0"]
-["189","103","1-1","5"," ██","346","0","189","103","500","0","false","黑体","0"]
-["217","96","1-1","5"," ██","352","0","217","96","500","0","false","黑体","0"]
-["247","92","1-1","5"," ██","358","0","247","92","500","0","false","黑体","0"]
-["277","91","1-1","5"," ██","3","0","277","91","500","0","false","黑体","0"]
-["306","92","1-1","5"," ██","7","0","306","92","500","0","false","黑体","0"]
-["334","95","1-1","5"," ██","9","0","334","95","500","0","false","黑体","0"]
-["364","100","1-1","5"," ██","12","0","364","100","500","0","false","黑体","0"]
-["390","106","1-1","5"," █","13","0","390","106","500","0","false","黑体","0"]
-["416","112","1-1","5","██","20","0","416","112","500","0","false","黑体","0"]
-["442","121","1-1","5","██","23","0","442","121","500","0","false","黑体","0"]
-["468","132","1-1","5","██","25","0","468","132","500","0","false","黑体","0"]
-["494","144","1-1","5","██","27","0","494","144","500","0","false","黑体","0"]
-["416","112","1-1","5"," ██","20","0","416","112","500","0","false","黑体","0"]
-["442","121","1-1","5"," ██","23","0","442","121","500","0","false","黑体","0"]
-["468","132","1-1","5"," ██","25","0","468","132","500","0","false","黑体","0"]
-["494","144","1-1","5"," ██","27","0","494","144","500","0","false","黑体","0"]
-["-10","243","1-1","5","██","320","0","-10","243","500","0","false","黑体","0"]
-["12","225","1-1","5","██","321","0","12","225","500","0","false","黑体","0"]
-["32","209","1-1","5","██","323","0","32","209","500","0","false","黑体","0"]
-["52","193","1-1","5","██","325","0","52","193","500","0","false","黑体","0"]
-["74","177","1-1","5","██","327","0","74","177","500","0","false","黑体","0"]
-["97","162","1-1","5","██","330","0","97","162","500","0","false","黑体","0"]
-["119","148","1-1","5","██","335","0","119","148","500","0","false","黑体","0"]
-["143","136","1-1","5","██","337","0","143","136","500","0","false","黑体","0"]
-["164","127","1-1","5","██","340","0","164","127","500","0","false","黑体","0"]
-["190","117","1-1","5","██","345","0","190","117","500","0","false","黑体","0"]
-["216","110","1-1","5","██","350","0","216","110","500","0","false","黑体","0"]
-["242","105","1-1","5","██","357","0","242","105","500","0","false","黑体","0"]
-["271","103","1-1","5","██","3","0","271","103","500","0","false","黑体","0"]
-["298","104","1-1","5","██","6","0","298","104","500","0","false","黑体","0"]
-["325","107","1-1","5","██","9","0","325","107","500","0","false","黑体","0"]
-["351","111","1-1","5","██","12","0","351","111","500","0","false","黑体","0"]
-["377","116","1-1","5","██","13","0","377","116","500","0","false","黑体","0"]
-["399","121","1-1","5","██","13","0","399","121","500","0","false","黑体","0"]
-["-10","243","1-1","5"," ██","320","0","-10","243","500","0","false","黑体","0"]
-["12","225","1-1","5"," ██","321","0","12","225","500","0","false","黑体","0"]
-["32","209","1-1","5"," ██","323","0","32","209","500","0","false","黑体","0"]
-["52","193","1-1","5"," ██","325","0","52","193","500","0","false","黑体","0"]
-["74","177","1-1","5"," ██","327","0","74","177","500","0","false","黑体","0"]
-["97","162","1-1","5"," ██","330","0","97","162","500","0","false","黑体","0"]
-["119","148","1-1","5"," ██","335","0","119","148","500","0","false","黑体","0"]
-["143","136","1-1","5"," ██","337","0","143","136","500","0","false","黑体","0"]
-["164","127","1-1","5"," ██","340","0","164","127","500","0","false","黑体","0"]
-["190","117","1-1","5"," ██","345","0","190","117","500","0","false","黑体","0"]
-["216","110","1-1","5"," ██","350","0","216","110","500","0","false","黑体","0"]
-["242","105","1-1","5"," ██","357","0","242","105","500","0","false","黑体","0"]
-["271","103","1-1","5"," ██","3","0","271","103","500","0","false","黑体","0"]
-["298","104","1-1","5"," ██","6","0","298","104","500","0","false","黑体","0"]
-["325","107","1-1","5"," ██","9","0","325","107","500","0","false","黑体","0"]
-["351","111","1-1","5"," ██","12","0","351","111","500","0","false","黑体","0"]
-["377","116","1-1","5"," ██","13","0","377","116","500","0","false","黑体","0"]
-["399","121","1-1","5"," █","13","0","399","121","500","0","false","黑体","0"]
-["422","126","1-1","5","██","20","0","422","126","500","0","false","黑体","0"]
-["448","135","1-1","5","██","23","0","448","135","500","0","false","黑体","0"]
-["473","145","1-1","5","██","25","0","473","145","500","0","false","黑体","0"]
-["499","157","1-1","5","██","27","0","499","157","500","0","false","黑体","0"]
-["422","126","1-1","5"," ██","20","0","422","126","500","0","false","黑体","0"]
-["448","135","1-1","5"," ██","23","0","448","135","500","0","false","黑体","0"]
-["473","145","1-1","5"," ██","25","0","473","145","500","0","false","黑体","0"]
-["499","157","1-1","5"," ██","27","0","499","157","500","0","false","黑体","0"]
-["356","96","1-1","5","●","0","0","356","96","500","0","false","黑体","0"]
-["422","49","1-1","5","●","0","0","422","49","500","0","false","黑体","0"]
-["430","127","1-1","5","●","0","0","430","127","500","0","false","黑体","0"]
-["479","107","1-1","5","●","0","0","479","107","500","0","false","黑体","0"]
-["365","104","1-1","5","●","0","0","365","104","500","0","false","黑体","0"]
-["429","59","1-1","5","●","0","0","429","59","500","0","false","黑体","0"]
-["434","129","1-1","5","●","0","0","434","129","500","0","false","黑体","0"]
-["488","114","1-1","5","●","0","0","488","114","500","0","false","黑体","0"]
-["379","112","1-1","5","●","0","0","379","112","500","0","false","黑体","0"]
-["434","123","1-1","5","●","0","0","434","123","500","0","false","黑体","0"]
-["436","74","1-1","5","●","0","0","436","74","500","0","false","黑体","0"]
-["491","123","1-1","5","●","0","0","491","123","500","0","false","黑体","0"]
-["441","75","1-1","5","●","0","0","441","75","500","0","false","黑体","0"]
-["392","114","1-1","5","●","0","0","392","114","500","0","false","黑体","0"]
-["441","127","1-1","5","●","0","0","441","127","500","0","false","黑体","0"]
-["488","126","1-1","5","●","0","0","488","126","500","0","false","黑体","0"]
-["257","236","1-1","5.5","大","325","0","106","189","500","0","false","黑体","0"]
-["257","236","1-1","5.5","空","330","0","144","164","500","0","false","黑体","0"]
-["257","236","1-1","5.5","へ","335","0","185","147","500","0","false","黑体","0"]
-["257","236","1-1","5.5","と","348","0","227","132","500","0","false","黑体","0"]
-["257","236","1-1","5.5","響","3","0","268","126","500","0","false","黑体","0"]
-["257","236","1-1","5.5","け","10","0","314","129","500","0","false","黑体","0"]
-["257","236","1-1","2.7","口","320","0","110","230","500","0","false","黑体","0"]
-["257","236","1-1","2.7","風","328","0","146","202","500","0","false","黑体","0"]
-["257","236","1-1","2.7","琴","332","0","182","180","500","0","false","黑体","0"]
-["257","236","1-1","2.7","(","340","0","217","165","500","0","false","黑体","0"]
-["257","236","1-1","2.7","H","348","0","238","157","500","0","false","黑体","0"]
-["257","236","1-1","2.7","a","358","0","262","153","500","0","false","黑体","0"]
-["257","236","1-1","2.7","r","4","0","289","154","500","0","false","黑体","0"]
-["257","236","1-1","2.7","m","9","0","312","155","500","0","false","黑体","0"]
-["257","236","1-1","2.7","o","14","0","338","160","500","0","false","黑体","0"]
-["257","236","1-1","2.7","n","18","0","361","167","500","0","false","黑体","0"]
-["257","236","1-1","2.7","i","21","0","382","176","500","0","false","黑体","0"]
-["257","236","1-1","2.7","c","22","0","401","183","500","0","false","黑体","0"]
-["257","236","1-1","2.7","a","23","0","421","194","500","0","false","黑体","0"]
-["257","236","1-1","2.7",")","25","0","439","206","500","0","false","黑体","0"]
-["-5","-5","1-1","10","███████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","-5","1-1","10"," ██████","0","0","-5","-5","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10","███████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","10","1-1","10"," ██████","0","0","-5","10","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10","███████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","32","1-1","10"," ██████","0","0","-5","32","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10","███████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","63","1-1","10"," ██████","0","0","-5","63","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10","███████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","100","1-1","10"," ██████","0","0","-5","100","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10","███████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","124","1-1","10"," ██████/n","0","0","-5","124","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10","███████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","148","1-1","10"," ██████/n","0","0","-5","148","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10","███████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","175","1-1","10"," ██████/n","0","0","-5","175","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10","███████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","201","1-1","10"," ██████/n","0","0","-5","201","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10","███████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","234","1-1","10"," ██████/n/n","0","0","-5","234","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10","███████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-5","275","1-1","10"," ██████/n/n","0","0","-5","275","500","0","false","MS UI Gothic","0"]
-["-10","134","1-1","10","██","320","0","-10","134","500","0","false","黑体","0"]
-["16","114","1-1","10","██","322","0","16","114","500","0","false","黑体","0"]
-["39","97","1-1","10","██","326","0","39","97","500","0","false","黑体","0"]
-["60","83","1-1","10","██","331","0","60","83","500","0","false","黑体","0"]
-["86","69","1-1","10","██","335","0","86","69","500","0","false","黑体","0"]
-["113","57","1-1","10","██","339","0","113","57","500","0","false","黑体","0"]
-["137","48","1-1","10","██","343","0","137","48","500","0","false","黑体","0"]
-["164","40","1-1","10","██","348","0","164","40","500","0","false","黑体","0"]
-["192","34","1-1","10","██","351","0","192","34","500","0","false","黑体","0"]
-["221","30","1-1","10","██","355","0","221","30","500","0","false","黑体","0"]
-["247","28","1-1","10","██","358","0","247","28","500","0","false","黑体","0"]
-["274","27","1-1","10","██","2","0","274","27","500","0","false","黑体","0"]
-["301","28","1-1","10","██","5","0","301","28","500","0","false","黑体","0"]
-["326","30","1-1","10","██","9","0","326","30","500","0","false","黑体","0"]
-["354","34","1-1","10","██","13","0","354","34","500","0","false","黑体","0"]
-["388","41","1-1","10","██","15","0","388","41","500","0","false","宋体","0"]
-["414","48","1-1","10","██","16","0","414","48","500","0","false","宋体","0"]
-["435","54","1-1","10","██","20","0","435","54","500","0","false","黑体","0"]
-["458","62","1-1","10","██","24","0","458","62","500","0","false","黑体","0"]
-["475","69","1-1","10","██","27","0","475","69","500","0","false","黑体","0"]
-["388","41","1-1","10"," ██","15","0","388","41","500","0","false","宋体","0"]
-["414","48","1-1","10"," ██","16","0","414","48","500","0","false","宋体","0"]
-["435","54","1-1","10"," ██","20","0","435","54","500","0","false","黑体","0"]
-["458","62","1-1","10"," ██","24","0","458","62","500","0","false","黑体","0"]
-["475","69","1-1","10"," ██","27","0","475","69","500","0","false","黑体","0"]
-["-10","134","1-1","10"," ██","320","0","-10","134","500","0","false","黑体","0"]
-["16","114","1-1","10"," ██","322","0","16","114","500","0","false","黑体","0"]
-["39","97","1-1","10"," ██","326","0","39","97","500","0","false","黑体","0"]
-["60","83","1-1","10"," ██","331","0","60","83","500","0","false","黑体","0"]
-["86","69","1-1","10"," ██","335","0","86","69","500","0","false","黑体","0"]
-["113","57","1-1","10"," ██","339","0","113","57","500","0","false","黑体","0"]
-["137","48","1-1","10"," ██","343","0","137","48","500","0","false","黑体","0"]
-["164","40","1-1","10"," ██","348","0","164","40","500","0","false","黑体","0"]
-["192","34","1-1","10"," ██","351","0","192","34","500","0","false","黑体","0"]
-["221","30","1-1","10"," ██","355","0","221","30","500","0","false","黑体","0"]
-["247","28","1-1","10"," ██","358","0","247","28","500","0","false","黑体","0"]
-["274","27","1-1","10"," ██","2","0","274","27","500","0","false","黑体","0"]
-["301","28","1-1","10"," ██","5","0","301","28","500","0","false","黑体","0"]
-["326","30","1-1","10"," ██","9","0","326","30","500","0","false","黑体","0"]
-["354","34","1-1","10"," ██","13","0","354","34","500","0","false","黑体","0"]
-["7","122","1-1","10","█","320","0","7","122","500","0","false","黑体","0"]
-["-10","152","1-1","10","██","320","0","-10","152","500","0","false","黑体","0"]
-["14","133","1-1","10","██","322","0","14","133","500","0","false","黑体","0"]
-["36","116","1-1","10","██","325","0","36","116","500","0","false","黑体","0"]
-["59","100","1-1","10","██","330","0","59","100","500","0","false","黑体","0"]
-["86","85","1-1","10","██","333","0","86","85","500","0","false","黑体","0"]
-["109","74","1-1","10","██","337","0","109","74","500","0","false","黑体","0"]
-["133","64","1-1","10","██","341","0","133","64","500","0","false","黑体","0"]
-["162","54","1-1","10","██","345","0","162","54","500","0","false","黑体","0"]
-["188","47","1-1","10","██","349","0","188","47","500","0","false","黑体","0"]
-["217","41","1-1","10","██","355","0","217","41","500","0","false","黑体","0"]
-["246","39","1-1","10","██","0","0","246","39","500","0","false","黑体","0"]
-["274","38","1-1","10","██","2","0","274","38","500","0","false","黑体","0"]
-["302","39","1-1","10","██","6","0","302","39","500","0","false","黑体","0"]
-["329","42","1-1","10","██","10","0","329","42","500","0","false","黑体","0"]
-["357","47","1-1","10","██","13","0","357","47","500","0","false","黑体","0"]
-["-10","152","1-1","10"," ██","320","0","-10","152","500","0","false","黑体","0"]
-["14","133","1-1","10"," ██","322","0","14","133","500","0","false","黑体","0"]
-["36","116","1-1","10"," ██","325","0","36","116","500","0","false","黑体","0"]
-["59","100","1-1","10"," ██","330","0","59","100","500","0","false","黑体","0"]
-["86","85","1-1","10"," ██","333","0","86","85","500","0","false","黑体","0"]
-["109","74","1-1","10"," ██","337","0","109","74","500","0","false","黑体","0"]
-["133","64","1-1","10"," ██","341","0","133","64","500","0","false","黑体","0"]
-["162","54","1-1","10"," ██","345","0","162","54","500","0","false","黑体","0"]
-["188","47","1-1","10"," ██","349","0","188","47","500","0","false","黑体","0"]
-["217","41","1-1","10"," ██","355","0","217","41","500","0","false","黑体","0"]
-["246","39","1-1","10"," ██","0","0","246","39","500","0","false","黑体","0"]
-["274","38","1-1","10"," ██","2","0","274","38","500","0","false","黑体","0"]
-["302","39","1-1","10"," ██","6","0","302","39","500","0","false","黑体","0"]
-["329","42","1-1","10"," ██","10","0","329","42","500","0","false","黑体","0"]
-["357","47","1-1","10"," ██","13","0","357","47","500","0","false","黑体","0"]
-["389","54","1-1","10","██","15","0","389","54","500","0","false","黑体","0"]
-["416","61","1-1","10","██","19","0","416","61","500","0","false","黑体","0"]
-["442","69","1-1","10","██","22","0","442","69","500","0","false","黑体","0"]
-["464","77","1-1","10","██","25","0","464","77","500","0","false","黑体","0"]
-["490","88","1-1","10","██","28","0","490","88","500","0","false","黑体","0"]
-["389","54","1-1","10"," ██","15","0","389","54","500","0","false","黑体","0"]
-["416","61","1-1","10"," ██","19","0","416","61","500","0","false","黑体","0"]
-["442","69","1-1","10"," ██","22","0","442","69","500","0","false","黑体","0"]
-["464","77","1-1","10"," ██","25","0","464","77","500","0","false","黑体","0"]
-["490","88","1-1","10"," █","28","0","490","88","500","0","false","黑体","0"]
-["-10","169","1-1","10","██","320","0","-10","169","500","0","false","黑体","0"]
-["13","150","1-1","10","██","322","0","13","150","500","0","false","黑体","0"]
-["34","134","1-1","10","██","325","0","34","134","500","0","false","黑体","0"]
-["59","117","1-1","10","██","328","0","59","117","500","0","false","黑体","0"]
-["76","107","1-1","10","██","331","0","76","107","500","0","false","黑体","0"]
-["103","92","1-1","10","██","335","0","103","92","500","0","false","黑体","0"]
-["132","79","1-1","10","██","339","0","132","79","500","0","false","黑体","0"]
-["159","69","1-1","10","██","342","0","159","69","500","0","false","黑体","0"]
-["187","60","1-1","10","██","347","0","187","60","500","0","false","黑体","0"]
-["212","54","1-1","10","██","354","0","212","54","500","0","false","黑体","0"]
-["239","51","1-1","10","██","0","0","239","51","500","0","false","黑体","0"]
-["263","51","1-1","10","██","2","0","263","51","500","0","false","黑体","0"]
-["288","52","1-1","10","██","3","0","288","52","500","0","false","黑体","0"]
-["316","54","1-1","10","██","7","0","316","54","500","0","false","黑体","0"]
-["347","58","1-1","10","██","12","0","347","58","500","0","false","黑体","0"]
-["371","63","1-1","10","██","15","0","371","63","500","0","false","黑体","0"]
-["-10","169","1-1","10"," ██","320","0","-10","169","500","0","false","黑体","0"]
-["13","150","1-1","10"," ██","322","0","13","150","500","0","false","黑体","0"]
-["34","134","1-1","10"," ██","325","0","34","134","500","0","false","黑体","0"]
-["59","117","1-1","10"," ██","328","0","59","117","500","0","false","黑体","0"]
-["76","107","1-1","10"," ██","331","0","76","107","500","0","false","黑体","0"]
-["103","92","1-1","10"," ██","335","0","103","92","500","0","false","黑体","0"]
-["132","79","1-1","10"," ██","339","0","132","79","500","0","false","黑体","0"]
-["159","69","1-1","10"," ██","342","0","159","69","500","0","false","黑体","0"]
-["187","60","1-1","10"," ██","347","0","187","60","500","0","false","黑体","0"]
-["212","54","1-1","10"," ██","354","0","212","54","500","0","false","黑体","0"]
-["239","51","1-1","10"," ██","0","0","239","51","500","0","false","黑体","0"]
-["263","51","1-1","10"," ██","2","0","263","51","500","0","false","黑体","0"]
-["288","52","1-1","10"," ██","3","0","288","52","500","0","false","黑体","0"]
-["316","54","1-1","10"," ██","7","0","316","54","500","0","false","黑体","0"]
-["347","58","1-1","10"," ██","12","0","347","58","500","0","false","黑体","0"]
-["371","63","1-1","10"," █","15","0","371","63","500","0","false","黑体","0"]
-["400","70","1-1","10","██","19","0","400","70","500","0","false","黑体","0"]
-["426","78","1-1","10","██","21","0","426","78","500","0","false","黑体","0"]
-["451","87","1-1","10","██","24","0","451","87","500","0","false","黑体","0"]
-["477","98","1-1","10","██","26","0","477","98","500","0","false","黑体","0"]
-["400","70","1-1","10"," ██","19","0","400","70","500","0","false","黑体","0"]
-["426","78","1-1","10"," ██","21","0","426","78","500","0","false","黑体","0"]
-["451","87","1-1","10"," ██","24","0","451","87","500","0","false","黑体","0"]
-["477","98","1-1","10"," ██","26","0","477","98","500","0","false","黑体","0"]
-["-10","187","1-1","10","██","320","0","-10","187","500","0","false","黑体","0"]
-["13","168","1-1","10","██","322","0","13","168","500","0","false","黑体","0"]
-["37","151","1-1","10","██","324","0","37","151","500","0","false","黑体","0"]
-["62","133","1-1","10","██","327","0","62","133","500","0","false","黑体","0"]
-["86","118","1-1","10","██","331","0","86","118","500","0","false","黑体","0"]
-["113","104","1-1","10","██","334","0","113","104","500","0","false","黑体","0"]
-["142","91","1-1","10","██","339","0","142","91","500","0","false","黑体","0"]
-["171","80","1-1","10","██","343","0","171","80","500","0","false","黑体","0"]
-["201","71","1-1","10","██","349","0","201","71","500","0","false","黑体","0"]
-["229","65","1-1","10","██","356","0","229","65","500","0","false","黑体","0"]
-["257","63","1-1","10","██","2","0","257","63","500","0","false","黑体","0"]
-["289","64","1-1","10","██","6","0","289","64","500","0","false","黑体","0"]
-["319","67","1-1","10","██","8","0","319","67","500","0","false","黑体","0"]
-["345","70","1-1","10","██","12","0","345","70","500","0","false","黑体","0"]
-["373","76","1-1","10","██","16","0","373","76","500","0","false","黑体","0"]
-["-10","187","1-1","10"," ██","320","0","-10","187","500","0","false","黑体","0"]
-["13","168","1-1","10"," ██","322","0","13","168","500","0","false","黑体","0"]
-["37","151","1-1","10"," ██","324","0","37","151","500","0","false","黑体","0"]
-["62","133","1-1","10"," ██","327","0","62","133","500","0","false","黑体","0"]
-["86","118","1-1","10"," ██","331","0","86","118","500","0","false","黑体","0"]
-["113","104","1-1","10"," ██","334","0","113","104","500","0","false","黑体","0"]
-["142","91","1-1","10"," ██","339","0","142","91","500","0","false","黑体","0"]
-["171","80","1-1","10"," ██","343","0","171","80","500","0","false","黑体","0"]
-["201","71","1-1","10"," ██","349","0","201","71","500","0","false","黑体","0"]
-["229","65","1-1","10"," ██","356","0","229","65","500","0","false","黑体","0"]
-["257","63","1-1","10"," ██","2","0","257","63","500","0","false","黑体","0"]
-["289","64","1-1","10"," ██","6","0","289","64","500","0","false","黑体","0"]
-["319","67","1-1","10"," ██","8","0","319","67","500","0","false","黑体","0"]
-["345","70","1-1","10"," ██","12","0","345","70","500","0","false","黑体","0"]
-["373","76","1-1","10"," ██","16","0","373","76","500","0","false","黑体","0"]
-["408","86","1-1","10","██","19","0","408","86","500","0","false","黑体","0"]
-["436","95","1-1","10","██","22","0","436","95","500","0","false","黑体","0"]
-["459","104","1-1","10","██","24","0","459","104","500","0","false","黑体","0"]
-["483","114","1-1","10","██","25","0","483","114","500","0","false","黑体","0"]
-["408","86","1-1","10"," ██","19","0","408","86","500","0","false","黑体","0"]
-["436","95","1-1","10"," ██","22","0","436","95","500","0","false","黑体","0"]
-["459","104","1-1","10"," ██","24","0","459","104","500","0","false","黑体","0"]
-["483","114","1-1","10"," ██","25","0","483","114","500","0","false","黑体","0"]
-["-10","205","1-1","10","██","320","0","-10","205","500","0","false","黑体","0"]
-["13","186","1-1","10","██","321","0","13","186","500","0","false","黑体","0"]
-["36","168","1-1","10","██","324","0","36","168","500","0","false","黑体","0"]
-["61","150","1-1","10","██","327","0","61","150","500","0","false","黑体","0"]
-["85","135","1-1","10","██","330","0","85","135","500","0","false","黑体","0"]
-["111","120","1-1","10","██","334","0","111","120","500","0","false","黑体","0"]
-["138","107","1-1","10","██","338","0","138","107","500","0","false","黑体","0"]
-["166","96","1-1","10","██","341","0","166","96","500","0","false","黑体","0"]
-["193","87","1-1","10","██","348","0","193","87","500","0","false","黑体","0"]
-["222","81","1-1","10","██","354","0","222","81","500","0","false","黑体","0"]
-["250","78","1-1","10","██","0","0","250","78","500","0","false","黑体","0"]
-["276","78","1-1","10","██","4","0","276","78","500","0","false","黑体","0"]
-["306","80","1-1","10","██","7","0","306","80","500","0","false","黑体","0"]
-["333","83","1-1","10","██","10","0","333","83","500","0","false","黑体","0"]
-["364","89","1-1","10","██","12","0","364","89","500","0","false","黑体","0"]
-["386","95","1-1","10","██","13","0","386","95","500","0","false","黑体","0"]
-["-10","205","1-1","10"," ██","320","0","-10","205","500","0","false","黑体","0"]
-["13","186","1-1","10"," ██","321","0","13","186","500","0","false","黑体","0"]
-["36","168","1-1","10"," ██","324","0","36","168","500","0","false","黑体","0"]
-["61","150","1-1","10"," ██","327","0","61","150","500","0","false","黑体","0"]
-["85","135","1-1","10"," ██","330","0","85","135","500","0","false","黑体","0"]
-["111","120","1-1","10"," ██","334","0","111","120","500","0","false","黑体","0"]
-["138","107","1-1","10"," ██","338","0","138","107","500","0","false","黑体","0"]
-["166","96","1-1","10"," ██","341","0","166","96","500","0","false","黑体","0"]
-["193","87","1-1","10"," ██","348","0","193","87","500","0","false","黑体","0"]
-["222","81","1-1","10"," ██","354","0","222","81","500","0","false","黑体","0"]
-["250","78","1-1","10"," ██","0","0","250","78","500","0","false","黑体","0"]
-["276","78","1-1","10"," ██","4","0","276","78","500","0","false","黑体","0"]
-["306","80","1-1","10"," ██","7","0","306","80","500","0","false","黑体","0"]
-["333","83","1-1","10"," ██","10","0","333","83","500","0","false","黑体","0"]
-["364","89","1-1","10"," ██","12","0","364","89","500","0","false","黑体","0"]
-["386","95","1-1","10"," █","13","0","386","95","500","0","false","黑体","0"]
-["415","101","1-1","10","██","19","0","415","101","500","0","false","黑体","0"]
-["441","109","1-1","10","██","24","0","441","109","500","0","false","黑体","0"]
-["466","119","1-1","10","██","25","0","466","119","500","0","false","黑体","0"]
-["489","129","1-1","10","██","27","0","489","129","500","0","false","黑体","0"]
-["415","101","1-1","10"," ██","19","0","415","101","500","0","false","黑体","0"]
-["441","109","1-1","10"," ██","24","0","441","109","500","0","false","黑体","0"]
-["466","119","1-1","10"," ██","25","0","466","119","500","0","false","黑体","0"]
-["489","129","1-1","10"," ██","27","0","489","129","500","0","false","黑体","0"]
-["-10","224","1-1","10","██","320","0","-10","224","500","0","false","黑体","0"]
-["14","204","1-1","10","██","321","0","14","204","500","0","false","黑体","0"]
-["37","186","1-1","10","██","324","0","37","186","500","0","false","黑体","0"]
-["60","169","1-1","10","██","326","0","60","169","500","0","false","黑体","0"]
-["81","155","1-1","10","██","328","0","81","155","500","0","false","黑体","0"]
-["106","140","1-1","10","██","332","0","106","140","500","0","false","黑体","0"]
-["132","127","1-1","10","██","335","0","132","127","500","0","false","黑体","0"]
-["160","114","1-1","10","██","339","0","160","114","500","0","false","黑体","0"]
-["189","103","1-1","10","██","346","0","189","103","500","0","false","黑体","0"]
-["217","96","1-1","10","██","352","0","217","96","500","0","false","黑体","0"]
-["247","92","1-1","10","██","358","0","247","92","500","0","false","黑体","0"]
-["277","91","1-1","10","██","3","0","277","91","500","0","false","黑体","0"]
-["306","92","1-1","10","██","7","0","306","92","500","0","false","黑体","0"]
-["334","95","1-1","10","██","9","0","334","95","500","0","false","黑体","0"]
-["364","100","1-1","10","██","12","0","364","100","500","0","false","黑体","0"]
-["390","106","1-1","10","██","13","0","390","106","500","0","false","黑体","0"]
-["-10","224","1-1","10"," ██","320","0","-10","224","500","0","false","黑体","0"]
-["14","204","1-1","10"," ██","321","0","14","204","500","0","false","黑体","0"]
-["37","186","1-1","10"," ██","324","0","37","186","500","0","false","黑体","0"]
-["60","169","1-1","10"," ██","326","0","60","169","500","0","false","黑体","0"]
-["81","155","1-1","10"," ██","328","0","81","155","500","0","false","黑体","0"]
-["106","140","1-1","10"," ██","332","0","106","140","500","0","false","黑体","0"]
-["132","127","1-1","10"," ██","335","0","132","127","500","0","false","黑体","0"]
-["160","114","1-1","10"," ██","339","0","160","114","500","0","false","黑体","0"]
-["189","103","1-1","10"," ██","346","0","189","103","500","0","false","黑体","0"]
-["217","96","1-1","10"," ██","352","0","217","96","500","0","false","黑体","0"]
-["247","92","1-1","10"," ██","358","0","247","92","500","0","false","黑体","0"]
-["277","91","1-1","10"," ██","3","0","277","91","500","0","false","黑体","0"]
-["306","92","1-1","10"," ██","7","0","306","92","500","0","false","黑体","0"]
-["334","95","1-1","10"," ██","9","0","334","95","500","0","false","黑体","0"]
-["364","100","1-1","10"," ██","12","0","364","100","500","0","false","黑体","0"]
-["390","106","1-1","10"," █","13","0","390","106","500","0","false","黑体","0"]
-["416","112","1-1","10","██","20","0","416","112","500","0","false","黑体","0"]
-["442","121","1-1","10","██","23","0","442","121","500","0","false","黑体","0"]
-["468","132","1-1","10","██","25","0","468","132","500","0","false","黑体","0"]
-["494","144","1-1","10","██","27","0","494","144","500","0","false","黑体","0"]
-["416","112","1-1","10"," ██","20","0","416","112","500","0","false","黑体","0"]
-["442","121","1-1","10"," ██","23","0","442","121","500","0","false","黑体","0"]
-["468","132","1-1","10"," ██","25","0","468","132","500","0","false","黑体","0"]
-["494","144","1-1","10"," ██","27","0","494","144","500","0","false","黑体","0"]
-["-10","243","1-1","10","██","320","0","-10","243","500","0","false","黑体","0"]
-["12","225","1-1","10","██","321","0","12","225","500","0","false","黑体","0"]
-["32","209","1-1","10","██","323","0","32","209","500","0","false","黑体","0"]
-["52","193","1-1","10","██","325","0","52","193","500","0","false","黑体","0"]
-["74","177","1-1","10","██","327","0","74","177","500","0","false","黑体","0"]
-["97","162","1-1","10","██","330","0","97","162","500","0","false","黑体","0"]
-["119","148","1-1","10","██","335","0","119","148","500","0","false","黑体","0"]
-["143","136","1-1","10","██","337","0","143","136","500","0","false","黑体","0"]
-["164","127","1-1","10","██","340","0","164","127","500","0","false","黑体","0"]
-["190","117","1-1","10","██","345","0","190","117","500","0","false","黑体","0"]
-["216","110","1-1","10","██","350","0","216","110","500","0","false","黑体","0"]
-["242","105","1-1","10","██","357","0","242","105","500","0","false","黑体","0"]
-["271","103","1-1","10","██","3","0","271","103","500","0","false","黑体","0"]
-["298","104","1-1","10","██","6","0","298","104","500","0","false","黑体","0"]
-["325","107","1-1","10","██","9","0","325","107","500","0","false","黑体","0"]
-["351","111","1-1","10","██","12","0","351","111","500","0","false","黑体","0"]
-["377","116","1-1","10","██","13","0","377","116","500","0","false","黑体","0"]
-["399","121","1-1","10","██","13","0","399","121","500","0","false","黑体","0"]
-["-10","243","1-1","10"," ██","320","0","-10","243","500","0","false","黑体","0"]
-["12","225","1-1","10"," ██","321","0","12","225","500","0","false","黑体","0"]
-["32","209","1-1","10"," ██","323","0","32","209","500","0","false","黑体","0"]
-["52","193","1-1","10"," ██","325","0","52","193","500","0","false","黑体","0"]
-["74","177","1-1","10"," ██","327","0","74","177","500","0","false","黑体","0"]
-["97","162","1-1","10"," ██","330","0","97","162","500","0","false","黑体","0"]
-["119","148","1-1","10"," ██","335","0","119","148","500","0","false","黑体","0"]
-["143","136","1-1","10"," ██","337","0","143","136","500","0","false","黑体","0"]
-["164","127","1-1","10"," ██","340","0","164","127","500","0","false","黑体","0"]
-["190","117","1-1","10"," ██","345","0","190","117","500","0","false","黑体","0"]
-["216","110","1-1","10"," ██","350","0","216","110","500","0","false","黑体","0"]
-["242","105","1-1","10"," ██","357","0","242","105","500","0","false","黑体","0"]
-["271","103","1-1","10"," ██","3","0","271","103","500","0","false","黑体","0"]
-["298","104","1-1","10"," ██","6","0","298","104","500","0","false","黑体","0"]
-["325","107","1-1","10"," ██","9","0","325","107","500","0","false","黑体","0"]
-["351","111","1-1","10"," ██","12","0","351","111","500","0","false","黑体","0"]
-["377","116","1-1","10"," ██","13","0","377","116","500","0","false","黑体","0"]
-["399","121","1-1","10"," █","13","0","399","121","500","0","false","黑体","0"]
-["422","126","1-1","10","██","20","0","422","126","500","0","false","黑体","0"]
-["448","135","1-1","10","██","23","0","448","135","500","0","false","黑体","0"]
-["473","145","1-1","10","██","25","0","473","145","500","0","false","黑体","0"]
-["499","157","1-1","10","██","27","0","499","157","500","0","false","黑体","0"]
-["422","126","1-1","10"," ██","20","0","422","126","500","0","false","黑体","0"]
-["448","135","1-1","10"," ██","23","0","448","135","500","0","false","黑体","0"]
-["473","145","1-1","10"," ██","25","0","473","145","500","0","false","黑体","0"]
-["499","157","1-1","10"," ██","27","0","499","157","500","0","false","黑体","0"]
-["356","96","1-1","10","●","0","0","356","96","500","0","false","黑体","0"]
-["422","49","1-1","10","●","0","0","422","49","500","0","false","黑体","0"]
-["430","127","1-1","10","●","0","0","430","127","500","0","false","黑体","0"]
-["479","107","1-1","10","●","0","0","479","107","500","0","false","黑体","0"]
-["365","104","1-1","10","●","0","0","365","104","500","0","false","黑体","0"]
-["429","59","1-1","10","●","0","0","429","59","500","0","false","黑体","0"]
-["434","129","1-1","10","●","0","0","434","129","500","0","false","黑体","0"]
-["488","114","1-1","10","●","0","0","488","114","500","0","false","黑体","0"]
-["379","112","1-1","10","●","0","0","379","112","500","0","false","黑体","0"]
-["434","123","1-1","10","●","0","0","434","123","500","0","false","黑体","0"]
-["436","74","1-1","10","●","0","0","436","74","500","0","false","黑体","0"]
-["491","123","1-1","10","●","0","0","491","123","500","0","false","黑体","0"]
-["441","75","1-1","10","●","0","0","441","75","500","0","false","黑体","0"]
-["392","114","1-1","10","●","0","0","392","114","500","0","false","黑体","0"]
-["441","127","1-1","10","●","0","0","441","127","500","0","false","黑体","0"]
-["488","126","1-1","10","●","0","0","488","126","500","0","false","黑体","0"]
-["340","145","1-0","4.5","○","90","70","340","145","500","0","false","黑体","0"]
-["338","240","1-0","3","天使が抱いた","30","0","338","240","500","0","false","黑体","0"]
-["67","317","1-0","3","たい抱が使天","330","0","67","317","500","0","false","黑体","0"]
-["59","290","1-0","3","たい抱が使天","340","0","59","290","500","0","false","黑体","0"]
-["336","237","1-0","3","天使が抱いた","20","0","336","237","500","0","false","黑体","0"]
-["334","237","1-0","3","天使が抱いた","10","0","334","237","500","0","false","黑体","0"]
-["56","263","1-0","3","たい抱が使天","350","0","56","263","500","0","false","黑体","0"]
-["56","236","1-0","3","たい抱が使天","0","0","56","236","500","0","false","黑体","0"]
-["333","236","1-0","3","天使が抱いた","0","0","333","236","500","0","false","黑体","0"]
-["333","236","1-0","3","天使が抱いた","350","0","333","236","500","0","false","黑体","0"]
-["61","208","1-0","3","たい抱が使天","10","0","61","208","500","0","false","黑体","0"]
-["61","181","1-0","3","たい抱が使天","20","0","61","181","500","0","false","黑体","0"]
-["336","236","1-0","3","天使が抱いた","340","0","336","236","500","0","false","黑体","0"]
-["343","236","1-0","3","天使が抱いた","330","0","343","236","500","0","false","黑体","0"]
-["65","157","1-0","3","たい抱が使天","30","0","65","157","500","0","false","黑体","0"]
-["70","134","1-0","3","たい抱が使天","35","0","70","134","500","0","false","黑体","0"]
-["350","225","1-0","3","天使が抱いた","325","0","350","225","500","0","false","黑体","0"]
-["354","213","1-0","3","天使が抱いた","320","0","354","213","500","0","false","黑体","0"]
-["73","111","1-0","3","たい抱が使天","40","0","73","111","500","0","false","黑体","0"]
-["362","200","1-0","3","天使が抱いた","315","0","362","200","500","0","false","黑体","0"]
-["76","92","1-0","3","たい抱が使天","45","0","76","92","500","0","false","黑体","0"]
-["80","69","1-0","3","たい抱が使天","50","0","80","69","500","0","false","黑体","0"]
-["369","186","1-0","3","天使が抱いた","310","0","369","186","500","0","false","黑体","0"]
-["378","173","1-0","3","天使が抱いた","305","0","378","173","500","0","false","黑体","0"]
-["84","46","1-0","3","たい抱が使天","55","0","84","46","500","0","false","黑体","0"]
-["104","44","1-0","3","たい抱が使天","58","0","104","44","500","0","false","黑体","0"]
-["365","172","1-0","3","天使が抱いた","302","0","365","172","500","0","false","黑体","0"]
-["135","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","130","135","42","0","0","true","MS UI Gothic","0"]
-["404","42","1-1","4.5","███████/n█ █/n█ █/n█ █/n███████/n█ █/n█ █/n█ █/n███████","0","50","404","42","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5","███████████████████████████","0","0","-8","0","0","0","true","MS UI Gothic","0"]
-["-8","0","1-1","4.5"," ██████████████████████████","0","0","-8","0","0","0","false","MS UI Gothic","0"]
-["-8","350","1-1","4.5","███████████████████████████","0","0","-8","350","0","0","true","MS UI Gothic","0"]
-["-8","350","1-1","4.5"," ██████████████████████████","0","0","-8","350","0","0","false","MS UI Gothic","0"]
-["-4","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","0","0","0","true","MS UI Gothic","0"]
-["-4","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","-4","5","0","0","false","MS UI Gothic","0"]
-["519","0","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","0","0","0","true","MS UI Gothic","0"]
-["519","5","1-1","4.5","█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n█/n","0","0","519","5","0","0","false","MS UI Gothic","0"]
-["165","353","0-1","4.5","窓枠の畫布(Toile)","0","0","165","353","500","0","true","黑体","0"]
-["97","180","0-1","0.5","ねぇ…その風景畫(Paysage)","0","0","127","242","500","0","false","黑体","0"]
-["127","242","1-1","2","ねぇ…その風景畫(Paysage)","0","0","127","242","500","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","107","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","147","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","112","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","142","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","117","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","137","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","122","242","2000","0","false","黑体","0"]
-["127","242","1-0","2","ねぇ…その風景畫(Paysage)","0","0","132","242","2000","0","false","黑体","0"]
-["97","180","0-1","0.5","綺麗かしら?","0","0","201","285","500","0","false","黑体","0"]
-["201","285","1-1","2","綺麗かしら?","0","0","201","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","206","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","196","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","211","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","191","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","216","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","186","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","221","285","2000","0","false","黑体","0"]
-["201","285","1-0","2","綺麗かしら?","0","0","181","285","2000","0","false","黑体","0"]
-["119","329","0-1","4.5","在天空中回响的","0","0","119","329","500","0","true","黑体","0"]
-["119","329","0-1","4","/n 口琴的乐声(Harmonica)","0","0","119","329","500","0","true","黑体","0"]
-["123","328","0-1","5.5","天使拥抱着窗沿为框的画布(Toile)","0","0","123","328","500","0","true","黑体","0"]
-["162","321","0-1","2","呐…这幅风景画(Paysage)","0","0","162","321","500","0","true","黑体","0"]
-["237","347","0-1","2","漂亮吗?/n","0","0","237","347","500","0","true","黑体","0"]
-["162","321","1-0","2","呐…这幅风景画(Paysage)","0","0","162","321","500","0","true","黑体","0"]
-["237","347","1-0","2","漂亮吗?/n","0","0","237","347","500","0","true","黑体","0"]
-["253","93","0-0.8","2","わたしは","0","0","153","93","2000","0","false","黑体","0"]
-["153","93","0.8-0","2","わたしは","0","0","53","93","2000","0","false","黑体","0"]
-["203","93","0-0.8","2","/n世界で一番美しい光を見った","0","0","103","93","2000","0","false","黑体","0"]
-["103","93","0.8-0","2","/n世界で一番美しい光を見った","0","0","3","93","2000","0","false","黑体","0"]
-["253","85","0-0.8","2","その花を胸に抱いて","0","0","153","85","2000","0","false","黑体","0"]
-["153","85","0.8-0","2","その花を胸に抱いて","0","0","53","85","2000","0","false","黑体","0"]
-["263","85","0-0.8","2","/nLaurantの分も","0","0","163","85","2000","0","false","黑体","0"]
-["163","85","0.8-0","2","/nLaurantの分も","0","0","63","85","2000","0","false","黑体","0"]
-["273","85","0-0.8","2","/n/n詠い続けよう","0","0","173","85","2000","0","false","黑体","0"]
-["173","85","0.8-0","2","/n/n詠い続けよう","0","0","73","85","2000","0","false","黑体","0"]
-["250","93","0-1","2","わたしは","0","0","150","93","2000","0","true","黑体","0"]
-["150","93","1-0","2","わたしは","0","0","50","93","2000","0","true","黑体","0"]
-["200","93","0-1","2","/n世界で一番美しい光を見った","0","0","100","93","2000","0","true","黑体","0"]
-["100","93","1-0","2","/n世界で一番美しい光を見った","0","0","0","93","2000","0","true","黑体","0"]
-["250","85","0-1","2","その花を胸に抱いて","0","0","150","85","2000","0","true","黑体","0"]
-["150","85","1-0","2","その花を胸に抱いて","0","0","50","85","2000","0","true","黑体","0"]
-["260","85","0-1","2","/nLaurantの分も","0","0","160","85","2000","0","true","黑体","0"]
-["160","85","1-0","2","/nLaurantの分も","0","0","60","85","2000","0","true","黑体","0"]
-["270","85","0-1","2","/n/n詠い続けよう","0","0","170","85","2000","0","true","黑体","0"]
-["170","85","1-0","2","/n/n詠い続けよう","0","0","70","85","2000","0","true","黑体","0"]
-["117","224","0-0.5","2","「其処にロマンは在るのかしら?」","0","0","117","224","500","0","false","黑体","0"]
-["117","224","0.5-0","2","「其処にロマンは在るのかしら?」","0","0","117","224","500","0","false","黑体","0"]
-["121","224","0-0.5","2","「其処にロマンは在るのかしら?」","0","0","121","224","500","0","false","黑体","0"]
-["121","224","0.5-0","2","「其処にロマンは在るのかしら?」","0","0","121","224","500","0","false","黑体","0"]
-["119","222","0-0.5","2","「其処にロマンは在るのかしら?」","0","0","119","222","500","0","false","黑体","0"]
-["119","222","0.5-0","2","「其処にロマンは在るのかしら?」","0","0","119","222","500","0","false","黑体","0"]
-["119","226","0-0.5","2","「其処にロマンは在るのかしら?」","0","0","119","226","500","0","false","黑体","0"]
-["119","226","0.5-0","2","「其処にロマンは在るのかしら?」","0","0","119","226","500","0","false","黑体","0"]
-["119","224","0-1","2","「其処にロマンは在るのかしら?」","0","0","119","224","500","0","true","黑体","0"]
-["119","224","1-0","2","「其処にロマンは在るのかしら?」","0","0","119","224","500","0","true","黑体","0"]
-["234","236","1-1","4.5","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","4.5","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","4.5","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","4.5","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","4.5","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","4.5","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","4.5","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","4.5","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","4.5","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","4.5","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","4.5","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","4.5"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","4.5","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","4.5","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","4.5"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","4.5","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","4.5","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","4.5","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","4.5","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","4.5","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","4.5","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","4.5","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","4.5","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","4.5","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","4.5","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","4.5","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","4.5","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","4.5","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","4.5","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","4.5","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","4.5","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","4.5","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","4.5","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","4.5","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","4.5","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","4.5","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","4.5","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","4.5","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","4.5","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","4.5","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","4.5","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","4.5","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","4.5","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","4.5","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","4.5","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","4.5","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","4.5","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","4.5","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","4.5","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","4.5","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","4.5","█","0","0","289","308","500","0","false","黑体","0"]
-["227","304","1-1","4.5","████","0","0","232","304","4500","0","false","黑体","0"]
-["229","304","1-1","4.5","████","0","0","234","304","4500","0","false","黑体","0"]
-["230","305","1-1","4.5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","4.5",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","4.5",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","4.5",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","4.5","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","4.5","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","4.5","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","4.5","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","4.5","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","4.5","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","4.5","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","4.5","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","4.5","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","4.5","████","0","0","230","346","500","0","false","黑体","0"]
-["224","314","1-1","4.5","█","0","0","228","314","4500","0","false","黑体","0"]
-["226","325","1-1","4.5","█","0","0","229","325","4500","0","false","黑体","0"]
-["287","314","1-1","4.5","█","0","0","291","314","4500","0","false","黑体","0"]
-["284","327","1-1","4.5","█","0","0","287","327","4500","0","false","黑体","0"]
-["233","360","1-1","4.5","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","4.5","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","4.5","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","4.5","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","4.5","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","4.5","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","4.5","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","4.5","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","4.5","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","4.5","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","4.5","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","4.5","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","4.5","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","4.5","███","0","0","243","233","500","0","false","黑体","0"]
-["234","236","1-1","10","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","10","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","10","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","10","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","10","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","10","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","10","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","10","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","10","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","10","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","10","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","10"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","10","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","10","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","10"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","10","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","10","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","10","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","10","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","10","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","10","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","10","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","10","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","10","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","10","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","10","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","10","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","10","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","10","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","10","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","10","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","10","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","10","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","10","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","10","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","10","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","10","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","10","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","10","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","10","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","10","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","10","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","10","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","10","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","10","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","10","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","10","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","10","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","10","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","10","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","10","█","0","0","289","308","500","0","false","黑体","0"]
-["232","304","1-1","5","████","0","0","227","304","4500","0","false","黑体","0"]
-["234","304","1-1","5","████","0","0","229","304","4500","0","false","黑体","0"]
-["239","305","1-1","5","█████","0","0","230","305","4500","0","false","黑体","0"]
-["275","303","1-1","10",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","10",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","10",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","10","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","10","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","10","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","10","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","10","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","10","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","10","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","10","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","10","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","10","████","0","0","230","346","500","0","false","黑体","0"]
-["228","314","1-1","5","█","0","0","224","314","4500","0","false","黑体","0"]
-["229","325","1-1","5","█","0","0","226","325","4500","0","false","黑体","0"]
-["291","314","1-1","5","█","0","0","287","314","4500","0","false","黑体","0"]
-["287","327","1-1","5","█","0","0","284","327","4500","0","false","黑体","0"]
-["233","360","1-1","10","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","10","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","10","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","10","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","10","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","10","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","10","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","10","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","10","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","10","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","10","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","10","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","10","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","10","███","0","0","243","233","500","0","false","黑体","0"]
-["227","304","1-1","5.5","████","0","0","232","304","5500","0","false","黑体","0"]
-["229","304","1-1","5.5","████","0","0","234","304","5500","0","false","黑体","0"]
-["230","305","1-1","5.5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","5.5",")","90","0","275","303","500","0","false","黑体","0"]
-["224","314","1-1","5.5","█","0","0","228","314","5500","0","false","黑体","0"]
-["226","325","1-1","5.5","█","0","0","229","325","5500","0","false","黑体","0"]
-["287","314","1-1","5.5","█","0","0","291","314","5500","0","false","黑体","0"]
-["284","327","1-1","5.5","█","0","0","287","327","5500","0","false","黑体","0"]
-["234","236","1-1","10","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","10","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","10","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","10","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","10","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","10","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","10","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","10","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","10","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","10","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","10","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","10"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","10","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","10","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","10"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","10","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","10","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","10","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","10","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","10","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","10","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","10","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","10","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","10","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","10","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","10","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","10","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","10","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","10","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","10","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","10","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","10","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","10","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","10","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","10","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","10","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","10","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","10","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","10","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","10","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","10","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","10","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","10","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","10","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","10","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","10","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","10","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","10","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","10","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","10","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","10","█","0","0","289","308","500","0","false","黑体","0"]
-["227","304","1-1","5","████","0","0","232","304","4500","0","false","黑体","0"]
-["229","304","1-1","5","████","0","0","234","304","4500","0","false","黑体","0"]
-["230","305","1-1","5","█████","0","0","239","305","4500","0","false","黑体","0"]
-["275","303","1-1","10",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","10",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","10",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","10","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","10","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","10","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","10","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","10","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","10","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","10","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","10","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","10","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","10","████","0","0","230","346","500","0","false","黑体","0"]
-["224","314","1-1","5","█","0","0","228","314","4500","0","false","黑体","0"]
-["226","325","1-1","5","█","0","0","229","325","4500","0","false","黑体","0"]
-["287","314","1-1","5","█","0","0","291","314","4500","0","false","黑体","0"]
-["284","327","1-1","5","█","0","0","287","327","4500","0","false","黑体","0"]
-["233","360","1-1","10","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","10","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","10","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","10","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","10","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","10","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","10","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","10","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","10","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","10","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","10","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","10","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","10","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","10","███","0","0","243","233","500","0","false","黑体","0"]
-["232","304","1-1","5.5","████","0","0","227","304","5500","0","false","黑体","0"]
-["234","304","1-1","5.5","████","0","0","229","304","5500","0","false","黑体","0"]
-["239","305","1-1","5.5","█████","0","0","230","305","5500","0","false","黑体","0"]
-["275","303","1-1","5.5",")","90","0","275","303","500","0","false","黑体","0"]
-["228","314","1-1","5.5","█","0","0","224","314","5500","0","false","黑体","0"]
-["229","325","1-1","5.5","█","0","0","226","325","5500","0","false","黑体","0"]
-["291","314","1-1","5.5","█","0","0","287","314","5500","0","false","黑体","0"]
-["287","327","1-1","5.5","█","0","0","284","327","5500","0","false","黑体","0"]
-["234","236","1-1","3","◆","73","76","234","236","500","0","false","黑体","0"]
-["292","248","1-1","3","◆","286","70","292","248","500","0","false","黑体","0"]
-["294","244","1-1","3","█","9","0","294","244","500","0","true","黑体","0"]
-["193","255","1-1","3","█","346","0","193","255","500","0","true","黑体","0"]
-["222","268","1-1","3","█","59","50","222","268","500","0","true","黑体","0"]
-["293","294","1-1","3","█","300","48","293","294","500","0","true","黑体","0"]
-["228","253","1-1","3","███","0","0","228","253","500","0","false","黑体","0"]
-["232","253","1-1","3","█/n","0","0","232","253","500","0","false","黑体","0"]
-["218","267","1-1","3","█","0","0","218","267","500","0","false","黑体","0"]
-["279","267","1-1","3","█","0","0","279","267","500","0","false","黑体","0"]
-["248","248","1-1","3","██","0","0","248","248","500","0","false","黑体","0"]
-["248","248","1-1","3"," █","0","0","248","248","500","0","false","黑体","0"]
-["224","249","1-1","3","█","0","0","224","249","500","0","false","黑体","0"]
-["228","240","1-1","3","████","0","0","228","240","500","0","false","黑体","0"]
-["228","240","1-1","3"," ████","0","0","228","240","500","0","false","黑体","0"]
-["212","269","1-1","3","█","0","0","212","269","500","0","false","黑体","0"]
-["216","260","1-1","3","█","0","0","216","260","500","0","false","黑体","0"]
-["207","283","1-1","3","█","0","0","207","283","500","0","false","黑体","0"]
-["290","249","1-1","3","█","0","0","290","249","500","0","false","黑体","0"]
-["295","257","1-1","3","█","0","0","295","257","500","0","false","黑体","0"]
-["301","266","1-1","3","█","0","0","301","266","500","0","false","黑体","0"]
-["307","275","1-1","3","█","0","0","307","275","500","0","false","黑体","0"]
-["225","296","1-1","3","█/n","0","0","225","296","500","0","false","黑体","0"]
-["287","290","1-1","3","█","0","0","287","290","500","0","false","黑体","0"]
-["229","293","1-1","3","█","0","0","229","293","500","0","false","黑体","0"]
-["249","256","1-1","3","██","0","0","249","256","500","0","false","黑体","0"]
-["248","256","1-1","3","██","0","0","248","256","500","0","false","黑体","0"]
-["211","298","1-1","3","█","0","0","211","298","500","0","false","黑体","0"]
-["300","293","1-1","3","█","0","0","300","293","500","0","false","黑体","0"]
-["305","283","1-1","3","█","0","0","305","283","500","0","false","黑体","0"]
-["232","247","1-1","3","█","0","0","232","247","500","0","false","黑体","0"]
-["285","246","1-1","3","█","0","0","285","246","500","0","false","黑体","0"]
-["279","244","1-1","3","█","0","0","279","244","500","0","false","黑体","0"]
-["306","280","1-1","3","█","0","0","306","280","500","0","false","黑体","0"]
-["300","267","1-1","3","█","0","0","300","267","500","0","false","黑体","0"]
-["254","267","1-1","3","█","0","0","254","267","500","0","false","黑体","0"]
-["259","267","1-1","3","█","0","0","259","267","500","0","false","黑体","0"]
-["210","295","1-1","3","█","0","0","210","295","500","0","false","黑体","0"]
-["210","308","1-1","3","█","0","0","210","308","500","0","false","黑体","0"]
-["300","306","1-1","3","█","0","0","300","306","500","0","false","黑体","0"]
-["299","308","1-1","3","█","0","0","299","308","500","0","false","黑体","0"]
-["295","311","1-1","3","█","0","0","295","311","500","0","false","黑体","0"]
-["300","321","1-1","3","█","0","0","300","321","500","0","false","黑体","0"]
-["208","316","1-1","3","█","0","0","208","316","500","0","false","黑体","0"]
-["243","236","1-1","3","█","0","0","243","236","500","0","false","黑体","0"]
-["276","235","1-1","3","█","0","0","276","235","500","0","false","黑体","0"]
-["210","293","1-1","3","█","0","0","210","293","500","0","false","黑体","0"]
-["298","302","1-1","3","█","0","0","298","302","500","0","false","黑体","0"]
-["215","302","1-1","3","█","0","0","215","302","500","0","false","黑体","0"]
-["220","311","1-1","3","█","0","0","220","311","500","0","false","黑体","0"]
-["289","308","1-1","3","█","0","0","289","308","500","0","false","黑体","0"]
-["232","304","1-1","3","████","0","0","230","304","500","0","false","黑体","0"]
-["234","304","1-1","3","████","0","0","232","304","500","0","false","黑体","0"]
-["239","305","1-1","3","█████","0","0","237","305","500","0","false","黑体","0"]
-["275","303","1-1","3",")","90","0","275","303","500","0","false","黑体","0"]
-["296","285","1-1","3",")","90","0","296","285","500","0","false","黑体","0"]
-["254","285","1-1","3",")","90","0","254","285","500","0","false","黑体","0"]
-["221","325","1-1","3","█","90","0","221","325","500","0","false","黑体","0"]
-["308","312","1-1","3","█","0","0","308","312","500","0","false","黑体","0"]
-["301","295","1-1","3","█","0","0","301","295","500","0","false","黑体","0"]
-["313","324","1-1","3","█","0","0","313","324","500","0","false","黑体","0"]
-["239","318","1-1","3","███","0","0","239","318","500","0","false","黑体","0"]
-["241","318","1-1","3","███","0","0","241","318","500","0","false","黑体","0"]
-["231","332","1-1","3","████","0","0","231","332","500","0","false","黑体","0"]
-["228","332","1-1","3","████","0","0","228","332","500","0","false","黑体","0"]
-["234","346","1-1","3","████","0","0","234","346","500","0","false","黑体","0"]
-["230","346","1-1","3","████","0","0","230","346","500","0","false","黑体","0"]
-["228","314","1-1","3","█","0","0","226","314","500","0","false","黑体","0"]
-["229","325","1-1","3","█","0","0","227","325","500","0","false","黑体","0"]
-["291","314","1-1","3","█","0","0","289","314","500","0","false","黑体","0"]
-["287","327","1-1","3","█","0","0","286","327","4500","0","false","黑体","0"]
-["233","360","1-1","3","████","0","0","233","360","500","0","false","黑体","0"]
-["231","360","1-1","3","████","0","0","231","360","500","0","false","黑体","0"]
-["226","340","1-1","3","█","0","0","226","340","500","0","false","黑体","0"]
-["223","351","1-1","3","█","0","0","223","351","500","0","false","黑体","0"]
-["221","362","1-1","3","█","0","0","221","362","500","0","false","黑体","0"]
-["278","348","1-1","3","█","0","0","278","348","500","0","false","黑体","0"]
-["288","353","1-1","3","█","0","0","288","353","500","0","false","黑体","0"]
-["294","363","1-1","3","█","0","0","294","363","500","0","false","黑体","0"]
-["212","375","1-1","3","███████","0","0","212","375","500","0","false","黑体","0"]
-["219","370","1-1","3","██████","0","0","219","370","500","0","false","黑体","0"]
-["221","370","1-1","3","██████","0","0","221","370","500","0","false","黑体","0"]
-["238","233","1-1","3","█","0","0","238","233","500","0","false","黑体","0"]
-["245","233","1-1","3","███","0","0","245","233","500","0","false","黑体","0"]
-["243","233","1-1","3","███","0","0","243","233","500","0","false","黑体","0"]
-["310","308","1-0","4.5","~♪","5","0","346","310","4500","0","true","宋体","0"]
-["310","298","1-0","4.5","~♩","360","0","355","294","4500","0","true","宋体","0"]
-["300","296","1-0","4.5","~♫","352","0","343","273","4500","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["302","260","1-0","4.5","~♪","330","0","355","230","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","4.5","~♫","320","0","341","205","4500","0","true","宋体","0"]
-["286","253","1-0","6","~♫","320","0","341","205","6000","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["198","310","1-0","4.5","♭~","348","0","128","339","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["189","293","1-0","4.5","♬~","5","0","150","271","4500","0","true","宋体","0"]
-["300","296","1-0","4.5","~♫","352","0","343","273","4500","0","true","宋体","0"]
-["300","296","1-0","4.5","~♫","352","0","343","273","4500","0","true","宋体","0"]
-["300","296","1-0","4.5","~♫","352","0","343","273","4500","0","true","宋体","0"]
-["300","296","1-0","4.5","~♫","352","0","343","273","4500","0","true","宋体","0"]
-["310","298","1-0","4.5","~♩","360","0","355","294","4500","0","true","宋体","0"]
-["310","298","1-0","4.5","~♩","360","0","355","294","4500","0","true","宋体","0"]
-["310","298","1-0","4.5","~♩","360","0","355","294","4500","0","true","宋体","0"]
-["310","298","1-0","4.5","~♩","360","0","355","294","4500","0","true","宋体","0"]
-["310","308","1-0","4.5","~♪","5","0","346","310","4500","0","true","宋体","0"]
-["310","308","1-0","4.5","~♪","5","0","346","310","4500","0","true","宋体","0"]
-["341","7","0-1","2","我呢","0","0","241","7","2000","0","true","黑体","0"]
-["241","7","1-0","2","我呢","0","0","141","7","2000","0","true","黑体","0"]
-["252","30","0-1","2","看见了这世上最美丽的光 ","0","0","152","30","2000","0","true","黑体","0"]
-["152","30","1-0","2","看见了这世上最美丽的光 ","0","0","52","30","2000","0","true","黑体","0"]
-["278","6","0-1","2","将那花朵抱在胸前","0","0","178","6","2000","0","true","黑体","0"]
-["178","6","1-0","2","将那花朵抱在胸前","0","0","78","6","2000","0","true","黑体","0"]
-["262","30","0-1","2","包括Laurant的份一起","0","0","162","30","2000","0","true","黑体","0"]
-["162","30","1-0","2","包括Laurant的份一起","0","0","62","30","2000","0","true","黑体","0"]
-["315","55","0-1","2","继续歌唱","0","0","215","55","2000","0","true","黑体","0"]
-["215","55","1-0","2","继续歌唱","0","0","115","55","2000","0","true","黑体","0"]
-["167","110","0-1","2","“那里有Roman在吗?”","0","0","167","110","500","0","true","黑体","0"]
-["167","110","1-0","2","“那里有Roman在吗?”","0","0","167","110","500","0","true","黑体","0"]
-["241","323","0-1","2","春之追忆","0","0","241","323","500","0","true","黑体","0"]
-["241","323","1-0","2.5","春之追忆","0","0","241","323","500","0","true","黑体","0"]
-["259","352","0-1","2","美丽的音色","0","0","259","352","500","0","true","黑体","0"]
-["259","352","1-0","2.5","美丽的音色","0","0","259","352","500","0","true","黑体","0"]
-["188","10","0-1","2","咏唱的少女(Monica)","0","0","188","10","500","0","true","黑体","0"]
-["188","10","1-0","2.5","咏唱的少女(Monica)","0","0","188","10","500","0","true","黑体","0"]
-["223","40","0-1","2","鸟儿的鸣叫","0","0","223","40","500","0","true","黑体","0"]
-["223","40","1-0","2.5","鸟儿的鸣叫","0","0","223","40","500","0","true","黑体","0"]
-["271","294","1-0","4.5","指针的前进 →","0","0","321","294","4500","0","true","黑体","0"]
-["263","333","0-1","1.1","字幕By:Black★Rock.Shooter/n 感谢观看~","0","0","263","333","500","0","true","黑体","0"]
-["260","330","0-1","1.1","字幕By:Black★Rock.Shooter/n 感谢观看~","0","0","260","330","500","0","true","黑体","0"]
-["263","333","1-1","4.5","字幕By:Black★Rock.Shooter/n 感谢观看~","0","0","263","333","500","0","true","黑体","0"]
-["260","330","1-1","4.5","字幕By:Black★Rock.Shooter/n 感谢观看~","0","0","260","330","500","0","true","黑体","0"]
-["105","304","0-1","4.5","美丽之物","0","0","105","304","500","0","true","黑体","0"]
-["315","335","0-1","4.5","为了将它采撷","0","0","315","335","500","0","true","黑体","0"]
-["33","76","0-1","2","生命(人)才降诞到世上","350","20","33","76","500","0","true","黑体","0"]
-["33","76","1-0","2.5","生命(人)才降诞到世上","350","20","33","76","500","0","true","黑体","0"]
-["129","353","0-1","2","你所拥有的短暂的季节(Saison)","0","0","129","353","500","0","true","黑体","0"]
-["129","353","1-1","2","你所拥有的短暂的季节(Saison)","0","0","129","353","500","0","true","黑体","0"]
-["129","353","1-0","2","你所拥有的短暂的季节(Saison)","0","0","129","353","500","0","true","黑体","0"]
-["273","358","0-1","4.5","永远不忘","0","0","273","358","500","0","true","黑体","0"]
-["100","358","1-0","4.5","蝉鸣如时雨","0","0","100","358","500","0","true","黑体","0"]
-
\ No newline at end of file
diff --git a/src/danmaku/test/av39444.xml b/src/danmaku/test/av39444.xml
deleted file mode 100644
index 164cf04..0000000
--- a/src/danmaku/test/av39444.xml
+++ /dev/null
@@ -1,5882 +0,0 @@
-chat.bilibili.com669260100000
-赤い赤い赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い
-赤
-二小姐求舔足
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-二小姐
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-好甜
-好甜
-好甜
-好红
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-好甜赤い赤い赤い赤い赤い赤い
-赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い
-赤い赤い赤い赤い
-赤
-赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰朵露芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰杜兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い 赤い 赤い殺してあげる
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-好甜 好红 好甜 好红
-好甜好红好甜好红
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い
-赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い赤い甘い芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰
-好甜 好红 好甜 好红 好甜 好红 好甜 好红 啊啊啊~
-芙兰朵露!!!!
-二小姐
-二小姐
-コカキコォ
-好红 好甜 好红 好甜
-甘い
-芙兰
-甘甘甘甘
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-二小姐!!!芙~兰~朵~露~
-好红
-在我的身体里
-把只言片语
-一句又一句
-一遍遍
-无穷无尽地重复
-歌唱
-赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤 赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤
-好红
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-芙兰芙兰芙兰芙兰芙兰
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
- 赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い好甜
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤は赤くて赤くて赤くて赤くて赤くて赤くて赤くて赤く赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-俺を殺しに来たよ
-俺を殺しに来たよ,俺を殺しに来たよ,俺を殺しに来たよ,俺を殺しに来たよ
-俺を殺しに来たよ,俺を殺しに来たよ,俺を殺しに来たよ
-殺して殺して殺して殺すしっとりとした真っ赤な瞳
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-この想いは伝えられないの?
-甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い
-甘い
-甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
- 赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
- 甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
- 甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い
-赤い 赤い 赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐
-二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足二小姐求二小姐求舔足二小姐求舔足二小姐求舔足二小姐求舔足
-芙兰芙兰芙兰芙兰芙芙兰芙兰芙兰
-好红
-殺してあげる
-殺してあげる殺してあげる殺してあげる殺してあげる殺してあげる殺してあげる殺してあげる
-好红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-俺を殺しに来だよ!
-なんですか
-だれかいますか
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い甘い 赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-好甜 好红芙兰芙兰芙兰
-芙兰朵露
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰朵露
-芙兰朵露
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-芙兰芙兰芙兰芙兰芙兰芙兰芙
-芙兰芙兰芙兰芙兰芙兰芙兰
-その想い断たれたのかな?
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-キルキルキルキル殺す
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-甘い甘い甘い甘い甘い甘い甘い甘い
-私がおまえを殺し 私がおまえを殺し 私がおまえを殺し
-赤い
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-することができます、
-テストの下で、
-好甜禁忌「カゴメカゴメ」
-禁忌「クランベリートラップ」
-禁弾「スターボウブレイク」
-殺してあげる!!!!
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ 赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-殺しけあげる!
-甘い
-二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐二小姐
-芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露出芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露芙蘭朵露赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-赤い甘い赤い甘い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤
-殺してあげる
-あなたを殺した!
-二小姐 二小姐
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-カカオキクキァガキオゥェキァカェォィカァゥェキガゥァキォィコクオガゥキガキォキガキキオガオェキガェキガオケギセセセクスシススギセサセゴギスギセズソザシジシススセサズサズソセセササオカェィカカィェコォカォカオコカェカィォィァカカオキキィキガゥオキォィオイオァェェィェァィォェァェォェオォカォォィオカクォ赤い赤い赤い赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い赤 赤い赤い赤い赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い赤い赤い赤い い赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-レッド
-甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘ぃ
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い
-红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い
-红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い
-红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い
-红い红い红い红い红い红い红い红い红い红い红い红い
-红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い红い
-赤い
-ゆき甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-二小姐二小姐二小姐二小姐二小姐二小姐二小姐
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙
-芙兰芙兰芙兰
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘く甘い甘い甘い甘い甘い甘い甘い甘い甘い甘さ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-殺してあげる殺してあげる殺してあげる殺してあげる殺してあげる殺してあげる殺殺してあげる殺してあげるしてあげる殺してあげる
-殺してあげる殺してあげる殺してあげる殺してあげる殺し殺してあげる殺してあげるてあげる殺してあげる
-二小姐二小姐二小姐二小姐二小姐二小姐
-芙兰朵露!芙兰朵露!芙兰朵露!芙兰朵露!芙兰朵露!
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-い赤い甘
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い
-殺す赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
- い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤
- い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤 い赤
-良い甘い甘い良い甘い甘い良い甘い甘い良い甘い甘い良い甘い甘い良い甘い良い甘い良い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい
-甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい
-甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい。v
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘いい甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い!!甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い!!甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红
-甘い
-赤い
-赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤いい赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-願いは破滅しましたか?
-好红
-好甜
-好红
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い亦い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰
-好红
-好甜
-好甜
-好甜
-好红
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-您那底下深沉的瞳孔,正是吾辈追求的高尚
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-好红好红好红好红好红好红好红好红好红好红
-赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も
-何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も
-何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も
-何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红好甜好红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い甘い甘い甘い
-私の中の私が
-ひとつの単語を
-ひとつの単語を
-何度も何度も何度も
-何度も何度も何度も
-繰り返し 繰り返し 繰り返し 繰り返し
-繰り返し 繰り返し 繰り返し 繰り返し歌う
-歌う
-掴む左手が甘くて 震える右手が甘くて
-掴む左手が甘くて 震える右手が甘くて
-笑う口が裂けても それがあなたを殺し
-笑う口が裂けても それがあなたを殺し
-緋色月下、狂咲ノ絶
-好红 好甜赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露芙兰朵露
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い甘い甘い甘い甘い
-殺してあげる
-红
- 赤 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,
- 赤 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,
- 赤 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,
- 赤 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い, 赤い,甘い,
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-芙兰芙兰芙兰芙兰
-赤赤赤赤赤赤赤赤
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤
-赤ぃ赤
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-好甜
-甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い
-芙兰
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い
-良い赤
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-好甜好甜
-芙兰
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い 赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い
-赤い赤いい赤い赤い赤い赤い赤い 赤
-赤い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い 赤
-い赤い赤い赤い赤い赤い 赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-杀戮好红
-赤い
-赤い赤い赤い赤い赤い赤い芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰
-红红红宫红
-红
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-好红赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰芙兰赤い
-赤
-赤赤赤赤赤赤赤赤赤赤赤赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-来晚了抱歉
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ殺殺殺殺殺殺殺殺
-啊
-赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤赤好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红红好红
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红红好红
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红红好红
-好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红好红红好红
-啊啊啊啊
-吃瓜
-我擦
-zaaa
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-1
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-2
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ1
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-1
-1
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ
-赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ赤ぃぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤ぃ赤赤ぃ赤ぃ赤ぃ赤ぃ
-刚刚
-姐姐
-ۗۚۗۖۗۗۚ۟ۥٌَُُُُُٜ۪ۖ۟۟ۚۗ۟ۖۗۛٛٞۚۚۙۚۚۥ۟۟۟۟ۚۚ۟ۛۥۛۚۚۚ۟۟ۡۥۛۛ۟ۙۙۚۥۚۙۙۙۚۥۛۛۚۚۙۙۦُُ۟۟ۖۖۖٛ۟ۗۖۚۥٌُٞۖۛۚ۟۟۟۟ۡۛۛۡ۟ۗۚۗۖۗۗۚ۟ۥٌَُُُُُٜ۪ۖ۟۟ۚۗ۟ۖۗۛٛٞۚۚۙۚۚۥ۟۟۟۟ۚۚ۟ۛۥۛۚۚۚ۟۟ۡۥۛۛ۟ۙۙۚۥۚۙۙۙۚۥۛۛۚۚۙۙۦُُ۟۟ۖۖۖٛ۟ۗۖۚۥٌُٞۖۛۚ۟۟۟۟ۡۛۛۡ۟芙兰芙兰芙兰
-二妹
-二妹 嗷嗷嗷芙兰芙兰芙兰芙兰
-二妹
-绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿
-绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿
-绿绿绿绿绿绿
-你们不要过来啊啊啊啊啊啊啊啊
-UP主辛苦了
-发生了什么(゚o゚;赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-aaaaaaaaaaaaa
-["200","312","1-1","0.4","「この想い届かないのかな?」"]
-["228","301","1-1","0.4","「この想い届かないのかな?」"]
-["193","318","1-1","0.4","「この想い届かないのかな?」"]
-["189","319","1-1","0.4","「この想い届かないのかな?」"]
-["60","345","1-1","0.4","「その瞳には谁が映るのかな?」"]
-["120","340","1-1","0.4","「その瞳には谁が映るのかな?」"]
-["200","330","1-1","0.4","「その瞳には谁が映るのかな?」"]
-["243","347","1-1","0.4","「その瞳には谁が映るのかな?」"]["216","348","1-1","0.4","「その瞳には谁が映るのかな?」"]["154","333","1-1","0.4","「その瞳には谁が映るのかな?」"]
-["160","348","1-1","0.6","「心壊れているのかな?」"]
-["30","348","1-1","0.6","「心壊れてい るのかな?」"]["50","325","1-1","0.6","「壊れたら戻ら ないのかな?」"]
-["120","283","1-1","0.6","「壊れたら戻ら ないのかな?」"]
-["120","265","1-1","0.6"," 「壊れたら戻らないのかな?」"]
-["93","304","1-1","2.5","「そうして时を刻むの?」","350","0"]
-["110","325","1-1","2.5","「そうして时を刻むの?」","350","0"]
-["130","345","1-1","2.5","「そうして时を刻むの?」","350","0"]
-["14","65","0.8-0.8","6","█████████████ ████████","3","0"]["14","65","1-1","6","あなたのその全てが欲しくて 欲しくて震えてる","3","0"]
-["14","65","1-1","6","▃▃▃▃▃▃▃▃▃▃▃▃▃ ▃▃▃▃▃▃▃▃","3","0"]["35","300","0.8-0.8","6","███████████ ██████████████"]["35","300","0.8-0.8","6","(この気持ち気付くいて どうして気付いてくれないの)"]
-["14","65","1-1","5.9","あ ","3","0"]["35","300","0.8-0.8","5.9","( "]
-["14","65","1-1","5.7"," な ","3","0"]
-["35","300","0.8-0.8","5.7"," こ "]
-["14","65","1-1","5.5"," た ","3","0"]
-["35","300","0.8-0.8","5.5","( の "]
-["14","65","1-1","5.3"," の ","3","0"]
-["35","300","0.8-0.8","5.3","( 気 "]
-["14","65","1-1","5.1"," そ ","3","0"]
-["35","300","0.8-0.8","5.1","( 持 "]
-["14","65","1-1","4.9"," の ","3","0"]
-["35","300","0.8-0.8","4.9","( ち "]
-["14","65","1-1","4.7"," 全 ","3","0"]
-["35","300","0.8-0.8","4.7","( 気 "]
-["14","65","1-1","4.5"," て ","3","0"]
-["35","300","0.8-0.8","4.5","( 付 "]
-["14","65","1-1","4.3"," が ","3","0"]
-["35","300","0.8-0.8","4.3","( く "]
-["14","65","1-1","4.1"," 欲 ","3","0"]["35","300","0.8-0.8","4.1","( い "]["14","65","1-1","3.9"," し ","3","0"]["35","300","0.8-0.8","3.9","( て"]["14","65","1-1","3.7"," く","3","0"]["14","65","1-1","2.8"," 欲 ","3","0"]
-["36","300","0.8-0.8","2.8","( ど"]
-["37","300","0.8-0.8","2.6","( う "]
-["14","65","1-1","2.4"," く ","3","0"]
-["37","300","0.8-0.8","2.4","( し "]
-["14","65","1-1","2.2"," て ","3","0"]
-["37","300","0.8-0.8","2.2","( て "]
-["14","65","1-1","2"," 震 ","3","0"]
-["37","300","0.8-0.8","2","( 気 "]
-["14","65","1-1","1.8"," え ","3","0"]
-["37","300","0.8-0.8","1.8","( 付 "]
-["14","65","1-1","1.6"," て ","3","0"]
-["37","300","0.8-0.8","1.6","( い "]["14","65","1-1","1.4"," る","3","0"]
-["37","300","0.8-0.8","1.4","( て "]
-["37","300","0.8-0.8","1.2","( く "]
-["37","300","0.8-0.8","1","( れ "]
-["37","300","0.8-0.8","0.8","( な "]
-["37","300","0.8-0.8","0.6","( い "]
-["37","300","0.8-0.8","0.4","( の)"]["110","27","0.7-0.7","3","そ/nの/n肌/nを/n秽/nし/n尽/nく/nし","336","0"]
-["80","311","0.9-0.9","3","こ","336","0"]["130","277","0.9-0.9","3","気","345","0"]
-["161","268","0.9-0.9","3","持","355","0"]
-["220","265","0.9-0.9","3","壊","15","0"]
-["453","268","0.9-0.9","3","た"]
-["477","277","0.9-0.9","3","て"]
-["80","300","0.8-0.8","3","ど","336","0"]
-["100","275","0.8-0.8","3","こ","336","0"]["160","255","0.8-0.8","3","辿","350","0"]
-["218","255","0.8-0.8","3","着"]
-["263","274","0.8-0.8","3","く"]
-["431","254","0.8-0.8","3","の"]
-["477","265","0.8-0.8","3","し","10","0"]
-["500","280","0.8-0.8","3","ょ","10","0"]["525","327","0.8-0.8","3","か","20","0"]
-["83","290","0.6-0.6","3.0","爱","338","0"]
-["105","272","0.5-0.5","3.0","漏","338","0"]
-["160","245","0.5-0.5","3.0","て","350","0"]
-["190","236","0.5-0.5","3.0","行"]
-["215","245","0.5-0.5","3.0","く"]
-["260","260","0.5-0.5","3.0","わ"]
-["30","156","0.8-0.8","3","爱で抚でて揺さ振られて","338","0"]
-["80","274","0.5-0.5","3.0","止","337","0"]["98","254","0.5-0.5","3.0","め","337","0"]
-["120","240","0.5-0.5","3.0","る","337","0"]
-["152","230","0.5-0.5","3.0","こ","350","0"]
-["430","227","0.5-0.5","3.0","は"]
-["453","230","0.5-0.5","3.0","で"]
-["475","243","0.5-0.5","3.0","き"]
-["496","260","0.5-0.5","3.0","な"]
-["518","280","0.5-0.5","3.0","い","15","0"]
-["430","227","0.5-0.5","3.0","は"]
-["0","376","1.00-1.00","1.40","MMMMMMMMMMMMMMM@ . ;@MMMMMMMMMMMMMM. @MMMMMMMMMMMMMMQi M7 QMMMMMMMMMMMMMMMM"]
-["0","199","1-1","1.4","MMMMMMMAi oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 7MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMS .;EMMMMMM"]
-["0","243","1.00-1.00","1.40","Z MMMA MMMMMME BMMMMMMM@. 7MMMMM MMMMMS .$MMMMMMM# 2MMMMMM 2MMM "]
-["0","228","1-1","1.4","v MMMMU MMMMMMMM MMMMMMMM YMMMM "]
-["0","368","1.00-1.00","1.40","MMMMMMMMMMMMMMMM#7. :bMMX i@MMMMMMMMMMMM MMMMMMMMMMMMMI. BMMMMMMMMMMMMMMMM"]["0","236","1.00-1.00","1.40","8 .MMM. ZMMMMMMM, .UZAbE0E#M2 M@B9EY 28b#@M. UM$QQbb9EQ. .MMMMMMM0 .MMMt "]
-["0","250","1.00-1.00","1.40","A 9MMMM MMMMMMM MMMMMMM iMMMMM .MMMMM7 #MMMMMM #MMMMMM MMMM@ "]
-["0","265","1.00-1.00","1.40","YEMMMMMv MMMMMMM :MMMM@ cMM7 @MMA UMMMMi MMMMMMM :MMMMM@"]
-["0","191","1.00-1.00","1.40","c MMv v$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi $MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0i SMM,"]
-["0","273","1.00-1.00","1.40","MMMMMMM@ BMMMMMMMi MMMMMM MMMMM9 MMMMMM MMMMMM MMMMMMMA bMMMMMM"]
-["0","258","1.00-1.00","1.40","i MMMMM 7MMMMMM MMMMM 0MM8 vMMMM MMMMM: MMMMMMv MMMMM."]
-["0","88","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMn #MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","125","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.M. :W MMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","22","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","44","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","280","1-1","1.4","MMMMMMMM .MMMMMMMMB UMMMMMMb :MMMMM EMMMMMn .MMMMMMz YMMMMMMMM MMMMMMM"]
-["0","354","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM6 ,BMMMMMM@ 2MMMMMMb. ,@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","110","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: :,nE 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","287","1-1","1.4","MMMMMMMM. MMMMMMMMMM MMMMMMMM MMMMMU MMMMMM oMMMMMMM BMMMMMMMM@ MMMMMMM"]
-["0","346","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQ 8MMMMM MMMM@i tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","37","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","66","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ; :MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","133","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#c , Y:c;cY. @MMMMMM. CMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","118","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0IM vMMM .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","361","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM1 SMMMMMMMMM$ ZMMMMMMMMMo. 7C.. ..7A$MMMMMMMMMMMMMMMMMMM"]
-["0","184","1-1","1.4","C YBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME :MMMMMMMMMMMMtMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM9i "]
-["0","52","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7 oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","339","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#. MMMM. .MMM: :$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","331","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: MMM. ,MM iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","324","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMM@$MMMMMMMMMMMMMc@MMc M# . nMMM .MMMMMMMMMMMMS.MMMMMMMMMMMMMMMMMMMMM"]
-["0","15","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMA 0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","302","1-1","1.4","MMMMMMMM#.MMMMMMMMMMM2 .MMMMMMMMM@ @MMMMB :MMMMMM MMMMMMMMM: .MMMMMMMMMMM oMMMMMMM"]
-["0","29","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","7","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 2M1X ,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","103","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","0","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7 MMMMM#: ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","155","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0MMMM .MMMX#MMMMMMMMMMM@ AMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","169","1-1","1.4","MMEMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWc C@MMMMMMMMMMMMMM7S . @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@oB"]
-["0","309","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMM iMMMMMMMMMMMC #MMMMM: MMMMMMM @MMMMMMMMMMc $MMMMMMMMMMMMMMMMMMMM"]
-["0","317","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMM: MMMMMMMMMMMMM MMMME: ; v$MMMMc MMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMM"]
-["0","295","1-1","1.4","MMMMMMMMY cMMMMMMMMMM $MMMMMMMMi iMMMMM BMMMMMz MMMMMMMM@ MMMMMMMMMM, :MMMMMMM"]
-["0","59","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMA @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","140","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7 c .t :. , 8:QMMMMMMM@ #MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","74","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7 cM $MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","81","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@. MM. vMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","147","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM2tE WM.MM. 2Mb;@ :MMMMMMMMMMMi MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","96","1-1","1.4","MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME UM. MMM ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"]
-["0","0","1-1","1.3","/n█████████████████████/n█████████████████████/n█████████████████████/n█████████████████████/n█████████████████████/n█████████████████████/n/n/n/n/n/n/n/n"]
-["0","0","1-1","1.3","█████████████████████/n/n/n/n/n/n/n/n/n/n/n█████████████████████/n█████████████████████/n█████████████████████"]["0","0","1-1","1.3"," .2YYcYcYvYvYvYvYcYvYvYvYcYvYvYcYccvYcYv7t; "]
-["0","7","1-1","1.3"," YMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM :zQ0Bt "]
-["0","29","1-1","1.3"," #MBWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi "]
-["0","15","1-1","1.3"," AMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .MMMMMMMMM, "]
-["0","22","1-1","1.3"," v@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM "]
-["0","37","1-1","1.3"," iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMU "]
-["0","44","1-1","1.3"," 0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMn "]
-["0","52","1-1","1.3"," tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc "]
-["0","66","1-1","1.3"," UMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM, "]
-["0","74","1-1","1.3"," @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@MMMMMMMMMM# "]
-["0","81","1-1","1.3"," XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM..MMMMMMMMMMM "]
-["0","88","1-1","1.3"," .9MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi :MMMMMMMMMMM. "]
-["0","96","1-1","1.3"," cI.nMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. vMMMMMMMMMMM. "]
-["0","103","1-1","1.3"," @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. EMMMMMMMMMc Y7 "]
-["0","110","1-1","1.3"," 1 WMMMMMMMMM1;@MMMMMMMMMMMMMMMMMMMMMMMM @MMMMMMMMM@ ;WMMMMMi "]
-["0","118","1-1","1.3"," 1MMb. iMMMMMMMMMM; .n@MMMMMMMMMMMMMMMMMMMMM@; MMMMMMMMMMM S@MMMMMMMMMM@ "]
-["0","125","1-1","1.3"," ,#MMMMMMMQ; @MMMMMMMMMM6i.;6W@MMMMMMMMMMMMMMMQ .; .MMMMMMMMMMM; ,$MMMMMMMM7 bMMM."]
-["0","133","1-1","1.3","MMMMMEMMMMMMMM8, EMM2MMMMMMMMMMM@MMMMMMMMMMMMMMWWM :MMMMMMMMMMMW :$MMMMMMMQ; 7M."]["0","140","1-1","1.3","MM#: :bMMMMMMMM@; .v:.M#YIMMMMMMMMQWMMMMQMMMMYz $ iMMMMMMMMMMMM .bMMMMM1vMMM, M."]
-["0","147","1-1","1.3","MX .MMM$MMMMM@v .@ IMMMMMMMM.I7MM MQ@# MMMMMMMMMMM@ .IMMMM@; tMMMMM. M."]
-["0","155","1-1","1.3","Mi .#MMM: :bMMMM@; MMMMMMMMMMME.Q @#. #MMMMMMMMMM ,S@MMMMM8 CMMMMMMM MM "]
-["0","177","1-1","1.3","MMM @MMMMMMMME #MM#iCoSSAU0EB0@MMMMMMMM1 .zMMMMMMMMMMMMMMMMMMMMMMMMM0: bMMMMcEMMMMMMMMX 1MMMMMI MMMMMMMMM MM "]
-["0","184","1-1","1.3","MMM. #MMMMMMMM7 tMMMMMt ;MMM iMMMMz .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc ZMMMM 7MMMMM#MM ,MMMMMMM; ,MMMMMMM$ M;"]
-["0","191","1-1","1.3","MMz .MMMMMMMM :MMMMMMMv ,MMMMMC #MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#@MMME nMMMMMM@0 MMMMMMMMM. QMMMMMMX . "]
-["0","199","1-1","1.3","M$ MMMMMMMi MMMMMMMMM MMMMMMMc .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc .MMMMMMMM :MMMMMMMMM7 MMMMMM. "]
-["0","206","1-1","1.3","M IMMMMM@ ,MMMMMMMMM, QMMMMMMMM AMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMb.MMMMMMMMM6 @MMMMMMMM tMMMMM "]
-["0","214","1-1","1.3"," .MMMMM. MMMMMMMMW MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMz .MMMMMMM@ MMMMM "]
-["0","221","1-1","1.3"," MMMM@ cMMMMMMM: 9MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM BMMMMMMn ,MMMb "]
-["0","228","1-1","1.3"," EMMM. MMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc .MMMMMM WMMi "]
-["0","236","1-1","1.3"," .MM@ BMMMMM: QMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM bMMMMM MM. "]
-["0","243","1-1","1.3"," MM. ,MMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQXMMMMM6 MMMMz 8M "]
-["0","250","1-1","1.3"," @@ MMMM7 EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@MMMMM WMMM. "]
-["0","258","1-1","1.3"," UMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM6 MMM "]
-["0","265","1-1","1.3"," .MMC BMM@0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM77MMM QM@ "]
-["0","273","1-1","1.3"," MM MMoXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo MM$ MY "]
-["0","280","1-1","1.3"," :Y MMUMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.bM. "]
-["0","287","1-1","1.3"," YMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM1 "]
-["0","295","1-1","1.3"," MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM "]
-["0","302","1-1","1.3"," AMMMMMMMMM@QMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0 "]
-["0","309","1-1","1.3"," MMMMMMMMMM..MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM "]
-["0","317","1-1","1.3"," ,MMMMMMMMMM :MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM; "]
-["0","324","1-1","1.3"," QMMMMMMMMM. ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#,MMMMMMMMM@ "]
-["0","331","1-1","1.3"," MMMMMMMMM@ iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$ #MMMMMMMMM "]
-["0","339","1-1","1.3"," tMMMMMMMMM .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMU MMMMMMMMME. "]
-["0","346","1-1","1.3"," Y#MMMMMMMMMMS MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7 oMMMMMMMMMMM$i .;7. "]
-["0","361","1-1","1.3"," MMMMM2 .bMMMMMMMMMMMMMMM iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMZ. .MMMb. "]
-["0","368","1-1","1.3"," EMMM# tMMMMMMMMMMMMMMMMM. YMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMU. cMMMMS "]
-["0","377","1-1","1.3",",.vcYcv,tMMMMMMM7 XMMMMMMMMMMMMMMMMMMS @MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. ;@MMMMMMMMMMMMMMMMMM0: tMMMMMMMM90Q@@@Q$ "]
-/n/n/n/n/n/n/n/n 君/n 屠/n る/n 此/n ノ/n 色/n 彩/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 君/n 屠/n る/n 此/n ノ/n 色/n 彩/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n 君/n 屠/n る/n 此/n ノ/n 色/n 彩/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n ★/n/n/n
-/n/n/n/n/n/n/n/n 君/n 屠/n る/n 此/n ノ/n 色/n 彩/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n ★/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n つ/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n を/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n 色/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n き/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n 深/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n く/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n 甘/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n ★/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n つ/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n 放/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n を/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n 色/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n き/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n 深/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n く/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n 甘/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n つ/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n 放/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n を/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n 色/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n き/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n 深/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n く/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n喉/n を/n 枯/n ら/n し/n 叫/n う/n 音/n 色/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n ★/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n つ/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n 甘/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n 放/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n を/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n/n 色/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n/n き/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n/n 深/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n/n く/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n/n/n 甘/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n音 /n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/nう /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n叫 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/nし /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/nら /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n枯 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/nを /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-喉 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/nう /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n叫 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/nし /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/nら /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n枯 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/nを /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n音 /n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/nう /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n叫 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/nし /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/nら /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n枯 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/nを /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n音 /n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/nう /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n叫 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/nし /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/nら /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n枯 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/nを /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n赤キ雨に彩られたら/n/n/n/n/n/n/n/n/n
-/n/n/n 赤キ雨に彩られたら/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n 赤キ雨に彩られたら/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n 赤キ雨に彩られたら/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n/n/n 绮丽な舞台の出来上がり/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n/n/n/n 绮丽な舞台の出来上がり/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n/n/n 绮丽な舞台の出来上がり/n/n/n/n/n/n/n/n/n/n/n/n/n
-/n 绮丽な舞台の出来上がり/n/n/n/n/n/n/n/n/n/n/n
-["169","145","0.1-1.00","3.5","私独り其処で踊る"]
-["13","130","1.00-1.00","0.3","私独り其処で踊る"]
-喉 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-喉 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-喉 /n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n
-["92","345","1.0-1.0","2.5","█"]
-["15","275","1.0-1.0","2.5","█"]
-["20","330","1.00-1.00","0.2","そ "]
-["20","330","1.00-1.00","0.5"," の "]
-["20","330","1.00-1.00","0.8"," 愿 "]["20","330","1.00-1.00","1.1"," い "]["20","330","1.00-1.00","1.4"," 溃 "]["20","330","1.00-1.00","1.7"," え "]["20","330","1.00-1.00","2"," た "]["20","330","1.00-1.00","2.3"," の "]
-["20","330","1.00-1.00","2.6"," か "]
-["20","330","1.00-1.00","2.9"," な?"]
-["16","327","1.00-1.00","3.1","そ "]
-["16","327","1.00-1.00","2.8"," の "]
-["14","327","1.00-1.00","2.5"," 愿 "]["8","327","1.00-1.00","2.2"," い "]
-["8","327","1.00-1.00","1.9"," 溃 "]
-["2","327","1.00-1.00","1.3"," た "]
-["7","327","1.00-1.00","1"," の"]
-["12","327","1.00-1.00","0.7"," か "]
-["10","327","1.00-1.00","0.4"," な?"]
-["10","327","1-1","0.3","その愿い溃えたのかな?"]
-["10","327","1-1","0.3","その愿い溃えたのかな?"]
-["58","344","1-1","0.3","その愿い溃えたのかな?"]
-["66","324","1-1","0.3","その愿い溃えたのかな?"]
-["46","364","1-1","0.3","その愿い溃えたのかな?"]
-["46","364","1-1","0.3","その愿い溃えたのかな?"]
-["56","340","1-1","0.3","その愿い溃えたのかな?"]["0","307","1-1","0.3","その愿い溃えたのかな?"]
-["0","307","1-1","0.3","その愿い溃えたのかな?"]
-["20","330","1.00-1.00","0.1","そ "]
-["20","330","1.00-1.00","0.4"," の "]
-["20","330","1.00-1.00","0.7"," 想 "]
-["20","330","1.00-1.00","1"," い "]
-["20","330","1.00-1.00","1.6"," た "]
-["20","330","1.00-1.00","1.3"," 断 "]
-["20","330","1.00-1.00","1.9"," れ "]
-["20","330","1.00-1.00","2.2"," た "]
-["20","330","1.00-1.00","2.5"," の "]
-["20","330","1.00-1.00","2.8"," か "]
-["20","330","1.00-1.00","3.1"," な ?"]
-["16","327","1.00-1.00","3.3","そ "]
-["15","327","1.00-1.00","3"," の "]
-["13","327","1.00-1.00","2.7"," 想 "]
-["17","327","1.00-1.00","2.4"," い "]
-["17","327","1.00-1.00","2.1"," 断 "]
-["13","327","1.00-1.00","1.8"," た "]
-["18","327","1.00-1.00","1.5"," れ "]["18","327","1.00-1.00","1.2"," た "]["20","327","1.00-1.00","0.9"," の "]["15","327","1.00-1.00","0.6"," か "]
-["0","327","1-1","0.3","その想い断たれたのかな?"]["18","327","1.00-1.00","0.3"," な ?"]
-["0","327","1-1","0.3","その想い断たれたのかな?"]
-["0","327","1-1","0.3","その想い断たれたのかな?"]
-["10","307","1-1","0.3","その想い断たれたのかな?"]
-["40","349","1-1","0.3","その想い断たれたのかな?"]
-["40","349","1-1","0.3","その想い断たれたのかな?"]
-["10","307","1-1","0.3","その想い断たれたのかな?"]
-["0","307","1-1","0.3","その想い断たれたのかな?"]
-["40","349","1-1","0.3","その想い断たれたのかな?"]
-["10","307","1-1","0.3","その想い断たれたのかな?"]
-["0","307","1-1","0.3","その想い断たれたのかな?"]["264","0","1.00-1.00","3.3","そ/n/nの/n/n希/n/n望/n/n绝/n/nえ/n/nた/n/nの/n/nか/n/nな/n/n?"]
-["261","0","1-1","0.3","そ"]["261","6","1-1","0.3","/nの"]
-["261","12","1-1","0.3","/n/n希"]
-["261","19","1-1","0.3","/n/n/n望"]
-["261","29","1-1","0.3","/n/n/n/n绝"]
-["261","12","1-1","0.3","/n/n/n/n/n/nえ"]
-["261","248","1-1","0.3","の"]["261","285","1-1","0.3","か"]
-["261","295","1-1","0.3","/nな"]
-["135","140","1.00-1.00","3","その瞳焼かれたのかな?"]
-["135","197","0.5-0.5","3","その瞳焼かれたのかな?","180","180"]
-["128","155","0.5-1","2.8","その肌は秽されたのかな?"]
-["20","145","1-0.5","0.2","そして谁もいなくなる?"]
-["2","327","1.00-1.00","1.6"," え "]
-["276","172","0.1-1","0.4","「この想い届かないのかな?」","340","0"]
-["271","320","1-1","0.4","「この想い届かないのかな?」","355","0"]
-["15","74","1.00-0.1","3","其ノ生を引き裂かれて"]
-["267","150","0.1-1","3"," どこにも本当の","180","180"]
-["58","139","0.1-1","3","私/nな/nん/nて/nい/nな/nい/nの/nだ/nか/nら"]
-["163","128","1.00-0.1","3","其ノ生の华散らして","35","0"]
-["301","265","0.1-1","3","儚い命だわ","35","0"]
-["295","310","1-0.1","3","极彩に咲き我が粮"]
-["402","345","0.1-1","3","美しく爱おしい"]
-["10","158","0.1-1","3","其ノ生がお前ならば"]["10","158","1-1","3","其ノ生がお前ならば"]
-["10","158","1-0.1","0.1","其ノ生がお前ならば","355","0"]
-["10","158","1-0.1","0.2","其ノ生がお前ならば","350","0"]
-["10","158","1-0.1","0.3","其ノ生がお前ならば","345","0"]
-["10","158","1-0.1","0.4","其ノ生がお前ならば","340","0"]
-["10","158","1-0.1","0.5","其ノ生がお前ならば","335","0"]
-["10","158","1-0.1","0.6","其ノ生がお前ならば","330","0"]
-["10","158","1-0.1","0.8","其ノ生がお前ならば","325","0"]
-["10","158","1-0.1","1","其ノ生がお前ならば","320","0"]
-["10","158","1-0.1","1.2","其ノ生がお前ならば","315","0"]
-["10","158","1-0.1","1.4","其ノ生がお前ならば","310","0"]
-["10","158","1-0.1","1.6","其ノ生がお前ならば","305","0"]
-["10","158","1-0.1","1.8","其ノ生がお前ならば","300","0"]
-["10","158","1-0.1","3","其ノ生がお前ならば","295","0"]
-["10","158","1-0.1","2","其ノ生がお前ならば","290","0"]
-["10","158","1-0.1","2.2","其ノ生がお前ならば","285","0"]
-["10","158","1-0.1","2.4","其ノ生がお前ならば","280","0"]
-["10","158","1-0.1","2.6","其ノ生がお前ならば","275","0"]
-["10","158","1-0.1","2.8","其ノ生がお前ならば","270","0"]
-["10","158","1-0.1","3","其ノ生がお前ならば","265","0"]
-["10","178","1-0.1","3","★☆永远に私のもの"]
-["10","178","1-0.1","3","★☆永远に私のもの","5","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","10","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","15","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","20","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","25","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","30","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","35","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","40","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","45","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","50","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","55","0"]
-["10","178","1-0.1","3","★☆永远に私のもの","60","0"]["10","178","1-0.1","3","★☆永远に私のもの","65","0"]["10","178","1-0.1","3","★☆永远に私のもの","70","0"]["10","178","1-0.1","3","★☆永远に私のもの","75","0"]["10","178","1-0.1","3","★☆永远に私のもの","80","0"]["10","178","1-0.1","3","★☆永远に私のもの","85","0"]["10","178","1-0.1","3","★☆永远に私のもの","90","0"]["249","2","1.00-0.1","6","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","355","0"]
-["288","200","1.00-0.1","6","★☆ずっと私の傍に","85","0"]
-["231","5","1.00-0.1","5.7","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","350","0"]
-["288","200","1.00-0.1","5.7","★☆ずっと私の傍に","80","0"]
-["215","10","1.00-0.1","5.4","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","345","0"]
-["288","200","1.00-0.1","5.4","★☆ずっと私の傍に","75","0"]
-["198","16","1.00-0.1","5.1","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","340","0"]
-["288","200","1.00-0.1","5.1","★☆ずっと私の傍に","70","0"]
-["288","200","1.00-0.1","4.8","★☆ずっと私の傍に","65","0"]
-["166","30","1.00-0.1","4.5","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","330","0"]
-["151","40","1.00-0.1","4.2","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","325","0"]
-["288","200","1.00-0.1","4.2","★☆ずっと私の傍に","55","0"]
-["137","51","1.00-0.1","3.9","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","320","0"]
-["288","200","1.00-0.1","3.9","★☆ずっと私の傍に","50","0"]
-["125","64","1.00-0.1","3.6","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","315","0"]
-["288","200","1.00-0.1","3.6","★☆ずっと私の傍に","45","0"]
-["115","78","1.00-0.1","3.3","其/nノ/n四/n肢/nを/n贽/nと/n捧/nげ","310","0"]["288","200","1.00-0.1","3.3","★☆ずっと私の傍に","40","0"]["275","190","1.00-0.1","3","★我が足元の死尸となれ","305","0"]["275","190","1.00-0.1","2.8","☆我が足元の死尸となれ","310","0"]
-["261","212","1.00-0.1","2.8","もう行かさないから","180","0"]
-["275","190","1.00-0.1","2.6","☆我が足元の死尸となれ","315","0"]
-["275","190","1.00-0.1","2.4","☆我が足元の死尸となれ","320","0"]
-["261","212","1.00-0.1","2.4","もう行かさないから","170","0"]
-["275","190","1.00-0.1","2.2","☆我が足元の死尸となれ","325","0"]
-["261","212","1.00-0.1","2.2","もう行かさないから","165","0"]
-["261","212","1.00-0.1","2","もう行かさないから","160","0"]
-["275","190","1.00-0.1","2","☆我が足元の死尸となれ","330","0"]
-["275","190","1.00-0.1","1.8","☆我が足元の死尸となれ","335","0"]
-["261","212","1.00-0.1","1.8","もう行かさないから","155","0"]
-["275","190","1.00-0.1","1.6","☆我が足元の死尸となれ","340","0"]
-["261","212","1.00-0.1","1.6","もう行かさないから","150","0"]
-["275","190","1.00-0.1","1.4","☆我が足元の死尸となれ","345","0"]
-["261","212","1.00-0.1","1.4","もう行かさないから","145","0"]
-["275","190","1.00-0.1","1.2","☆我が足元の死尸となれ","350","0"]
-["261","212","1.00-0.1","1.2","もう行かさないから","140","0"]
-["275","190","1.00-0.1","1","☆我が足元の死尸となれ","355","0"]
-["261","212","1.00-0.1","1","もう行かさないから","135","0"]
-["261","212","1.00-0.1","0.8","もう行かさないから","130","0"]
-["261","212","1.00-0.1","0.6","もう行かさないから","125","0"]
-["261","212","1.00-0.1","0.4","もう行かさないから","120","0"]
-["171","145","1.00-0.8","0.8","赤 い"]["120","167","1.00-0.8","0.8","嬉しくなっても"]
-["221","150","1.00-1.00","1.5","あなた"]
-["221","150","1.00-0.1","1.5","あなた"]
-["221","150","1.00-0.1","1.5","甘い"]
-["221","150","1.00-0.1","1.5","甘い"]
-["240","150","1.00-0.1","1.5","赤い"]
-["240","150","1.00-0.1","1.5","赤い"]
-["151","280","1.00-1.00","2.0","杀してあげる!","10","0"]
-["140","357","0.1-0.7","2.0","杀してあげる!","188","180"]
-["108","98","0.9-0.9","6.0","ノ"]
-["94","130","0.9-0.9","6.0","生"]
-["90","175","0.9-0.9","6.0","が"]
-["90","215","0.8-0.8","6.0","お"]
-["100","255","0.8-0.8","6.0","前","340","0"]["117","290","0.8-0.8","6.0","な","340","0"]
-["139","310","0.8-0.8","6.0","ら","340","0"]
-["167","330","0.8-0.8","6.0","ば","340","0"]
-["420","60","0.8-0.8","6.0","喰","15","0"]
-["460","150","0.8-0.8","6.0","い"]
-["451","116","0.8-0.8","6.0","ら","15","0"]
-["465","195","0.8-0.8","6.0","尽"]
-["456","250","0.8-0.8","6.0","く"]
-["417","319","0.8-0.8","6.0","て"]
-["350","356","0.8-0.8","6.0","肉"]
-["320","360","0.8-0.8","6.0","に"]
-["294","360","0.8-0.8","6.0","す"]
-["163","86","0.7-0.7","6.0","永","350","0"]["183","80","0.7-0.7","6.0","远","350","0"]
-["245","75","0.7-0.7","6.0","の","355","0"]
-["265","75","0.7-0.7","6.0","も","355","0"]
-["285","78","0.7-0.7","6.0","の","355","0"]
-["325","82","0.7-0.7","6.0","な","10","0"]
-["362","153","0.7-0.7","6.0","い","10","0"]
-["330","125","0.7-0.7","6.0","か","10","0"]
-["310","120","0.7-0.7","6.0","し","5","0"]
-["293","115","0.7-0.7","6.0","る","5","0"]["48","310","1.00-1.00","3.0","其ノ四肢を贽と捧げ"]
-["173","352","0.7-0.7","3.0","ずっと私の傍に"]
-["270","310","0.7-0.7","3.0","我が足元の死尸となれ"]
-["426","59","1.00-0.1","1","私の中の","55","0"]
-["50","131","1.00-0.1","1","私の中の"]
-["343","120","1.00-0.1","1","私の中の","60","0"]
-["346","250","1.00-0.1","1","私が","10","0"]
-["90","209","1.00-0.1","1","ひとつ","320","0"]
-["69","225","1.00-0.1","0.8","ひとつ","320","0"]
-["24","87","1.00-0.1","0.8","何/n度/nも","5","0"]["44","124","1.00-0.1","0.8","何/n度/nも","350","0"]["50","217","1.00-0.1","0.8","何/n度/nも"]
-["29","127","1.00-0.1","0.8","何/n度/nも"]
-["106","330","1.00-0.1","0.8","无尽蔵に"]
-["480","50","1.00-0.1","0.8","缲り返し","45","0"]
-["396","144","1.00-0.1","0.8","缲り返し","45","0"]
-["352","216","1.00-0.1","0.8","缲り返し","60","0"]
-["383","300","1.00-0.1","0.8","缲り返し"]
-["370","318","1.00-0.1","0.8","缲り返し","10","0"]
-["382","360","1.00-0.1","0.8","缲り返し"]
-["119","248","1.00-0.1","0.8","缲り返し"]["113","262","1.00-0.1","0.8","歌う","330","0"]
-["251","228","1-0.1","3","震える右手","330","0"]
-["382","160","1-0.1","3","が"]
-["380","185","1-0.1","3","甘/nく/nて"]
-["133","263","1-0.1","0.3","缲り返し","330","0"]
-["380","22","1-0.1","3","つ/nか/nむ/n左/n手/nが/n甘/nく/nて"]
-["288","82","1.00-0.1","0.8","甘くて"]
-["391","71","1.00-0.1","0.8","甘くて","330","0"]
-["283","310","1.00-0.1","0.8","笑う口が裂けても","330","0"]
-["260","138","1.00-0.1","0.8","楽しくて","10","0"]
-["236","211","1.00-0.1","0.8","楽しくて","20","0"]["95","178","1.00-0.1","0.8","脳髄を","20","0"]
-["267","268","1.00-0.1","0.8","震えて"]
-["221","258","1.00-0.1","0.4","震えて"]
-["203","222","1.00-0.1","0.4","楽しくて"]
-["103","320","1.00-0.1","0.8","楽しくて"]
-/n/n/n/n/n/nこの気持ち気付いて…
-/n/n/n/n/n/n/n/n/n/n/n/n狂気に満ちてゆくわ
-/n/n/n/n/n/n/n/nこの気持ち壊れたて
-/n/n/n/n/n/n/n/n/n/n/n爱漏れて行くわ
-["30","330","1.00-0.1","1","どうして気付いてくれないの"]
-["30","330","1-0.1","3","ど "]
-["30","330","1-0.1","3"," う "]["30","330","1-0.1","3"," し "]
-["30","330","1-0.1","3"," て "]
-["30","330","1-0.1","3"," 気 "]
-["30","330","1-0.1","3"," い "]
-["30","330","1-0.1","3"," て "]
-["30","330","1-0.1","3"," く "]
-["30","330","1-0.1","3"," れ "]
-["30","330","1-0.1","3"," な "]["30","330","1-0.1","3"," い "]["30","330","1-0.1","3"," の"]["30","330","1.00-0.1","3","どうすれば止まるの"]
-["30","330","1-0.1","3","ど "]
-["30","330","1-0.1","3"," う "]
-["30","330","1-0.1","3"," れ "]
-["30","330","1-0.1","3"," ば "]
-["30","330","1-0.1","3"," 止 "]["30","330","1-0.1","3"," ま "]
-["30","330","1-0.1","3"," る "]
-["30","330","1-0.1","3"," の"]
-["14","260","1.00-1.00","3","どこへ辿り着くのでしょうか"]
-["14","260","1.00-0.1","1","ど "]
-["14","260","1.00-0.1","1"," へ "]
-["14","260","1.00-0.1","1"," り "]
-["14","260","1.00-0.1","1"," 着 "]
-["14","260","1.00-0.1","1"," く "]["14","260","1.00-0.1","1"," の "]
-["14","260","1.00-0.1","1"," で "]
-["14","260","1.00-0.1","1"," し "]
-["14","260","1.00-0.1","1"," ょ "]
-["14","260","1.00-0.1","1"," う "]
-["14","260","1.00-0.1","1"," か"]
-["14","260","1.00-0.1","1","/n/n/n/n/n/n/n/n/n/n/n/n爱漏れて行くわ/n/n/n/n/n/n/n"]
-/n/n/n/n/n/n/n/n/n/n/n/n爱漏れて行くわ/n/n/n/n/n/n/n
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い
-甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い
-甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い
-甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い /n甘い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い/n赤い赤い赤い
-赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い/n赤い赤い赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い
-赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い/n赤い赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い/n赤い赤い
-赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い赤い/n赤い赤い赤い赤い赤い赤い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い/n甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い/n甘い甘い
-甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い/n甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い/n甘い甘い甘い甘い
-["73","355","1.00-0.4","3.5","濕潤的深紅眼眸"]
-["73","355","1.00-0.4","3.5","艷色的裙尾搖擺"]
-["73","355","1.00-0.4","3.5","幼小的臉頰浸染朱紅"]
-["40","355","1.00-0.4","3.5","這份思念無法傳達嗎?"]
-["40","365","1.00-0.4","3.5","這樣做能刻畫下時間嗎?"]
-["30","337","1.00-0.4","3.5","我想要你的全部 想到渾身顫抖"]
-["121","367","1.00-0.4","3.5","(希望你察覺我的心情 為什麼沒有察覺到呢?)"]
-["121","367","1.00-0.4","3","(希望你察覺我的心情 為什麼沒有察覺到呢?)"]
-["76","346","1.00-0.4","3","我想要你的全部 想到渾身顫抖"]
-["76","346","1.00-1","4","就讓那甜美的心跳 竭盡氣力就此停止吧/n(漸漸地被陷入瘋狂 無論怎樣也無法抑止)"]
-["76","346","1.00-1","4","盡情弄髒那片肌膚 污辱你的只有我/n(心情都被毀壞 接著該如何是好)"]["76","346","1.00-1","5","快點平息這份愛撫和操弄你的衝動吧/n(愛就要滿溢出來 無法停止…)"]
-["20","346","1.00-1","5","聲嘶力竭歌唱的音色"]
-["20","346","1.00-1","3","█████████"]
-["20","346","1.00-1","3","旋律化作赤色的虹"]
-["20","346","1.00-1","3","旋律化作赤色的虹"]
-["20","346","1.00-1","3","那是屠殺你的色彩"]
-["20","346","1.00-1","3","又甜又深的顏色"]
-["20","346","1.00-1","3","聲嘶力竭歌唱的音色"]
-["20","346","1.00-1","3","血色的雨濺遍四處"]
-["20","346","1.00-1","3","編織成華麗的舞臺"]
-["20","346","1.00-1","3","我獨自在上面跳舞"]["20","355","1.00-1","3","願望破滅了嗎?"]
-["20","355","1.00-1","3","思念斷絕了嗎?"]
-["20","355","1.00-1","3","希望磨滅了嗎?"]
-["20","355","1.00-1","3","目光燃燒了嗎?"]
-["20","355","1.00-1","3","肌膚污穢了嗎?"]
-["20","355","1.00-1","3","這之後剩下的還有誰?"]
-["20","345","1.00-1","5.5","就算把這具身體撕裂 只有赤銀煙霧擴散/n(因為哪裡都不存在真正的我)"]
-["20","345","1.00-1","5.5","讓那具身體四分五裂 綻放鮮艷的色彩即我的糧食/n(真是虛幻的生命 美麗又可愛)"]
-["20","345","1.00-1","5.5"," 如果那具身體就是你 我會將肉都吃得乾乾凈凈/n (你只能永遠成為我的東西)"]
-["20","345","1.00-1","5.5","把四肢作為供物 讓你成為我腳邊的死屍/n(一直在我身邊 再也不放你走)"]
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い /n/n甘い 甘い 甘い 甘い 甘い 甘い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-[450,298,"1-0.15",4,"永远に私のものになるしかない",0,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",4,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",8,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",12,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",16,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",24,0,450,298,500,0,true,"黑体",1][450,298,"1-0.15",4,"永远に私のものになるしかない",20,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",36,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",40,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",28,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",32,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",48,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",44,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",52,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",60,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",56,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",68,0,450,298,500,0,true,"黑体",1][450,298,"1-0.15",4,"永远に私のものになるしかない",72,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",64,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",80,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",88,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",84,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",76,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",92,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",100,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",104,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",96,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",112,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",108,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",116,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",124,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",120,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",136,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",128,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",140,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",132,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",156,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",152,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",144,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",148,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",160,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",168,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",164,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",180,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",184,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",176,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",172,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",192,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",188,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",196,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",200,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",204,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",208,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",212,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",228,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",224,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",216,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",220,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",232,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",236,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",248,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",240,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",244,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",256,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",264,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",260,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",252,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",272,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",268,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",276,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",284,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",280,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",288,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",292,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",304,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",296,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",300,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",308,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",312,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",320,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",324,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",316,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",336,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",328,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",340,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",332,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",352,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",344,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",348,0,450,298,500,0,true,"黑体",1]
-[450,298,"1-0.15",4,"永远に私のものになるしかない",356,0,450,298,500,0,true,"黑体",1]
-[0.01,0,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.09,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.27,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1][0.01,0.18,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.36,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.45,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.63,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.54,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.72,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1][0.01,0.81,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.9,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.99,"1-1",6,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.99,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.9,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.72,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.81,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.63,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.54,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.45,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.36,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1][0.01,0.27,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.18,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.09,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0,"1-1",6,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.09,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.27,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1][0.01,0.18,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.36,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.45,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.72,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.63,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.54,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.81,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.9,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1][0.01,0.99,"1-0",5,"この想い届かないのかな",0,0,0.01,0,4200,500,false,"楷体",1]
-[0.01,0.99,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.9,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.72,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.81,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.63,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.45,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1][0.01,0.54,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.36,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.27,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.09,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0.18,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1]
-[0.01,0,"1-0",5,"この想い届かないのかな",0,0,0.01,0.99,4200,500,false,"楷体",1][0.4,0,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0,6000,1500,false,"黑体",1][0.4,0.01,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.01,6000,1500,false,"黑体",1][0.4,0.02,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.02,6000,1500,false,"黑体",1][0.4,0.03,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.03,6000,1500,false,"黑体",1][0.4,0.04,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo~ ;#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.04,6000,1500,false,"黑体",1]
-[0.4,0.05,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.05,6000,1500,false,"黑体",1]
-[0.4,0.06,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM #MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.06,6000,1500,false,"黑体",1]
-[0.4,0.07,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8 :MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.07,6000,1500,false,"黑体",1]
-[0.4,0.08,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .M; oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.08,6000,1500,false,"黑体",1][0.4,0.09,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM #MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.09,6000,1500,false,"黑体",1][0.4,0.1,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM# MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.1,6000,1500,false,"黑体",1][0.4,0.11,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.11,6000,1500,false,"黑体",1][0.4,0.12,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.12,6000,1500,false,"黑体",1][0.4,0.13,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM= MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.13,6000,1500,false,"黑体",1][0.4,0.14,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM IMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.14,6000,1500,false,"黑体",1][0.4,0.15,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.15,6000,1500,false,"黑体",1][0.4,0.16,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.16,6000,1500,false,"黑体",1][0.4,0.17,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO IMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.17,6000,1500,false,"黑体",1][0.4,0.18,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM+ M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.18,6000,1500,false,"黑体",1][0.4,0.19,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM #M: ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.19,6000,1500,false,"黑体",1][0.4,0.2,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME #MMI 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.2,6000,1500,false,"黑体",1][0.4,0.21,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMoiMM MMMI MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.21,6000,1500,false,"黑体",1][0.4,0.22,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM` =. oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.22,6000,1500,false,"黑体",1][0.4,0.23,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.23,6000,1500,false,"黑体",1][0.4,0.24,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M M: MMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.24,6000,1500,false,"黑体",1][0.06,0.59,"1-1",3.5,"「この想い届かないのかな?」",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-1",3.5,"「こ",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.99",2.7,"「この想",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",1.7,"「この想い届",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",1.9,"「この想い",0,0,0.06,0.59,500,0,true,"黑体",1][0.06,0.59,"1-0.98",1.3,"「この想い届か",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",0.7,"「この想い届かないの",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",1.1,"「この想い届かない",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",0.6,"「この想い届かないのか",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.06,0.59,"1-0.98",0.3,"「この想い届かないのかな?」",0,0,0.06,0.59,500,0,true,"黑体",1]
-[0.15,0.15,"1-0",1,"私の中の",0,0,0.15,0.15,500,0,1,"SimHei",true]
-[0.15,0.15,"1-0",1,"私の中の",0,0,0.15,0.15,500,0,1,"SimHei",true]
-[0.6,0.67,"1-0",1,"私の中の",0,0,0.6,0.67,500,0,1,"SimHei",true]
-[0.6,0.67,"1-0",0.5,"私の中の",0,0,0.6,0.67,500,0,1,"SimHei",true]
-[0.15,0.6,"1-0",1,"私の中の",0,0,0.15,0.6,500,0,1,"SimHei",true]
-[0.65,0.15,"1-0",1,"私が",0,0,0.65,0.15,500,0,1,"SimHei",true]
-[0.65,0.15,"1-0",0.5,"私が",0,0,0.65,0.15,500,0,1,"SimHei",true]
-[0.15,0.6,"1-0",1,"私の中の",0,0,0.15,0.6,500,0,1,"SimHei",true][84,128,"1-0",1,"ひとつの",0,0,84,128,500,0,1,"SimHei",true]
-[90,128,"1-0",0.5,"ひとつの",0,0,90,128,500,0,1,"SimHei",true]
-[196,128,"1-0",1,"のつとひ",0,0,196,128,500,0,1,"SimHei",true]
-[196,128,"1-0",0.5,"のつとひ",0,0,196,128,500,0,1,"SimHei",true]
-[168,168,"1-1",1,"単语を",0,0,168,168,500,0,1,"SimHei",true]
-[163,168,"1-0",1,"単语を",0,0,168,168,500,0,1,"SimHei",true]
-[181,167,"1-0",1,"単语を",0,0,168,168,500,0,1,"SimHei",true]
-[163,164,"1-0",0.5,"単语を",0,0,163,164,500,0,1,"SimHei",true]
-[162,161,"1-0",0.5,"単语を",0,0,162,161,500,0,1,"SimHei",true]
-[642,170,"1-0",1,"何\n度\nも",0,0,642,170,500,0,1,"SimHei",true]
-[734,200,"1-0",1,"何\n度\nも",350,0,734,200,500,0,1,"SimHei",true]
-[709,226,"1-0",1,"何\n度\nも",15,0,709,226,500,0,1,"SimHei",true][747,298,"1-0",1,"何度も",10,0,747,298,500,0,1,"SimHei",true]
-[706,205,"1-0",1,"何\n度\nも",0,0,706,205,500,0,1,"SimHei",true]
-[733,361,"1-0",1,"何度も",170,0,733,361,500,0,1,"SimHei",true]
-[129,254,"1-0",1.5,"无尽蔵に",0,0,129,254,500,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,400,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,500,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,600,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,700,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,800,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,900,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,1000,0,1,"SimHei",true][42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,200,0,1,"SimHei",true]
-[42,257,"1-0",0.5,"无尽蔵に",0,0,132,255,100,0,1,"SimHei",true]
-[42,257,"1-0",0.6,"无尽蔵に",0,0,132,255,300,0,1,"SimHei",true]
-[132,254,"1-0",0.5,"无尽蔵に",0,0,132,254,1000,0,1,"SimHei",true]
-[132,254,"1-0",0.5,"无尽蔵に",0,0,132,254,1000,0,1,"SimHei",true]
-好红
-好红
-好红
-好红
-好 红
-好红好红
-好甜
-好甜好甜
-好甜
-好甜好甜
-好甜
-好甜好甜
-好 甜
-好甜 好甜
-好红
-好红
-好红 好红 好红
-好红 好红
-好红好红
-好红
-好甜 好甜好红好红
-好红
-好红 好红好红 好红
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い赤い 赤い 赤い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-私の中の私が 私の中の私が
-ひとつの単语を
-何度も何度も何度も
-私の中の私が 私の中の私が
-无尽蔵に
-缲り返し 缲り返し 缲り返し 缲り返し
-掴む左手が甘くて 震える右手が甘くて
-歌う
-笑う口が裂けても それがあなたを杀し
-楽しくて 脳髄を烧くように
-楽しくて楽しくて 震えて 楽しくて
-甘い 甘い 甘い 甘い 甘い 甘い 甘い
-赤い 赤い 赤い 赤い
-赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-[0,0,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true][0,149,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,149,500,0,1,"SimHei",true]
-[0,300,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,300,500,0,1,"SimHei",true]
-[0,451,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,451,500,0,1,"SimHei",true]
-[467,199,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,467,199,500,0,1,"SimHei",true]
-[467,393,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,467,393,500,0,1,"SimHei",true]
-[366,3,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,366,3,500,0,1,"SimHei",true]
-[0,446,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,446,500,0,1,"SimHei",true]
-[293,0,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,293,0,500,0,1,"SimHei",true]
-[293,150,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,293,150,500,0,1,"SimHei",true]
-[293,298,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,293,298,500,0,1,"SimHei",true]
-[0,0,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,148,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,148,500,0,1,"SimHei",true]
-[0,297,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,297,500,0,1,"SimHei",true]
-[580,0,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,580,0,500,0,1,"SimHei",true]
-[580,299,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,580,299,500,0,1,"SimHei",true]
-[293,445,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,293,445,500,0,1,"SimHei",true]
-[580,447,"1-1",4,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,580,447,500,0,1,"SimHei",true]
-[562,416,"0.5-0.5",4,"赤い",0,0,562,416,500,0,1,"SimHei",true][354,77,"0.5-0.5",4,"赤い",0,0,354,77,500,0,1,"SimHei",true]
-[29,326,"0.5-0.5",4,"赤い",0,0,29,326,500,0,1,"SimHei",true]
-[749,443,"0.5-0.5",4,"赤い",0,0,749,443,500,0,1,"SimHei",true]
-[569,232,"0.5-0.5",4,"赤い",0,0,569,232,500,0,1,"SimHei",true]
-[62,135,"0.5-0.5",4,"赤い",0,0,62,135,500,0,1,"SimHei",true]
-[731,296,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,731,296,500,0,1,"SimHei",true]
-[0,0,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,301,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,301,500,0,1,"SimHei",true]
-[731,0,"1-1",4,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,731,0,500,0,1,"SimHei",true]
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い赤い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い 甘い
-[0.25,0.11,"1-1",2,"/n/n/n 杀",0,0,0.25,0.11,500,0,true,"黑体",1]
-[0.25,0.11,"1-1",2,"/n/n/n 杀/n/n/n",0,0,0.25,0.11,500,0,false,"黑体",1]
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い /n/n赤い 赤い 赤い 赤い 赤い 赤い
-[0.4,0.25,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO MMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.25,6000,1500,false,"黑体",1]
-[0.4,0.26,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM + ;MMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.26,6000,1500,false,"黑体",1]
-[0.4,0.27,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM i M .EM MMMMMMMMMM iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.27,6000,1500,false,"黑体",1]
-[0.4,0.28,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M MMM MMM# +IMMMMMMMMMM= MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.28,6000,1500,false,"黑体",1]
-[0.4,0.29,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMM~ ~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM+O#i.MMM8 MMMM MMMMMMMMMMMMM .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.29,6000,1500,false,"黑体",1]
-[0.4,0.3,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMM ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME~ :MMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.3,6000,1500,false,"黑体",1]
-[0.4,0.31,"1-1",10,"MMMMMMMMMMMMMMMMMMMM `oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMI ;MMMMMMMMMMMMMM 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi:MMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.31,6000,1500,false,"黑体",1]
-[0.4,0.31,"1-1",10,"MMMMMMMMMMMMMMMMME +MMO iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8 IMMMMMMMMMMM8M OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMEI #MMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.31,6000,1500,false,"黑体",1]
-[0.4,0.32,"1-1",10,"MMMMMMMMMMMMMMM; ;MMMMMMMM+ 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 8MMMMMMMMMMM+EI MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8~ MMMMMMMMMMMMMMMMMMMMM",0,0,0,0.32,6000,1500,false,"黑体",1]
-[0.4,0.33,"1-1",10,"MMMMMMMMMMMM8 OMMMMMMMMMMM =MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM# MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM; ~#M8 MMMMMMMMMMMMMMMMMMM",0,0,0,0.33,6000,1500,false,"黑体",1]
-[0.4,0.34,"1-1",10,"MMMMMMMMME ~MMMMMMMMM MMi 8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM; ;#MMMMMMM. MMMMMMMMMMMMMMMMM",0,0,0,0.34,6000,1500,false,"黑体",1]
-[0.4,0.35,"1-1",10,"MMMMMMO `M .MMMMMMi iMMM8 =EMMMMMMMMMMMo: =#MMMo MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo .. .MMMMMMMMMMM EMMMMMMMMMMMMMM",0,0,0,0.35,6000,1500,false,"黑体",1]
-[0.4,0.36,"1-1",10,"MMMMM 8MMM MMMMM =MMMMM+ IO=` :OMMMMMMMMMMMMM8; ;MMM oMMMMMMMM+ ;MMMMMMMMMMMM",0,0,0,0.36,6000,1500,false,"黑体",1]
-[0.4,0.37,"1-1",10,"MMMM# oMMMMM. MMMM IMMMMMM~ ``..` iMMMM= MMMMMM MI 8MMMMMMMMM",0,0,0,0.37,6000,1500,false,"黑体",1]
-[0.4,0.38,"1-1",10,"MMMMM ;MMMMMMMM~ MMMMM IMMMMM =MMMMMMMM. =MMMMMM MMMMMMM MMMM: MMI OMMMMMM",0,0,0,0.38,6000,1500,false,"黑体",1]
-[0.4,0.39,"1-1",10,"MMMMM +MMMMMMM~ MMMMMM IMMMMM MMMMMM MMMMM MMMMMM MMMMMMMMM. IMMMMMM MMM8 MMMM# MMMMMM",0,0,0,0.39,6000,1500,false,"黑体",1]
-[0.4,0.4,"1-1",10,"MMMMM MMMMMMM; MMMMMMM =MMMM: ~MMMM =MMMMM 8MMMM~ #MMMMMM MMMMMM MMMM~ MMMMMMME MMMMMM",0,0,0,0.4,6000,1500,false,"黑体",1]
-[0.4,0.41,"1-1",10,"MMMMM +MMMMMMi MMMMMMMM =MMMM~ :MMMM MMM .MMM~ MMMM8 IMMMMO MMMMM MMMMMMMM8; MMMMMM",0,0,0,0.41,6000,1500,false,"黑体",1]
-[0.4,0.42,"1-1",10,"MMMMM MMMMMMMo MMMMMMMMM =MMMMM iMMMM MMMM~ OMM MMMMO MMMMi IMMMMMM ;MMMMMMM. MMMMMM",0,0,0,0.42,6000,1500,false,"黑体",1]
-[0.4,0.43,"1-1",10,"MMMM# MMMMMMMM# MMMMMMMMMM =MMMMMM MMMMM8 MMMMMM MMMMM` MMMMO MMMMM; OMMMMMMM MMMMMMM` MMMMMM",0,0,0,0.43,6000,1500,false,"黑体",1]
-[0.4,0.44,"1-1",10,"MMMMM MMMMMMMMME MMMMMMMMMMM =MMMMMMM MMMMMM MMMMM= EMMMMM MMMMM8 MMMMMM: #MMMMMMMM MMMMMMM8 MMMMMM",0,0,0,0.44,6000,1500,false,"黑体",1]
-[0.4,0.45,"1-1",10,"MMMMM: MMMMMMMMMMM MMMMMMMMMMMM IMMMMMMMM MMMMMMO =MMMMM MMMMM MMMMMME MMMMMMM: MMMMMMMMMO .MMMMMMMM MMMMMM",0,0,0,0.45,6000,1500,false,"黑体",1]
-[0.4,0.46,"1-1",10,"MMMMMM= MMMMMMMMMMMM MMMMMMMMMMMMM OMMMMMMMM8 MMMMMMM MMMMM MMMMM: IMMMMMMM MMMMMMMM. MMMMMMMMMM; #MMMMMMMMM MMMMMMM",0,0,0,0.46,6000,1500,false,"黑体",1]
-[0.4,0.47,"1-1",10,"MMMMMMM8 MMMMMMMMMMMMM:MMMMMMMMMMMMMMMMMMMMMMMMI MMMMMMMO MMMMM .MMMMM MMMMMMM# MMMMMMMMM+.MMMMMMMMMMM MMMMMMMMMM8 oMMMMMMMM",0,0,0,0.47,6000,1500,false,"黑体",1]
-[0.4,0.48,"1-1",10,"MMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM MMMMMI MMMMM MMMMMMMM# MMMMMMMMMMMMMMMMMMMMMMMI:MMMMMMMMMMM MMMMMMMMMM",0,0,0,0.48,6000,1500,false,"黑体",1]
-[0.4,0.49,"1-1",10,"MMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMO MMMMM ; MMMMM; EMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMM",0,0,0,0.49,6000,1500,false,"黑体",1]
-[0.4,0.5,"1-1",10,"MMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM oMMMMMMMMM iMM M M` ~MMM ~MMMMMMMMMM ~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8 ~MMMMMMMMMMMMM",0,0,0,0.5,6000,1500,false,"黑体",1]
-[0.4,0.51,"1-1",10,"MMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = MM. MM ~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMM",0,0,0,0.51,6000,1500,false,"黑体",1][0.4,0.52,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME MMM MMM ~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +MMMMMMMMMMMMMMMM",0,0,0,0.52,6000,1500,false,"黑体",1][0.4,0.53,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMM MMMMM8 iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.53,6000,1500,false,"黑体",1][0.4,0.54,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM= EMMMMMMMMM MMMMMMMM# +MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.54,6000,1500,false,"黑体",1]
-[0.4,0.55,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#8EMMMMMM EMMMMMMMMMMMM +MMMMMMMMMMMM= iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.55,6000,1500,false,"黑体",1]
-[0.4,0.56,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ` EMMMMMMMMMMMMMMM MMMMMMMMMMMMMMM#. MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.56,6000,1500,false,"黑体",1]
-[0.4,0.57,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Io MMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMO MMiEMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.57,6000,1500,false,"黑体",1]
-[0.4,0.58,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM; .MMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMo OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.58,6000,1500,false,"黑体",1]
-[0.4,0.59,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMM;:=#MMMM#o; ;MMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMM8. `EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.59,6000,1500,false,"黑体",1]
-[0.4,0.6,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMM= ;EMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMM; `;=++MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.6,6000,1500,false,"黑体",1]
-[0.4,0.61,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8. IMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~ ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMi iMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.61,6000,1500,false,"黑体",1][0.4,0.62,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO=;` I#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM# MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8i. ~oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.62,6000,1500,false,"黑体",1]
-[0.4,0.63,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.63,6000,1500,false,"黑体",1]
-[0.4,0.64,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.64,6000,1500,false,"黑体",1][0.4,0.65,"1-1",10,"MMME#M88M8MMoMOOM8MMME#OEMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.65,6000,1500,false,"黑体",1][0.4,0.66,"1-1",10,"#MMMMMMMMMMMM#MM#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.66,6000,1500,false,"黑体",1][0.4,0.67,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",0,0,0,0.67,6000,1500,false,"黑体",1][0.4,0.68,"1-1",10,"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n",0,0,0,0.68,6000,1500,false,"黑体",1][89,206,"1-0",1,"「刻む伤は愈えないのかな?」",0,0,89,206,500,0,0,"SimHei",true]
-[89,206,"1-0",1,"「刻む伤は愈えないのかな?」",0,0,89,206,500,0,0,"SimHei",true]
-[89,206,"1-0",1,"「刻む伤は愈えないのかな?」",0,0,89,206,500,0,0,"SimHei",true]
-[0.99,0,"1-1",2.2,"喉\nを\n枯\nら\nし\n叫\nウ\n音\n色 ",0,0,0,0,2200,0,0,"SimHei",true]
-[0.99,0,"1-1",2,"喉\nを\n枯\nら\nし\n叫\nウ\n音\n色 ",0,0,0,0,2000,0,0,"SimHei",true]
-[0.99,0,"1-1",2.1,"喉\nを\n枯\nら\nし\n叫\nウ\n音\n色 ",0,0,0,0,2100,0,0,"SimHei",true]
-[0.99,0,"1-1",2.3,"喉\nを\n枯\nら\nし\n叫\nウ\n音\n色 ",0,0,0,0,2300,0,0,"SimHei",true]
-[0.99,0,"1-1",2.4,"喉\nを\n枯\nら\nし\n叫\nウ\n音\n色 ",0,0,0,0,2400,0,0,"SimHei",true]
-[0,0,"1-1",2,"旋\n律\nは\n朱\nの\n虹\nと\nな\nり\n\n\n\n",0,0,0.99,0,2000,0,0,"SimHei",true]
-[0,0,"1-1",2.2,"旋\n律\nは\n朱\nの\n虹\nと\nな\nり\n\n\n\n",0,0,0.99,0,2200,0,0,"SimHei",true]
-[0,0,"1-1",2.4,"旋\n律\nは\n朱\nの\n虹\nと\nな\nり\n\n\n\n",0,0,0.99,0,2400,0,0,"SimHei",true]
-[0,0,"1-1",2.1,"旋\n律\nは\n朱\nの\n虹\nと\nな\nり\n\n\n\n",0,0,0.99,0,2100,0,0,"SimHei",true]
-[0,0,"1-1",2.3,"旋\n律\nは\n朱\nの\n虹\nと\nな\nり\n\n\n\n",0,0,0.99,0,2300,0,0,"SimHei",true]
-[0.99,0.8,"1-1",2,"君屠る此ノ色彩",0,0,0,0.8,2000,0,0,"SimHei",true][0.99,0.2,"1-1",2,"君屠る此ノ色彩",0,0,0,0.2,2000,0,0,"SimHei",true]
-[0.99,0.6,"1-1",2,"君屠る此ノ色彩",0,0,0,0.6,2000,0,0,"SimHei",true]
-[0.99,0,"1-1",2,"君屠る此ノ色彩",0,0,0,0,2000,0,0,"SimHei",true]
-[0.99,0.4,"1-1",2,"君屠る此ノ色彩",0,0,0,0.4,2000,0,0,"SimHei",true]
-[0,0.1,"1-1",3,"喉を枯らし叫ウ音色",0,0,0.99,0.1,3000,0,0,"SimHei",true]
-[0,0.5,"1-1",3,"喉を枯らし叫ウ音色",0,0,0.99,0.5,3000,0,0,"SimHei",true]
-[0,0.9,"1-1",3,"喉を枯らし叫ウ音色",0,0,0.99,0.9,3000,0,0,"SimHei",true]
-[0,0.3,"1-1",3,"喉を枯らし叫ウ音色",0,0,0.99,0.3,3000,0,0,"SimHei",true]
-[0,0.7,"1-1",3,"喉を枯らし叫ウ音色",0,0,0.99,0.7,3000,0,0,"SimHei",true]
-[0.39,0.3,"1-0",3,"彩られたら",0,0,0.39,0.3,3000,0,0,"SimHei",true]
-[0.28,0.23,"1-0",3,"赤キ雨に",0,0,0.28,0.23,3000,0,0,"SimHei",true][0.09,0.75,"1-0",2,"声嘶力竭歌唱的音色 ",0,0,0.09,0.75,3000,0,1,"SimHei",true]
-[0.05,0.68,"1-0",2,"重复着一个单语",0,0,0.05,0.68,3000,0,1,"SimHei",true]
-[0.05,0.68,"1-0",2,"我之中的我",0,0,0.05,0.68,3000,0,1,"SimHei",true]
-[0.05,0.68,"1-0",2,"多少遍多少遍多少遍",0,0,0.05,0.68,3000,0,1,"SimHei",true]
-[0.05,0.68,"1-0",2,"重复着 重复着 重复着",0,0,0.05,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"紧握的左手异常甜蜜",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.05,0.68,"1-0",2,"不断重复",0,0,0.05,0.68,3000,0,1,"SimHei",true][0.05,0.68,"1-0",2,"歌唱",0,0,0.05,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"随后便给予你杀戮",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"挥舞的右手无比甘甜",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"笑着的嘴巴已然开裂",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"好快乐 刻录在你的脑髓之中",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.04,0.68,"1-0",2,"快乐到颤抖 好快乐",0,0,0.04,0.68,3000,0,1,"SimHei",true]
-[0.99,0.25,"1-1",3,"狂気満ちて行くわ",0,0,0,0.25,3000,0,1,"SimHei",true][0.99,0.6,"1-1",3,"この気持ち気付いて",0,0,0,0.6,3000,0,1,"SimHei",true]
-[0,0.4,"1-1",3,"狂気満ちて行くわ",0,0,0.99,0.4,3000,0,1,"SimHei",true]
-[0,0.8,"1-1",3,"爱溢れて行くわ",0,0,0.99,0.8,3000,0,1,"SimHei",true]
-[0.99,0.25,"1-1",3,"止めることはできない",0,0,0,0.25,3000,0,1,"SimHei",true]
-[0,0.1,"1-1",3,"希望你能察觉到我的心情",0,0,0.99,0.1,3000,0,1,"SimHei",true]
-[0,0.5,"1-1",3,"希望你能察觉到我的心情",0,0,0.99,0.5,3000,0,1,"SimHei",true]
-[0.99,0.3,"1-1",3,"渐渐地陷入疯狂",0,0,0,0.3,3000,0,1,"SimHei",true]
-[0.99,0.7,"1-1",3,"爱就要满溢出来",0,0,0,0.7,3000,0,1,"SimHei",true]
-[0,0.9,"1-1",3," 再也无法停止",0,0,0.99,0.9,3000,0,1,"SimHei",true]深く朱き潤む瞳 甘い色のスカート揺らす
-幼き頬 朱を滲ませ 疼きに足を崩される
-「その瞳には誰が映るのかな?」
-「心壊れているのかな?」
-「この想い届かないのかな?」
-「刻む傷は癒えないのかな?」あなたのその全てが欲しくて 欲しくて震えてる (この気持ち気付いて どうして気付いてくれないの)
-「そうして時を刻むの?」愛で撫でて揺さ振られて この衝動殺してよ (愛漏れて行くわ 止めることはできない…)
-喉を枯らし叫ウ音色 旋律は朱の虹となり甘美なその鼓動を うだち尽くして止めようか (狂気に満ちてゆくわ どうすれば止まるの)
-その肌を穢し尽くし 辱めるのは私だけ (この気持ち壊れたて どこへ辿り着くのでしょうか)
-喉を枯らし叫ウ音色 赤キ雨に彩られたら
-綺麗な舞台の出来上がり 私独り其処で踊る
-「その願い潰えたのかな?」
-君屠る此ノ色彩 甘く深き色を放つ
-「その想い断たれたのかな?」
-「その希望絶えたのかな?」
-「その瞳焼かれたのかな?」「そして誰もいなくなる?」
-其ノ生を引き裂かれて赤銀を吐き消し飛べ(どこにも本当の 私なんていないのだから
-其ノ生の華散らして 極彩に咲き我が糧 (儚い命だわ 美しく愛おしい)其ノ生がお前ならば 喰らい尽くして血肉にす (永遠に私のものになるしかない)
-「その肌は穢されたかな?」
-私の中の私が 私の中の私が(この気持ち気付いて…) ひとつの単語を
-其ノ四肢を贄と捧げ 我が足元の死屍となれ (ずっと私の傍に もう行かさないから…)無盡蔵に(狂気満ちて行くわ…)繰り返し 繰り返し 繰り返し 繰り返し 歌う (この気持ち気付いて…)
-掴む左手が甘くて 震える右手が甘くて
-何度も何度も何度も
-笑う口が裂けても それがあなたを殺し
-楽しくて 脳髄を焼くように(愛溢れて行くわ 止めることはできない…)
-楽しくて 震えて 楽しくて 楽しくて
-この気持ち気付いて どうして気付いてくれないの
-この気持ち気付いて どこへ辿り着くのでしょうか
-狂気満ちて行くわ どうすれば止まるの
-『殺してあげる』
-其ノ四肢を贄と捧げ 我が足元の死屍となれ (ずっと私の傍に あなたといきたいの…)好了,完美结束!!!
-[0.05,0.67,"1-0",3,"「那双眼眸映出的是谁?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0.05,0.67,"1-0",5,"「那双眼眸映出的是谁?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0.05,0.67,"1-0",5,"「心已经被弄坏了吗?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0.05,0.67,"1-0",5,"「受的伤害无法痊愈吗?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0.05,0.67,"1-0",5,"「这样做能刻画下时间吗?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0.05,0.67,"1-0",5,"「弄坏后就不能恢复吗?」",0,0,0.05,0.67,3000,0,1,"SimSun",true]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M585,267L585,267"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M587,261L587,261"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M617,283L617,283"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M651,268L651,268"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M583,248L583,248"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M611,364L611,364"][0,0,"1-0",4.5,".",0,0,0,0,500,0,0,"SimHei",true,"M585,272L585,272"]
-[0,0,"1-0",4.5,".",0,0,0,0,500,0,0,"SimHei",true,"M568,252L568,252"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M684,315L684,315"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M662,409L662,409"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M625,413L625,413"]
-[0,0,"1-0",4.5,"●",0,0,0,0,500,0,0,"SimHei",true,"M610,422L610,422"][0,0,"1-0",4.5,".",0,0,0,0,500,0,0,"SimHei",true,"M682,359L682,359"]
-[0,0,"1-0",4.5,".",0,0,0,0,500,0,0,"SimHei",true,"M702,400L702,400"]
-[169,387,"1-0",1,"缲り返し",0,0,169,387,500,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,100,0,1,"SimHei",true]
-[172,386,"1-0",0.9,"缲り返し",0,0,257,386,600,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,700,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,800,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,900,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,1000,0,1,"SimHei",true][172,386,"1-0",1,"缲り返し",0,0,257,386,200,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,300,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,400,0,1,"SimHei",true]
-[172,386,"1-0",1,"缲り返し",0,0,257,386,500,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,169,1000,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,184,100,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,184,200,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,184,300,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,184,400,0,1,"SimHei",true]
-[427,169,"1-0",0.5,"缲り返し",0,0,427,184,500,0,1,"SimHei",true]
-[170,255,"1-0",0.5,"缲り返し",0,0,170,255,500,0,1,"SimHei",true][170,255,"1-0",0.5,"缲り返し",0,0,170,245,100,0,1,"SimHei",true]
-[170,255,"1-0",0.5,"缲り返し",0,0,170,245,200,0,1,"SimHei",true]
-[170,255,"1-0",0.5,"缲り返し",0,0,170,245,300,0,1,"SimHei",true]
-[170,255,"1-0",0.6,"缲り返し",0,0,170,245,400,0,1,"SimHei",true]
-[170,255,"1-0",0.5,"缲り返し",0,0,170,245,500,0,1,"SimHei",true]
-[472,73,"1-0",0.5,"缲り返し",0,0,472,84,100,0,1,"SimHei",true]
-[472,73,"1-0",0.5,"缲り返し",0,0,472,84,200,0,1,"SimHei",true]
-[472,73,"1-0",0.5,"缲り返し",0,0,472,84,300,0,1,"SimHei",true]
-[472,84,"1-0",0.5,"缲り返し",0,0,472,84,500,0,1,"SimHei",true]
-[472,73,"1-0",0.5,"缲り返し",0,0,472,84,400,0,1,"SimHei",true][472,73,"1-0",0.5,"缲り返し",0,0,472,84,500,0,1,"SimHei",true]
-[472,92,"1-0",0.5,"缲り返し",0,0,472,84,500,0,1,"SimHei",true]
-[472,92,"1-0",0.5,"缲り返し",0,0,472,84,400,0,1,"SimHei",true]
-[472,92,"1-0",0.5,"缲り返し",0,0,472,84,300,0,1,"SimHei",true]
-[472,92,"1-0",0.5,"缲り返し",0,0,472,84,200,0,1,"SimHei",true]
-[472,92,"1-0",0.4,"缲り返し",0,0,472,84,100,0,1,"SimHei",true]
-[195,212,"0-1",0.7,"缲り返し",0,0,215,213,200,0,1,"SimHei",true]
-[195,212,"0-1",0.7,"缲り返し",0,0,215,213,300,0,1,"SimHei",true]
-[195,212,"0-1",0.7,"缲り返し",0,0,215,213,400,0,1,"SimHei",true]
-[195,212,"0-1",0.7,"缲り返し",0,0,215,213,500,0,1,"SimHei",true][195,212,"0-1",0.7,"缲り返し",0,0,215,213,600,0,1,"SimHei",true]
-[215,213,"1-0",0.7,"缲り返し",0,0,215,213,100,0,1,"SimHei",true]
-[235,214,"0-1",0.7,"缲り返し",0,0,215,213,600,0,1,"SimHei",true]
-[235,214,"0-1",0.7,"缲り返し",0,0,215,213,500,0,1,"SimHei",true]
-[235,214,"0-1",0.7,"缲り返し",0,0,215,213,400,0,1,"SimHei",true]
-[235,214,"0-1",0.6,"缲り返し",0,0,215,213,300,0,1,"SimHei",true]
-[235,214,"0-1",0.7,"缲り返し",0,0,215,213,200,0,1,"SimHei",true]
-[235,214,"0-1",0.7,"缲り返し",0,0,215,213,700,0,1,"SimHei",true]
-[195,212,"0-1",0.7,"缲り返し",0,0,215,213,700,0,1,"SimHei",true][213,216,"1-0",0.7,"缲\nり\n返\nし",0,0,213,216,200,0,1,"SimHei",true]
-[200,215,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,200,0,1,"SimHei",true]
-[200,215,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,300,0,1,"SimHei",true]
-[200,215,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,400,0,1,"SimHei",true]
-[229,214,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,400,0,1,"SimHei",true]
-[229,214,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,300,0,1,"SimHei",true][229,214,"0.5-0",0.6,"缲\nり\n返\nし",0,0,213,216,200,0,1,"SimHei",true]
-[473,213,"1-0",0.8,"缲\nり\n返\nし",0,0,473,213,200,0,1,"SimHei",true]
-[473,204,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,500,0,1,"SimHei",true]
-[473,204,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,600,0,1,"SimHei",true]
-[473,204,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,700,0,1,"SimHei",true]
-[472,224,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,600,0,1,"SimHei",true][472,224,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,700,0,1,"SimHei",true]
-[472,224,"0.5-0",0.8,"缲\nり\n返\nし",0,0,473,213,500,0,1,"SimHei",true]
-[430,342,"1-0",0.5,"歌う",0,0,430,342,500,0,1,"SimHei",true]
-[430,342,"1-0",0.5,"歌う",0,0,430,342,500,0,1,"SimHei",true]
-[476,209,"1-0",0.1,"缲\nり\n返\nし",0,0,476,209,500,0,1,"SimHei",true]
-[474,217,"1-0",0.1,"缲\nり\n返\nし",0,0,474,217,500,0,1,"SimHei",true]
-[470,214,"1-0",0.1,"缲\nり\n返\nし",0,0,470,214,500,0,1,"SimHei",true][425,338,"1-0",0.1,"歌う",0,0,425,338,500,0,1,"SimHei",true]
-[425,333,"1-0",0.1,"歌う",0,0,425,333,500,0,1,"SimHei",true]
-[431,332,"1-0",0.1,"歌う",0,0,431,332,500,0,1,"SimHei",true]
-[299,361,"0-1",0.5,"缲\nり\n返\nし",0,0,299,361,500,0,1,"SimHei",true]
-[301,367,"0-1",0.5,"缲\nり\n返\nし",0,0,299,361,500,0,1,"SimHei",true]
-[301,359,"0-1",0.7,"缲\nり\n返\nし",0,0,301,359,500,0,1,"SimHei",true]
-[300,357,"0-1",0.5,"缲\nり\n返\nし",0,0,299,361,500,0,1,"SimHei",true][393,173,"1-1",3,"甘\nく\nて",0,0,393,173,500,0,1,"SimHei",true]
-[185,168,"1-1",3,"掴む左手が",340,0,185,168,500,0,1,"SimHei",true]
-[83,336,"1-0",1,"甘くて",350,0,83,336,500,0,0,"SimHei",true]
-[83,336,"1-0",1,"甘くて",350,0,83,336,500,0,0,"SimHei",true]
-[546,93,"1-0",1,"甘くて",20,0,546,93,500,0,0,"SimHei",true]
-[546,93,"1-0",1,"甘くて",20,0,546,93,500,0,0,"SimHei",true]
-[343,299,"1-1",2,"笑う口が裂けても",0,0,343,299,500,0,1,"SimHei",true]
-[462,332,"1-1",2,"⌒",180,0,462,332,500,0,1,"SimHei",true]
-[528,298,"1-1",2,"▏",0,0,528,298,500,0,0,"SimHei",true]
-[515,298,"1-1",2,"▏",0,0,515,298,500,0,0,"SimHei",true]
-[388,342,"1-1",1,"それがあなたを し",0,0,388,342,500,0,0,"SimHei",true]
-[388,342,"1-1",1," █",0,0,388,342,500,0,0,"SimHei",true][87,85,"1-1",1,"楽しくて",20,0,87,85,500,0,1,"SimHei",true]
-[171,171,"1-1",1,"楽しくて",20,0,171,171,500,0,1,"SimHei",true]
-[388,342,"1-1",1," 杀",0,0,388,342,500,0,0,"SimHei",true]
-[174,341,"1-1",1,"脳髄を焼",340,0,174,341,500,0,1,"SimHei",true]
-[300,297,"1-1",1,"くように",0,0,300,297,500,0,1,"SimHei",true]
-[451,381,"1-1",0.5,"楽しくて ",0,0,451,381,500,0,1,"SimHei",true]
-[513,106,"1-1",1,"楽しくて ",40,0,513,106,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true][118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.5,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.6,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[118,163,"1-0",0.6,"震えて",10,0,118,163,500,0,1,"SimHei",true]
-[513,257,"1-0",1,"楽しくて",350,0,513,257,500,0,1,"SimHei",true]
-[67,75,"1-0",0.5,"楽しくて",350,0,67,75,500,0,1,"SimHei",true]
-[429,279,"1-0",0.5,"楽しくて",20,0,429,279,500,0,1,"SimHei",true]
-[353,411,"1-0",0.5,"楽しくて",70,0,353,411,500,0,1,"SimHei",true][636,134,"1-0",0.5,"楽しくて",40,0,636,134,500,0,1,"SimHei",true]
-[76,450,"1-0",0.5,"楽しくて",320,0,76,450,500,0,1,"SimHei",true]
-[180,186,"0.5-0",0.5,"楽しくて",0,0,180,186,500,0,1,"SimHei",true]
-[566,457,"1-0",0.5,"楽しくて",320,0,566,457,500,0,1,"SimHei",true]
-[177,226,"1-1",2,"赤い 赤い \n 赤い 赤い",350,0,177,226,500,0,1,"SimHei",true]
-[442,238,"1-1",2,"赤い \n 赤い ",20,0,442,238,500,0,1,"SimHei",true]
-[288,302,"1-1",2,"赤い 赤い \n \n 赤い ",355,0,288,302,500,0,1,"SimHei",true]
-[484,168,"1-1",2,"赤い 赤い \n 赤い \n 赤い ",20,0,484,168,500,0,1,"SimHei",true]
-[183,325,"1-1",2,"赤い 赤い \n 赤い ",0,0,183,325,500,0,1,"SimHei",true][485,382,"1-1",2,"赤い 赤い \n \n \n \n",340,0,485,382,500,0,1,"SimHei",true]
-[691,247,"1-1",2,"赤い ",340,0,691,247,500,0,1,"SimHei",true]
-[365,258,"1-1",2,"赤い ",20,0,365,258,500,0,1,"SimHei",true]
-[225,273,"1-1",2,"赤い ",20,0,225,273,500,0,1,"SimHei",true]
-[280,339,"1-1",2,"赤い ",10,0,280,339,500,0,1,"SimHei",true]
-[373,315,"1-1",2,"赤い ",10,0,373,315,500,0,1,"SimHei",true]
-[658,275,"1-1",2,"赤い ",350,0,658,275,500,0,1,"SimHei",true][511,245,"1-1",2,"赤い ",350,0,511,245,500,0,1,"SimHei",true]
-[588,284,"1-1",2,"赤い ",10,0,588,284,500,0,1,"SimHei",true]
-[215,212,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,215,212,500,0,1,"SimHei",true]
-[280,188,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,280,188,500,0,1,"SimHei",true]
-[173,232,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,173,232,500,0,1,"SimHei",true]
-[428,88,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,428,88,500,0,1,"SimHei",true]
-[551,110,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,551,110,500,0,1,"SimHei",true]
-[343,170,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,343,170,500,0,1,"SimHei",true]
-[807,181,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,807,181,500,0,1,"SimHei",true]
-[644,140,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,644,140,500,0,1,"SimHei",true]
-[731,163,"1-1",2,"赤い\n赤い\n赤い \n赤い",0,0,731,163,500,0,1,"SimHei",true][0,4,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,0,4,500,0,1,"SimHei",true]
-[93,2,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n",0,0,93,2,500,0,1,"SimHei",true]
-[170,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n\n",0,0,170,0,500,0,1,"SimHei",true]
-[291,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,291,0,500,0,1,"SimHei",true]
-[0.95,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,0.95,0,500,0,1,"SimHei",true]
-[0.85,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n\n",0,0,0.85,0,500,0,1,"SimHei",true]
-[0.76,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n\n",0,0,0.76,0,500,0,1,"SimHei",true]
-[375,0,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n\n",0,0,375,0,500,0,1,"SimHei",true]
-[513,2,"1-1",3,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n",0,0,513,2,500,0,1,"SimHei",true][206,0,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n",0,0,206,0,500,0,1,"SimHei",true]
-[326,0,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n甘い\n甘い\n甘い\n\n",0,0,326,0,500,0,1,"SimHei",true]
-[55,3,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n",0,0,55,3,500,0,1,"SimHei",true]
-[495,0,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,495,0,500,0,1,"SimHei",true]
-[600,0,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,600,0,500,0,1,"SimHei",true]
-[526,4,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,526,4,500,0,1,"SimHei",true][720,5,"1-1",2,"甘い \n甘い \n甘い\n甘い\n甘い\n甘い \n甘い\n甘い \n甘い\n甘い\n甘い\n甘い \n甘い",0,0,720,5,500,0,1,"SimHei",true]
-[0,0,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,197,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,197,500,0,1,"SimHei",true]
-[0,393,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,393,500,0,1,"SimHei",true]
-[488,0,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,488,0,500,0,1,"SimHei",true]
-[591,197,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,591,197,500,0,1,"SimHei",true]
-[528,400,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,528,400,500,0,1,"SimHei",true]
-[0,0,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true][0,394,"1-1",3,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,394,500,0,1,"SimHei",true]
-[197,228,"1-1",0.5,"嬉しくなっても",0,0,197,228,500,0,1,"SimHei",true]
-[0,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,299,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,299,500,0,1,"SimHei",true]
-[570,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,570,0,500,0,1,"SimHei",true]
-[572,299,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,572,299,500,0,1,"SimHei",true]
-[648,347,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,648,347,500,0,1,"SimHei",true]
-[0,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,344,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,344,500,0,1,"SimHei",true]
-[645,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,645,0,500,0,1,"SimHei",true]
-[1,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,1,0,500,0,1,"SimHei",true]
-[0,198,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,198,500,0,1,"SimHei",true]
-[386,0,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,386,0,500,0,1,"SimHei",true]
-[386,197,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,386,197,500,0,1,"SimHei",true]
-[384,395,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,384,395,500,0,1,"SimHei",true]
-[0,396,"1-1",3,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n",0,0,0,396,500,0,1,"SimHei",true]
-[127,342,"1-1",1,"あなた",0,0,127,342,500,0,1,"SimHei",true]
-[265,205,"1-1",1,"甘い",0,0,265,205,500,0,1,"SimHei",true]
-[0,0,"0.5-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,0.87,"0.5-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.87,500,0,1,"SimHei",true]
-[0.11,0.14,"0.5-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.11,0.14,500,0,1,"SimHei",true]
-[0.12,0.82,"0.5-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.12,0.82,500,0,1,"SimHei",true]
-[0,0.47,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.47,500,0,1,"SimHei",true]
-[0.09,0,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.09,0,500,0,1,"SimHei",true]
-[0,0.7,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.7,500,0,1,"SimHei",true]
-[0.63,0.34,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.63,0.34,500,0,1,"SimHei",true]
-[0.06,0.2,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.06,0.2,500,0,1,"SimHei",true]
-[0.42,0.41,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.42,0.41,500,0,1,"SimHei",true]
-[0.68,0.08,"1-0",1.1,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.68,0.08,500,0,1,"SimHei",true]
-[0.7,0.82,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.7,0.82,500,0,1,"SimHei",true]
-[0,0.08,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.08,500,0,1,"SimHei",true]
-[0.54,0.58,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.54,0.58,500,0,1,"SimHei",true]
-[0.76,0.11,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.76,0.11,500,0,1,"SimHei",true]
-[0.62,0.18,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.62,0.18,500,0,1,"SimHei",true]
-[0.19,0.54,"1-0",1.1,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.19,0.54,500,0,1,"SimHei",true]
-[0.89,0.01,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0.89,0.01,500,0,1,"SimHei",true]
-[0,0.87,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.87,500,0,1,"SimHei",true]
-[0,0,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0,500,0,1,"SimHei",true]
-[0,0.3,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.3,500,0,1,"SimHei",true]
-[0,0.6,"1-0",1.2,"甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n甘い 甘い 甘い 甘い 甘い\n",0,0,0,0.6,500,0,1,"SimHei",true]
-[0.3,0.37,"1-0",1,"赤い",0,0,0.3,0.37,500,0,1,"SimHei",true]
-[0,0,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0,0,500,0,1,"SimHei",true]
-[0.02,0.59,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.02,0.59,500,0,1,"SimHei",true]
-[0.51,0.02,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.51,0.02,500,0,1,"SimHei",true]
-[0.16,0.16,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.16,0.16,500,0,1,"SimHei",true]
-[0.65,0.62,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.65,0.62,500,0,1,"SimHei",true]
-[0,0.87,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0,0.87,500,0,1,"SimHei",true]
-[0.64,0.01,"1-0",1.1,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.64,0.01,500,0,1,"SimHei",true]
-[0.01,0.46,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.01,0.46,500,0,1,"SimHei",true][0.03,0.02,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.03,0.02,500,0,1,"SimHei",true]
-[0.63,0.34,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.63,0.34,500,0,1,"SimHei",true]
-[0.14,0.15,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.14,0.15,500,0,1,"SimHei",true]
-[0.75,0.86,"0.5-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.75,0.86,500,0,1,"SimHei",true]
-[0.57,0.64,"1-0",1.2,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.57,0.64,500,0,1,"SimHei",true][0.57,0.32,"1-0",1.1,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.57,0.32,500,0,1,"SimHei",true]
-[0.59,0,"1-0",1.1,"赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い\n赤い 赤い 赤い 赤い",0,0,0.59,0,500,0,1,"SimHei",true]
-[167,289,"1-1",3,"●",0,0,167,289,500,0,0,"SimHei",true]
-[258,337,"1-0",1,"●",0,0,258,337,500,0,0,"SimHei",true]
-[195,244,"1-0",1,"●",0,0,195,244,500,0,0,"SimHei",true]
-[141,262,"1-1",1,"●",0,0,141,262,500,0,0,"SimHei",true]
-[298,312,"1-0",1,"●",0,0,298,312,500,0,0,"SimHei",true]
-[299,328,"1-0",1,"●",0,0,299,328,500,0,0,"SimHei",true][179,226,"1-1",1,"●",0,0,179,226,500,0,0,"SimHei",true]
-[272,398,"1-0",1,"●",0,0,272,398,500,0,0,"SimHei",true]
-[193,239,"1-0",1,"●",0,0,193,239,500,0,0,"SimHei",true]
-[268,241,"1-0",1,"●",0,0,268,241,500,0,0,"SimHei",true]
-[229,257,"1-0",1,"●",0,0,229,257,500,0,0,"SimHei",true]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M204,452L204,452"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M195,437L195,437"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M282,536L282,536"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M222,424L222,424"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M178,334L178,334"][0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M276,340L276,340"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M327,252L327,252"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M424,288L424,288L424,288"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M306,361L306,361"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M407,185L407,185"][0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M461,202L461,202"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M591,301L591,301"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M546,230L546,230"]
-[0,0,"1-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M394,311L394,311"]
-[0,0,"1-0","2",".",0,0,0,0,500,0,0,"SimHei",true,"M394,311L394,311"]
-[0,0,"1-0","2",".",0,0,0,0,500,0,0,"SimHei",true,"M522,202L522,202L522,202"][0,0,"1-0","2",".",0,0,0,0,500,0,0,"SimHei",true,"M334,296L334,296"]
-[0,0,"0.5-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M429,346L429,346"]
-[0,0,"0.5-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M544,290L544,290"]
-[0,0,"0.5-0","2","●",0,0,0,0,500,0,0,"SimHei",true,"M277,276L277,276"]
-[0,0,"0.5-0","2",".",0,0,0,0,500,0,0,"SimHei",true,"M490,322L490,322L490,322"]
-[0,0,"0.5-0","2",".",0,0,0,0,500,0,0,"SimHei",true,"M218,258L218,258"][0,0.83,"1-0",5,"我之中的我",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"重复着一个单语",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"多少遍",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"不断重复",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"重复着",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"歌唱",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"紧握的左手异常甜蜜",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"挥舞的右手无比甘甜",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"笑着的嘴巴已然开裂",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"随后便给予你杀戮",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"好甜",0,0,0,0.83,500,0,1,"SimHei",true][0,0.83,"1-0",2,"要刻入脑髓",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"快乐到颤抖 ",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2,"快乐得",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2.1,"好快乐",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",2.1,"快乐到颤抖 ",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"你…好甜…好..甜.....",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"好红…好..红.....",0,0,0,0.83,500,0,1,"SimHei",true]
-[0,0.83,"1-0",3,"「让我杀了你!」",0,0,0,0.83,500,0,1,"SimHei",true]
-[434,96,"1-1",1.2,"が手右るえ震\n",20,0,434,96,500,0,1,"SimHei",true]赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い 赤い
-[574,0,"1-1",4,"赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n",0,0,574,0,500,0,1,"SimHei",true]
-[571,249,"1-1",4,"赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n",0,0,571,249,500,0,1,"SimHei",true]
-[568,496,"1-1",4,"赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n赤い赤い赤い赤い赤い赤い\n",0,0,568,496,500,0,1,"SimHei",true]
-科普一下:这个视频是关于东方project的同人作品《绯色月下、狂咲ノ绝》
-是日本同人游戏社团上海爱丽丝幻乐团所制作的一系列同人游戏、相关作品
-东方project 不是番
-[0.25,0.11,"1-1",7,"███████/n█ █/n█ █/n█ █/n█ █/n█ █/n███████",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",6,"/n █████/n █ █/n █ █/n █ █/n █████/n",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",5,"/n/n ███/n █ █/n ███",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n █",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n 让",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",2,"/n/n/n 我",0,0,0.25,0.11,500,0,false,"黑体",1][0.25,0.11,"1-1",2,"/n/n/n 了",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",2,"/n/n/n 你",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-0",0.5,"/n ╱/n ╱/n ╱/n ╱/n ╱",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-0",0.5,"/n ╱/n ╱/n ╱/n ╱/n ╱",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"███████/n███████/n███████/n███████/n███████/n███████/n███████",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n ◢",0,0,0.25,0.11,500,0,false,"黑体",1][0.25,0.11,"1-1",4,"/n/n 让",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n/n 杀",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n/n ◤",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n 我",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n 杀",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n/n 了",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0.25,0.11,"1-1",4,"/n/n/n/n 你",0,0,0.25,0.11,500,0,false,"黑体",1]
-[0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,10000,0,false,"楷体",1]
-[0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,9100,0,false,"楷体",1][0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,7600,0,false,"楷体",1]
-[0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,7000,0,false,"楷体",1]
-[0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,6500,0,false,"楷体",1]
-[0,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0.99,0,8300,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,10000,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,9100,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,7600,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,7000,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,6500,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,8300,0,false,"楷体",1]
-[0.99,0,"1-1",6,"其/nノ/n生/nを/n引/nき/n裂/nか/nれ/nて/n/n赤/n银/nを/n吐/nき/n消/nし/n飞/nべ",0,0,0,0,6100,0,false,"楷体",1]
-[0.5,0.5,"1-1",2," 杀してあげる",0,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",10,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",20,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",30,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",40,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",50,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",60,0,0.5,0.5,500,0,1,"SimSun",true][0.5,0.5,"1-1",2," 杀してあげる",70,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",120,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",80,0,0.5,0.5,500,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",130,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",140,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",150,0,0.5,0.5,600,0,1,"SimSun",true][0.5,0.5,"1-1",2," 杀してあげる",160,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",170,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",90,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",100,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",110,0,0.5,0.5,600,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",220,0,0.5,0.5,900,0,1,"SimSun",true][0.5,0.5,"1-1",2," 杀してあげる",180,0,0.5,0.5,700,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",230,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",240,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",250,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",260,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",270,0,0.5,0.5,900,0,1,"SimSun",true][0.5,0.5,"1-1",2," 杀してあげる",280,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",290,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",300,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",190,0,0.5,0.5,800,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",310,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",200,0,0.5,0.5,800,0,1,"SimSun",true][0.5,0.5,"1-1",2," 杀してあげる",210,0,0.5,0.5,800,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",320,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",330,0,0.5,0.5,900,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",340,0,0.5,0.5,1100,0,1,"SimSun",true]
-[0.5,0.5,"1-1",2," 杀してあげる",350,0,0.5,0.5,1100,0,1,"SimSun",true]
-[256,41,"1-1",2,"深",0,0,256,41,1100,0,1,"FangSong",true]
-[254,42,"1-1",2," く",0,0,254,42,1100,0,1,"FangSong",true][254,42,"1-1",2," 朱",0,0,254,42,1100,0,1,"FangSong",true]
-[254,42,"1-1",2," 润",0,0,254,42,1100,0,1,"FangSong",true]
-[254,42,"1-1",2," む",0,0,254,42,1100,0,1,"FangSong",true]
-[254,42,"1-1",2," き",0,0,254,42,1100,0,1,"FangSong",true]
-[254,42,"1-1",2," 瞳",0,0,254,42,1100,0,1,"FangSong",true]
-[131,213,"1-1",3," 甘",0,0,131,213,500,0,1,"FangSong",true]
-[190,232,"1-1",3," い",0,0,190,232,500,0,1,"FangSong",true]
-[264,250,"1-1",3," 色",0,0,264,250,500,0,1,"FangSong",true]
-[404,258,"1-1",3,"ス",355,0,404,258,500,0,1,"FangSong",true][463,239,"1-1",3,"カ",350,0,463,239,500,0,1,"FangSong",true]
-[500,209,"1-1",3,"ー",345,0,500,209,500,0,1,"FangSong",true]
-[334,259,"1-1",3," の",0,0,334,259,500,0,1,"FangSong",true]
-[525,168,"1-1",3,"ト",10,0,525,168,500,0,1,"FangSong",true]
-[532,119,"1-1",3,"揺",0,0,532,119,500,0,1,"FangSong",true]
-[490,92,"1-1",3,"ら",0,0,490,92,500,0,1,"FangSong",true]
-[443,83,"1-1",3,"す",0,0,443,83,500,0,1,"FangSong",true]
-[354,406,"1-1",3.2,"幼き頬 朱を渗ませ",350,0,354,406,500,0,1,"FangSong",true]
-[357,424,"1-1",3.2,"幼き頬 朱を渗ませ",10,0,357,424,500,0,1,"FangSong",true]
-[128,214,"1-1",3.5,"疼",350,0,128,214,500,0,1,"FangSong",true]
-[162,200,"1-1",3.5,"き",355,0,162,200,500,0,1,"FangSong",true][199,197,"1-1",3.5,"に",0,0,199,197,500,0,1,"FangSong",true]
-[239,208,"1-1",3.5,"足",5,0,239,208,500,0,1,"FangSong",true]
-[302,230,"1-1",3.5,"崩",20,0,302,230,500,0,1,"FangSong",true]
-[273,219,"1-1",3.5,"を",10,0,273,219,500,0,1,"FangSong",true]
-[331,243,"1-1",3.5,"さ",25,0,331,243,500,0,1,"FangSong",true]
-[356,261,"1-1",3.5,"れ",30,0,356,261,500,0,1,"FangSong",true]
-[380,281,"1-1",3.5,"る",35,0,380,281,500,0,1,"FangSong",true]
-[122,81,"0-1",1,"甘\nい\n幻\n视\nに\n支\n配\nさ\nれ",0,0,122,81,500,0,1,"FangSong",true]
-[122,81,"0-1",2,"甘\nい\n幻\n视\nに\n支\n配\nさ\nれ",0,0,122,81,500,0,1,"FangSong",true]
-[170,169,"1-0",3,"奏\nで\nて\nは\n咲\nく\n五\n指\nの\n调\nべ",0,0,170,169,500,0,1,"FangSong",true]
-[122,81,"1-1",2,"甘\nい\n幻\n视\nに\n支\n配\nさ\nれ",0,0,122,81,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",340,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",350,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",0,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",10,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",40,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",20,0,472,213,500,0,1,"FangSong",true][472,213,"1-0",0.5,"赤い红茶 滴る音",50,0,472,213,500,0,1,"FangSong",true]
-[472,213,"1-0",0.5,"赤い红茶 滴る音",30,0,472,213,500,0,1,"FangSong",true]
-[342,345,"1-1",3.5,"弄",350,0,342,345,500,0,1,"FangSong",true]
-[394,335,"1-1",3.5,"ん",350,0,394,335,500,0,1,"FangSong",true]
-[432,321,"1-1",3.5,"で",350,0,432,321,500,0,1,"FangSong",true]
-[452,311,"1-1",3.5,"は",270,0,452,311,500,0,1,"FangSong",true]
-[413,129,"1-0",0.5,"深く抉る",0,0,413,129,500,0,1,"FangSong",true]
-[410,421,"1-0",0.5,"深く抉る",0,0,410,421,500,0,1,"FangSong",true]
-[179,223,"1-0",0.5,"深く抉る",0,0,179,223,500,0,1,"FangSong",true]
-[68,383,"1-0",0.5,"深く抉る",0,0,68,383,500,0,1,"FangSong",true]
-[545,52,"1-0",0.5,"深く抉る",0,0,545,52,500,0,1,"FangSong",true]
-[53,151,"1-0",0.5,"深く抉る",0,0,53,151,500,0,1,"FangSong",true]
-[146,293,"1-0",0.5,"深く抉る",0,0,146,293,500,0,1,"FangSong",true]
-[579,272,"1-0",0.5,"深く抉る",0,0,579,272,500,0,1,"FangSong",true]
-[58,425,"1-0",3,"其ノ生を引き裂かれて",0,0,58,425,500,0,1,"SimSun",true][257,471,"1-0",3,"赤银を吐き消し飞べ",0,0,257,471,500,0,1,"SimSun",true]
-[259,474,"1-0",3,"极彩に咲き我が粮",0,0,259,474,500,0,1,"SimSun",true]
-[58,423,"1-0",3,"其ノ生の华散らして",0,0,58,423,500,0,1,"SimSun",true]
-[15,63,"1-1",6.2,"█████████████████████\n",3,0,15,63,500,0,0,"SimHei",true]
-[17,63,"1-1",6.2,"█████████████████████\n",3,0,17,63,500,0,0,"SimHei",true]
-[15,63,"0.5-0.5",6.2,"甘美なその鼓动を うだち尽くして止めようか",3,0,15,63,500,0,0,"SimHei, \"Microsoft JhengHei\"",true]
-[15,63,"1-1",1,"甘美",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美な",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なそ",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を う",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだ",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだち",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだち尽",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだち尽く",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだち尽くして",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止め",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止めよ",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止めよう",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止めようか",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",1,"甘美なその鼓动を うだち尽くし",3,0,15,63,500,0,1,"SimHei",true]
-[15,63,"1-1",0.5,"甘美なその鼓动を うだち尽くして止めようか",3,0,15,63,600,0,1,"SimHei",true]
-[15,63,"1-1",0.6,"甘美なその鼓动を うだち尽くして止めようか",3,0,15,63,600,0,1,"SimHei",true][34,299,"1-1",6.2,"██████████████████\n",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",0.6,"██████████████████\n",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"0.5-0.5",6.2,"狂気に満ちてゆくわどうすれば止まるの",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちて",0,0,34,299,600,0,1,"SimHei",true][34,299,"1-1",1,"狂気に満ちてゆ",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆく",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわ",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ち",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわど",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどう",0,0,34,299,600,0,1,"SimHei",true][34,299,"1-1",1,"狂気に満ちてゆくわどうす",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれ",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれば",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれば止",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれば止ま",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれば止まる",0,0,34,299,600,0,1,"SimHei",true]
-[34,299,"1-1",1,"狂気に満ちてゆくわどうすれば止まるの",0,0,34,299,600,0,1,"SimHei",true]
-[70,350,"1-1",3,"疼痛令双腿都不自由",0,0,70,350,500,0,1,"SimHei",true]
-[70,350,"1-1",2.6,"被甜美的幻视支配",0,0,70,350,500,0,1,"SimHei",true][70,350,"1-1",2.6,"伸展五指弹奏的旋律",0,0,70,350,500,0,1,"SimHei",true]
-[70,350,"1-1",2.6,"玩弄着的是深深的痛苦",0,0,70,350,500,0,1,"SimHei",true]
-[70,350,"1-1",2.6,"赤色的红茶滴落的声音",0,0,70,350,500,0,1,"SimHei",true]
-[51,427,"1-1",6,"希望你能察觉到我的心情 为什麽没有察觉到呢",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",6,"渐渐地陷入疯狂 无论怎样也无法抑止",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",6,"心情都被毁坏 接着该如何是好",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",0.5,"你...",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",1,"好甜",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",1,"好甜",0,0,51,427,600,0,1,"SimHei",true]
-[51,427,"1-1",1,"好红",0,0,51,427,600,0,1,"SimHei",true]
-[51,427,"1-1",1,"好红",0,0,51,427,700,0,1,"SimHei",true]
-[51,427,"1-1",6,"爱就要满溢出来 再也无法停止…",0,0,51,427,500,0,1,"SimHei",true]
-[51,427,"1-1",1,"「让我杀了你!」",0,0,51,427,700,0,1,"SimHei",true]
-[43,341,"1-1",6,"让那身体四分五裂 其艳之色即我食粮",0,0,43,341,700,0,1,"SimHei",true]
-[41,343,"1-1",6,"就算把这身体撕裂 只有赤银烟雾飞溅",0,0,41,343,700,0,1,"SimHei",true]
-[38,429,"1-1",6,"如果那具身体是你 我会将肉都吃得干干净净",0,0,38,429,700,0,1,"SimHei",true]
-[38,429,"1-1",6,"把那肢体作为供物 让你成为我脚边的死尸",0,0,38,429,700,0,1,"SimHei",true]
-[35,330,"1-1",2.9,"狂気満ちて行くわ",0,0,35,330,700,0,1,"SimHei",true][11,257,"1-1",2.9,"狂気満ちて行くわ",0,0,11,257,700,0,1,"SimHei",true]
-[35,330,"1-1",2.7,"この気持ち気付いて",0,0,35,330,700,0,1,"SimHei",true]
-[45,299,"1-1",6,"爱溢れて行くわ 止めることはできない",0,0,45,299,600,0,1,"SimHei",true]
-[45,299,"1-1",2.9,"爱溢れて行くわ 止めることはできない",0,0,45,299,700,0,1,"SimHei",true]
-[0,10,"1-1",10," rvrMO @BL :i::::,:.,...... . r@88MBB@BS UB@X .v75@: \n",0,0,0,10,500,0,1,"SimHei",true]
-[0,20,"1-1",10," ,YuM@ ,@Br .:;:, ..::rrrii:i:::::, v@0PPGGOZMB@. vB@UO7 LjB. \n",0,0,0,20,500,0,1,"SimHei",true]
-[0,30,"1-1",10," 20B 5E@B. :i:.. ::::::::i::::. . uBq008EZ00qGB@U i@@u,iMM0 Y@: \n",0,0,0,30,500,0,1,"SimHei",true]
-[0,40,"1-1",10," G@ :2ZY1@B i: .i:::::::::::::: :@G8ZGEZNNPZEZB5 .B@J YrL@B MY \n",0,0,0,40,500,0,1,"SimHei",true]
-[0,50,"1-1",10," :@. :LUBM,2@M v. ..,,,::::::,:,:::::iri,r@MMG8EZqqPqSkkZM@ B@B :O788 . \n",0,0,0,50,500,0,1,"SimHei",true]
-[0,60,"1-1",10," :: X0BG B@u .J ....7uj:vkX2YvYLJ7r::::ii:,i@B@B@MMG8NNkqXEO@ .B@Br: .0G0 \n",0,0,0,60,500,0,1,"SimHei",true]
-[0,0,"1-1",10," :rjJi@B. :@S :J1, U@@ r.rMB0 \n",0,0,0,0,500,0,1,"SimHei",true]
-[0,80,"1-1",10," BM : .GB@7 r JEUi:,,,.:r ,; .:i::::::iL.rk5Y7 ,:.. .jBOZBM2 :@ .qB@B,, .7LY .@ \n",0,0,0,80,500,0,1,"SimHei",true]
-[0,90,"1-1",10," :@ .: i::F@@q Fj .B. iiL2Jri: i7: r : :i:ii ii vL:i:.rY77iii :B@B MB@qZ0GB@B@E i. rk, \n",0,0,0,90,500,0,1,"SimHei",true]
-[0,100,"1-1",10," . : uki FB@BZu1uJB@ .Z77LJv;7:i .i7 7..: .;i,: :: :7ir:7J77Lrii : uB@G8M@B@B@j i: P. \n",0,0,0,100,500,0,1,"SimHei",true]
-[0,110,"1-1",10," ::Pr iB@@@B@B8Bv Fkv::rii..::: r,:v .::i i:i. :;7ir2JL;::;, : BBO8MB@BEi YL. ::u. \n",0,0,0,110,500,0,1,"SimHei",true]
-[0,120,"1-1",10," i27 :X:X@@B@MNB1 7vLv:,;i.:,,;ir .:ir .vi; i,iri:.,::j.7u,::::L J@BS8@q: iYvFNu ,0; \n",0,0,0,120,500,0,1,"SimHei",true]
-[0,70,"1-1",10," ZBZ .LB@r :.:75P1kXFuiir..rii::rYri71Li::,:.Fviir7UE@MOGGG@B iB@BL ,:: .B@ \n",0,0,0,70,500,0,1,"SimHei",true]
-[0,150,"1-1",10," 7YBBi ,OB@OBBF P...,r:iLJF@BMSu7 iUi;0MB@k,,i:i:LF v.r i2 7@XXB@k:rqOqr iu@, \n",0,0,0,150,500,0,1,"SimHei",true]
-[0,130,"1-1",10," Ev i7Pu, i0@0qB@ . iuk: i;iiir:. ,L, .Y:r,i ;i;rri::2 F::,ij: Y@O50@@, uivE@1 :, \n",0,0,0,130,500,0,1,"SimHei",true]
-[0,160,"1-1",10," 7OB. ,75JvG@@GB. : .: ::.iGvM@BU.r,7J: 7B@Bv0:.rrjv:.,;,: vr .0@P8B@; i:vMBG ;@r \n",0,0,0,160,500,0,1,"SimHei",true][0,170,"1-1",10," 5B, jvqX1 F@BBM. .2,.i, : iB@. .,, BBq :77vr ri.: F .vuEBOG@BY .irE@: Nu \n",0,0,0,170,500,0,1,"SimHei",true]
-[0,180,"1-1",10," Br rU@BL :@@@B8U: r7L:,iii: . r: . .: .i7i 7ir.iv , U 2M@B@B@BBMG ruB: \n",0,0,0,180,500,0,1,"SimHei",true]
-[0,140,"1-1",10," J .7:OOq M@E8B@ 77i..;irL::i. v: :,L:i :: i::::,vr .7:::7j ;@NF0@MPF. rrPB: \n",0,0,0,140,500,0,1,"SimHei",true]
-[0,210,"1-1",10," BS vJkqS rM@@@B@B@1: :.717rkLuuvL5ji: ,7Fuju7 ,r7i iL iOr iE@@@BBFEB ;JkO@M \n",0,0,0,210,500,0,1,"SimHei",true]
-[0,220,"1-1",10," : UUOB@ .@M@B@B@@@Xirr.v7r r5YuSSZuu7riU1LG8.LOuB5.iB@B@B@@M. :0 iqU, .2q@j \n",0,0,0,220,500,0,1,"SimHei",true]
-[0,230,"1-1",10," LOB@. vO :L5EB@@@B@jvYi:::L.,:7,iL.,..:,7:rO@B@B@B@O2: iqE. i :5ukOMJ 5B2 \n",0,0,0,230,500,0,1,"SimHei",true]
-[0,240,"1-1",10," v@@ .rqqF5 iq..LO@B@G: . i .... ..:,:u@M. i7v: r LrYq@BS @O \n",0,0,0,240,500,0,1,"SimHei",true]
-[0,190,"1-1",10," . :OBr @B@@@BMv. :1.7:iiiii:rr :J::L; .5:::ui. U .vG@BZXMB@B; 7XX: i@r \n",0,0,0,190,500,0,1,"SimHei",true][0,250,"1-1",10," N@ iLL8G@ .rv5 Nr iF ,,. ,. :i::::v: .i r:::i2Br .rUSO@. .0 \n",0,0,0,250,500,0,1,"SimHei",true]
-[0,200,"1-1",10," jB7 .7X:i@B@B@BMu: :,:;:i:LvvJi . .7k: iv7 7r::..: 2ikM@BBOBM@B2. :iU@@B XF \n",0,0,0,200,500,0,1,"SimHei",true]
-[0,260,"1-1",10," @i 2qB@M ,7riGY2 .r7: iBP :.. :i .;: . :7v 7i7iZ8@. r18B \n",0,0,0,260,500,0,1,"SimHei",true]
-[0,280,"1-1",10," Z@S vi5XPr i: .GZM8MB@.Y25 .:F@u : rj :L7GN rBi \n",0,0,0,280,500,0,1,"SimHei",true]
-[0,290,"1-1",10," @O 1u0Eu ri : 7MNEMB@u E@Bu :u7i,:. :,:; :JkO S7 \n",0,0,0,290,500,0,1,"SimHei",true]
-[0,270,"1-1",10," FO@1 UiLOGM ui. .:BMU ..:. .7iL7 i ru i57ruOZ rZ@. \n",0,0,0,270,500,0,1,"SimHei",true]
-[0,300,"1-1",10," :B UBPO@B@Bu:.i v8qGB@j::0EZOF: .:,i7rL7rUr5PGBr ,0@ \n",0,0,0,300,500,0,1,"SimHei",true]
-[0,310,"1-1",10," Y@@LPr.:ZNr 5EGOq:.:.iMqNO@Bu .,7LvJ@B@1U1 :B \n",0,0,0,310,600,0,1,"SimHei",true]
-[0,320,"1-1",10," @M i ,.:51OML. .:: OGPOGMB@8, v7 7q@. , \n",0,0,0,320,600,0,1,"SimHei",true]
-[0,330,"1-1",10," : ,. ...: FOBM ...:.iZZZGZBBr ir: L. \n",0,0,0,330,600,0,1,"SimHei",true]
-[0,350,"1-1",10," :v ,. r: LBMP;q@2PZui.7O0ZM7 .iiiii \n",0,0,0,350,700,0,1,"SimHei",true]
-[0,340,"1-1",10," iui:: ,, ,..:BM8 v : i 5880OBi :rrr:,,:rY \n",0,0,0,340,700,0,1,"SimHei",true]
-[0,360,"1-1",10," .i, . .ii...7BMEOBGk@M@BBMEGGZ@: ,,:.. .L. \n",0,0,0,360,700,0,1,"SimHei",true]
-[0,390,"1-1",10," :iri::,: .Yii;ri:..JSYuj7:. ,vJUuSFSkS7Lvvi, J: \n",0,0,0,390,800,0,1,"SimHei",true]
-[0,400,"1-1",10," :iri::,: .Yii;ri:..JSYuj7:. ,vJUuSFSkS7Lvvi, J: \n",0,0,0,400,800,0,1,"SimHei",true]
-[0,370,"1-1",10," i;. .,iEB02qGM@@MM8OG80ZNGM :i, .7 \n",0,0,0,370,800,0,1,"SimHei",true]
-[0,380,"1-1",10," .:r: .,. .8Mj .:UG8MM8MOMG88B87r: .::P \n",0,0,0,380,800,0,1,"SimHei",true]
-[0,410,"1-1",10," :r:.. . .:.;u,::,.iuB8MMBB@@MPkLriYj1SPFF2, ,irLi,.,u \n",0,0,0,410,600,0,1,"SimHei",true]
-[0,420,"1-1",10," L. ,,. ,rv7, .,. ,FBBGZEZEZ0G8MB@BBMMOOZGGBM. :ii:J \n",0,0,0,420,700,0,1,"SimHei",true]
-[0,450,"1-1",10," :iXM@@BMOSkXG0E00qGE0NZZEFkFkFFNZ5Z5PPZBq ..,. .71: \n",0,0,0,450,700,0,1,"SimHei",true]
-[0,460,"1-1",10," B@OOO8GZFkFq0ZE05ZGENq0GkSSXSkSGEZENFqZ8@@Li.. .:rYj;: \n",0,0,0,460,700,0,1,"SimHei",true]
-[0,430,"1-1",10," ,L.:,.777 ,r5BMOEZ0EqE0ENqX0ZOZ8EEkqNNEBBq,, .u. \n",0,0,0,430,700,0,1,"SimHei",true]
-[0,440,"1-1",10," Y,. YU :r18@B@qqEZNE0E08NE001kkPSk5kNPPkXZ@2 i:. .,: \n",0,0,0,440,700,0,1,"SimHei",true]
-[0,470,"1-1",10," :BMNOMMMMOqkNqZ0ZXSZGNEqPSkSPSSkZ0E0ZkPFkkEO@@BF: ,r, \n",0,0,0,470,1000,0,1,"SimHei",true]
-[0,480,"1-1",10," :B80Oi .:BqjZqqEZ0kFG0Z0Z0PSPkXSZEZ0ZNPSPSXFXqOO@BM, \n",0,0,0,480,1000,0,1,"SimHei",true]
-[0,490,"1-1",10," BMu:8urM; L.LPSqNE2XENPNq0FkSXFX0NqNNS5XFXSkSFq0N8B@ ",0,0,0,490,300,0,1,"SimHei",true]
-def text c1 {
- content = "我之中的我 我之中的我"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-def text c2 {
- content = "私の中の私が 私の中の私が"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-}
-def text c1 {
- content = "重复着一个单语"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.50s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "ひとつの単语を"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.50s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "多少遍 多少遍 多少遍"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "何度も 何度も 何度も"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "不断重复"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "无尽蔵に"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "重复着 重复着 重复着 重复着"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 4.3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "缲り返し 缲り返し 缲り返し 缲り返し"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 4.3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "歌唱"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "歌う"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "紧握的左手异常甜蜜 挥舞的右手无比甘甜"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "掴む左手が甘くて 震える右手が甘くて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜 好甜"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘くて 甘くて "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "笑着的嘴巴已然开裂 随后便给予你杀戮"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =1.6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "笑う口が裂けても それがあなたを杀し"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐 好快乐"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて 楽しくて "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "要刻入脑髓"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "脳髄を烧くように"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐 好快乐"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて 楽しくて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "快乐到颤抖"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "震えて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好红 好红 好红 好红"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "赤い 赤い 赤い 赤い"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜 好甜 好甜 好甜"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘い 甘い 甘い 甘い "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好红 好甜 好红 好甜"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "赤い 甘い 赤い 甘い "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "你…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "あなた…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘い…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-def text c1 {
- content = "好红…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "赤い…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-def text c1 {
- content = "「让我杀了你!」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "『杀してあげる』"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-def text c1 {
- content = "湿润的深红眼眸 鲜艳的裙摆摇荡"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "深く朱き润む瞳 甘い色のスカート揺らす"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "幼小的脸颊浸染朱红 疼痛令双腿都不自由"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "幼き頬 朱を渗ませ 疼きに足を崩される"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "被甜美的幻视支配 伸展五指弹奏的旋律"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 5.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘い幻视に支配され 奏でては咲く五指の调べ"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 5.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "赤色的红茶滴落的声音 玩弄着的是深深的痛苦"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "赤い红茶 滴る音 弄んでは 深く抉る"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =6.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「这份思念无法传达吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「この想い届かないのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那双眼眸映出的是谁?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その瞳には谁が映るのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「心已经被弄坏了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「心壊れているのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =2.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「弄坏后就不能恢复吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「壊れたら戻らないのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「受的伤害无法痊愈吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「刻む伤は愈えないのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「这样做能刻画下时间吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「そうして时を刻むの?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "我想要你的全部 想到浑身颤抖(希望你察觉我的心情 为什么没有察觉到呢?)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "あなたのその全てが欲しくて 欲しくて震えてる (この気持ち気付いて どうして気付いてくれないの)"
- color = 0xFF0000
- fontSize =2%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "就让那甜美的心跳 竭尽气力就此停止吧(渐渐地被陷入疯狂 无论怎样也无法抑止)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘美なその鼓动を うだち尽くして止めようか (狂気に満ちてゆくわ どうすれば止まるの)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "尽情弄脏那片肌肤 污辱你的只有我(心情都被毁坏 接着该如何是好)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "その肌を秽し尽くし 辱めるのは私だけ (この気持ち壊れたて どこへ辿り着くのでしょうか)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "快点平息这份爱抚 和操弄你的冲动吧(爱就要满溢出来 无法停止…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "爱で抚でて揺さ振られて この冲动杀してよ (爱漏れて行くわ 止めることはできない…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "声嘶力竭歌唱的音色 旋律化作朱红之虹"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.4s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "喉を枯らし叫ウ音色 旋律は朱の虹となり"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.4s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "那是屠杀你的色彩 绽放又甜又深之色"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "君屠る此ノ色彩 甘く深き色を放つ"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "声嘶力竭歌唱的颜色 赤色之雨飞溅四周"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "喉を枯らし叫ウ音色 赤キ雨に彩られたら"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "华丽的舞台业已构筑 我独自在其间起舞"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "华丽的舞台业已构筑 我独自在其间起舞"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那份愿望破灭了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その愿い溃えたのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那份思念断绝了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その想い断たれたのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那份希望磨灭了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その希望绝えたのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那份目光燃烧了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その瞳烧かれたのかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「那份肌肤污秽了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「その肌は秽されたかな?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「大家都已不见了吗?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "「そして谁もいなくなる?」"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "尽然把这身体撕裂 只有赤银烟雾飞溅(因为哪里都不存在真正的我)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生を引き裂かれて 赤银を吐き消し飞べ (どこにも本当の 私なんていないのだから)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "让那身体四分五裂 其艳之色即我食粮(虚幻的生命 美丽又可爱)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生の华散らして 极彩に咲き我が粮 (儚い命だわ 美しく爱おしい)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "如果那具身体是你 我会将肉都吃得干干净净(你只能永远成为我的东西)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生がお前ならば 喰らい尽くして血肉にす (永远に私のものになるしかない)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "把那肢体作为供物 让你成为我脚边的死尸(一直在我身边 再也不放你走)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ四肢を贽と捧げ 我が足元の死尸となれ (ずっと私の傍に もう行かさないから…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "重复着一个单语"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "ひとつの単语を"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "我之中的我 我之中的我(希望你能察觉到我的心情…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.7s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "私の中の私が 私の中の私が(この気持ち気付いて…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.7s
- fontFamily = "宋体"
-
-}
-def text c1 {
- content = "多少遍多少遍多少遍"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.4s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "何度も何度も何度も"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.4s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "不断重复(渐渐地陷入疯狂…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "无尽蔵に(狂気満ちて行くわ…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content ="重复着 重复着 重复着"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 4.1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "缲り返し 缲り返し 缲り返し 缲り返し"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 4.1s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "歌唱"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "歌う"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "(希望你能察觉到我的心情…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "(この気持ち気付いて…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "紧握的左手异常甜蜜 挥舞的右手无比甘甜"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "掴む左手が甘くて 震える右手が甘くて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜…好甜… "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘くて 甘くて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.7s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐 好快乐"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて 楽しくて "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 3s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "笑着的嘴巴已然开裂 随后便给予你杀戮"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.2s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "笑う口が裂けても それがあなたを杀し"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.2s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "刻录在你的脑髓之中(爱就要满溢出来 再也无法停止…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = " 脳髄を烧くように(爱溢れて行くわ 止めることはできない…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐 好快乐 "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて 楽しくて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.8s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "快乐到颤抖"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "震えて"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好快乐 好快乐 "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "楽しくて 楽しくて "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "希望你能察觉到我的心情 为什么没有察觉到呢"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "この気持ち気付いて どうして気付いてくれないの"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "渐渐地陷入疯狂 无论怎样也无法抑止"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "狂気満ちて行くわ どうすれば止まるの"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "心情都被毁坏 接着该如何是好"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.4s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "この気持ち気付いて どこへ辿り着くのでしょうか"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6.4s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "爱就要满溢出来 再也无法停止…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "爱溢れて行くわ 止めることはできない…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜… 好红…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 12.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "甘い 赤い……"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 12.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "你…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 0.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "あなた…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =0.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "好甜… 好甜… "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = " 甘い… 甘い…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "赤い… 赤い…"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.5s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "好红… 好红… "
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 2.5s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "「让我杀了你!"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.2s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "『杀してあげる』"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 1.2s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "就算把这身体撕裂 只有赤银烟雾飞溅(因为想要我的世界永远保持美丽)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生を引き裂かれて 赤银を吐き消し飞べ (私のセカイは 绮丽なままでいてほしいから)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "如果那具身体是你 我会将肉都吃得干干净净(对不起 这是我最后用来爱你的方式)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生がお前ならば 喰らい尽くして血肉にす (ごめんなさい これが最后の爱し方だったから)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "让那身体四分五裂 其艳之色即我食粮(诸多回忆飞舞 成为我的东西吧)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration =6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ生の华散らして 极彩に咲き我が粮 (想い出が舞うわ 私のものにさせて)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "把那肢体作为供物 让你成为我脚边的死尸(一直在我身边 我想和你在一起)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = "其ノ四肢を贽と捧げ 我が足元の死尸となれ (ずっと私の傍に あなたといきたいの…)"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 6s
- fontFamily = "宋体"
-
-}
-
-def text c1 {
- content = "Bas字幕弹幕作者:本人猫癌晚期 UID:75549002"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 120s
- fontFamily = "宋体"
-
-}
-def text c2 {
- content = "【弹幕祭应援】 緋色月下、狂咲ノ絶-1st Anniversary Remix"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 120s
- fontFamily = "宋体"
-
-}
-
-
-def text c1 {
- content = "原曲/U.N.オーエンは彼女なのか?"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 95%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 12.1s
- fontFamily = "宋体"
-
-}
-
-def text c2 {
- content = " 緋色月下、狂咲ノ絶-1st Anniversary Remix"
- color = 0xFF0000
- fontSize =3%
- x = 50%
- y = 5%
- anchorX = 0.5
- anchorY = 0.5
- bold = 1
- textShadow = 1
- duration = 12.1s
- fontFamily = "宋体"
-
-}
-
\ No newline at end of file
diff --git a/src/danmaku/tsconfig.json b/src/danmaku/tsconfig.json
deleted file mode 100644
index d220626..0000000
--- a/src/danmaku/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "../tsconfig-base.json",
- "include": [
- "**/*",
- "../utils",
- ],
- "references": [
- {
- "path": "../utils"
- }
- ]
-}
\ No newline at end of file
diff --git a/src/dash-player/index.js b/src/dash-player/index.js
index 108c249..d358e07 100644
--- a/src/dash-player/index.js
+++ b/src/dash-player/index.js
@@ -4,9 +4,9 @@
* Copyright 2018 - 2024 bilibili, Inc.
* Released in 2024-02-29T07:18:24.725Z
*
- * 从B站移植新版本时,须要手动冻结dashjs的MediaPlayer、FactoryMaker、Version三属性以免被页面污染
- * 参考:Object.defineProperties(s,{MediaPlayer:{value:n.a},FactoryMaker:{value:i.a},Version:{value:Object(o.a)()}})
+ * 从B站移植新版本时,须要手动修改dashjs为局部变量避免污染页面环境
*/
+var dashjs={};
export default (() => {function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==c(e)&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=16)}([function(e,t,r){"use strict";var n=function(){var e=void 0,t=[],r={},n={};function i(e,r){for(var n in t){var i=t[n];if(i.context===e&&i.name===r)return i.instance}return null}function o(e,t){return t[e]}function a(e,t,r){e in r&&(r[e]=t)}function s(t,r,n){var i=void 0,o=t.__dashjs_factory_name,a=r[o];if(a){var s=a.instance;if(!a.override)return s.apply({context:r,factory:e},n);for(var u in i=t.apply({context:r},n),s=s.apply({context:r,factory:e,parent:i},n))i.hasOwnProperty(u)&&(i[u]=s[u])}else i=t.apply({context:r},n);return i.getClassName=function(){return o},i}return e={extend:function(e,t,r,n){!n[e]&&t&&(n[e]={instance:t,override:r})},reset:function(){t.length=0},getSingletonInstance:i,setSingletonInstance:function(e,r,n){for(var i in t){var o=t[i];if(o.context===e&&o.name===r)return void(t[i].instance=n)}t.push({name:r,context:e,instance:n})},getSingletonFactory:function(e){var n=o(e.__dashjs_factory_name,r);return n||(n=function(r){var n=void 0;return void 0===r&&(r={}),{getInstance:function(){return n||(n=i(r,e.__dashjs_factory_name)),n||(n=s(e,r,arguments),t.push({name:e.__dashjs_factory_name,context:r,instance:n})),n}}},r[e.__dashjs_factory_name]=n),n},getSingletonFactoryByName:function(e){return o(e,r)},updateSingletonFactory:function(e,t){a(e,t,r)},getClassFactory:function(e){var t=o(e.__dashjs_factory_name,n);return t||(t=function(t){return void 0===t&&(t={}),{create:function(){return s(e,t,arguments)}}},n[e.__dashjs_factory_name]=t),t},getClassFactoryByName:function(e){return o(e,n)},updateClassFactory:function(e,t){a(e,t,n)}}}();t.a=n},function(e,t,r){var n={parseBuffer:function(e){return new i(e).parse()},addBoxProcessor:function(e,t){"string"==typeof e&&"function"==typeof t&&(o.prototype._boxProcessors[e]=t)},createFile:function(){return new i},createBox:function(e,t,r){var n=o.create(e);return t&&t.append(n,r),n},createFullBox:function(e,t,r){var i=n.createBox(e,t,r);return i.version=0,i.flags=0,i},Utils:{}};n.Utils.dataViewToString=function(e,t){var r=t||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(r).decode(e);var n=[],i=0;if("utf-8"===r)for(;i>6),t.push(128|63&n)):n<65536?(t.push(224|n>>12),t.push(128|63&n>>6),t.push(128|63&n)):(t.push(240|n>>18),t.push(128|63&n>>12),t.push(128|63&n>>6),t.push(128|63&n))}return t},n.Utils.appendBox=function(e,t,r){if(t._offset=e._cursor.offset,t._root=e._root?e._root:e,t._raw=e._raw,t._parent=e,-1!==r)if(null!=r){var n,i=-1;if("number"==typeof r)i=r;else{if("string"==typeof r)n=r;else{if("object"!=c(r)||!r.type)return void e.boxes.push(t);n=r.type}for(var o=0;o>3,t},o.prototype._readUint=function(e){var t,r,n=null,i=this._cursor.offset-this._raw.byteOffset;switch(e){case 8:n=this._raw.getUint8(i);break;case 16:n=this._raw.getUint16(i);break;case 24:n=((t=this._raw.getUint16(i))<<8)+(r=this._raw.getUint8(i+2));break;case 32:n=this._raw.getUint32(i);break;case 64:t=this._raw.getUint32(i),r=this._raw.getUint32(i+4),n=t*Math.pow(2,32)+r}return this._cursor.offset+=e>>3,n},o.prototype._readString=function(e){for(var t="",r=0;r0?e:this._raw.byteLength-(this._cursor.offset-this._offset);if(t>0){var r=new Uint8Array(this._raw.buffer,this._cursor.offset,t);return this._cursor.offset+=t,r}return null},o.prototype._readUTF8String=function(){var e=this._raw.byteLength-(this._cursor.offset-this._offset),t=null;return e>0&&(t=new DataView(this._raw.buffer,this._cursor.offset,e),this._cursor.offset+=e),t?n.Utils.dataViewToString(t):t},o.prototype._parseBox=function(){if(this._parsing=!0,this._cursor.offset=this._offset,this._offset+8>this._raw.buffer.byteLength)this._root._incomplete=!0;else{switch(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset,this._raw.byteLength-this._cursor.offset+8);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}this._incomplete||(this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type)?this._parseContainerBox():this._data=this._readData())}},o.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},o.prototype._parseContainerBox=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset>3}else this.size+=e>>3},o.prototype._writeUint=function(e,t){if(this._rawo){var r,n,i=this._cursor.offset-this._rawo.byteOffset;switch(e){case 8:this._rawo.setUint8(i,t);break;case 16:this._rawo.setUint16(i,t);break;case 24:r=(16776960&t)>>8,n=255&t,this._rawo.setUint16(i,r),this._rawo.setUint8(i+2,n);break;case 32:this._rawo.setUint32(i,t);break;case 64:n=t-(r=Math.floor(t/Math.pow(2,32)))*Math.pow(2,32),this._rawo.setUint32(i,r),this._rawo.setUint32(i+4,n)}this._cursor.offset+=e>>3}else this.size+=e>>3},o.prototype._writeString=function(e,t){for(var r=0;r>10&31),96+(this.language>>5&31),96+(31&this.language))),this._procField("pre_defined","uint",16)},o.prototype._boxProcessors.mehd=function(){this._procFullBox(),this._procField("fragment_duration","uint",1==this.version?64:32)},o.prototype._boxProcessors.mfhd=function(){this._procFullBox(),this._procField("sequence_number","uint",32)},o.prototype._boxProcessors.mfro=function(){this._procFullBox(),this._procField("mfra_size","uint",32)},o.prototype._boxProcessors.mp4a=o.prototype._boxProcessors.enca=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procField("channelcount","uint",16),this._procField("samplesize","uint",16),this._procField("pre_defined","uint",16),this._procField("reserved3","uint",16),this._procField("samplerate","template",32),this._procField("esds","data",-1)},o.prototype._boxProcessors.mvhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procField("rate","template",32),this._procField("volume","template",16),this._procField("reserved1","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procFieldArray("matrix",9,"template",32),this._procFieldArray("pre_defined",6,"uint",32),this._procField("next_track_ID","uint",32)},o.prototype._boxProcessors.payl=function(){this._procField("cue_text","utf8")},o.prototype._boxProcessors.pssh=function(){this._procFullBox(),this._procFieldArray("SystemID",16,"uint",8),this._procField("DataSize","uint",32),this._procFieldArray("Data",this.DataSize,"uint",8)},o.prototype._boxProcessors.schm=function(){this._procFullBox(),this._procField("scheme_type","uint",32),this._procField("scheme_version","uint",32),1&this.flags&&this._procField("scheme_uri","string",-1)},o.prototype._boxProcessors.sdtp=function(){this._procFullBox();var e=-1;this._parsing&&(e=this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset)),this._procFieldArray("sample_dependency_table",e,"uint",8)},o.prototype._boxProcessors.sidx=function(){this._procFullBox(),this._procField("reference_ID","uint",32),this._procField("timescale","uint",32),this._procField("earliest_presentation_time","uint",1==this.version?64:32),this._procField("first_offset","uint",1==this.version?64:32),this._procField("reserved","uint",16),this._procField("reference_count","uint",16),this._procEntries("references",this.reference_count,(function(e){this._parsing||(e.reference=(1&e.reference_type)<<31,e.reference|=2147483647&e.referenced_size,e.sap=(1&e.starts_with_SAP)<<31,e.sap|=(3&e.SAP_type)<<28,e.sap|=268435455&e.SAP_delta_time),this._procEntryField(e,"reference","uint",32),this._procEntryField(e,"subsegment_duration","uint",32),this._procEntryField(e,"sap","uint",32),this._parsing&&(e.reference_type=e.reference>>31&1,e.referenced_size=2147483647&e.reference,e.starts_with_SAP=e.sap>>31&1,e.SAP_type=e.sap>>28&7,e.SAP_delta_time=268435455&e.sap)}))},o.prototype._boxProcessors.smhd=function(){this._procFullBox(),this._procField("balance","uint",16),this._procField("reserved","uint",16)},o.prototype._boxProcessors.ssix=function(){this._procFullBox(),this._procField("subsegment_count","uint",32),this._procEntries("subsegments",this.subsegment_count,(function(e){this._procEntryField(e,"ranges_count","uint",32),this._procSubEntries(e,"ranges",e.ranges_count,(function(e){this._procEntryField(e,"level","uint",8),this._procEntryField(e,"range_size","uint",24)}))}))},o.prototype._boxProcessors.stsd=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},o.prototype._boxProcessors.subs=function(){this._procFullBox(),
@@ -49,11 +49,11 @@ n.hasOwnProperty(Je.AVAILABILITY_TIME_COMPLETE)?d.availabilityTimeComplete="fals
function a(e,t,n,i){return i?n&&t.timeShiftBufferDepth!=Number.POSITIVE_INFINITY?new Date(t.availabilityStartTime.getTime()+1e3*(e+t.timeShiftBufferDepth)):t.availabilityEndTime:n?new Date(t.availabilityStartTime.getTime()+1e3*(e-r)):t.availabilityStartTime}function s(e,t){return(e.getTime()-t.mpd.availabilityStartTime.getTime()+1e3*r)/1e3}function u(e){n||void 0!==e.offset&&(o(e.offset/1e3),n=!0)}function c(){r=0,n=!1,i=NaN}return{initialize:function(){c(),t.on(p.TIME_SYNCHRONIZATION_COMPLETED,u,this)},isTimeSyncCompleted:function(){return n},setTimeSyncCompleted:function(e){n=e},getClientTimeOffset:function(){return r},setClientTimeOffset:o,getExpectedLiveEdge:function(){return i},setExpectedLiveEdge:function(e){i=e},calcAvailabilityStartTimeFromPresentationTime:function(e,t,r){return a.call(this,e,t,r)},calcAvailabilityEndTimeFromPresentationTime:function(e,t,r){return a.call(this,e,t,r,!0)},calcPresentationTimeFromWallTime:s,calcPresentationTimeFromMediaTime:function(e,t){return e+(t.adaptation.period.start-t.presentationTimeOffset)},calcPeriodRelativeTimeFromMpdRelativeTime:function(e,t){return t-e.adaptation.period.start},calcMediaTimeFromPresentationTime:function(e,t){return e-t.adaptation.period.start+t.presentationTimeOffset},calcSegmentAvailabilityRange:function(e,t){var r=e.adaptation.period,i={start:r.start,end:r.start+r.duration};if(!t)return i;if(!n&&e.segmentAvailabilityRange)return e.segmentAvailabilityRange;var o=e.segmentDuration||(e.segments&&e.segments.length?e.segments[e.segments.length-1].duration:0),a=s(new Date,r),u=r.start+r.duration;i.start=Math.max(a-r.mpd.timeShiftBufferDepth,r.start);var c=void 0!==e.availabilityTimeOffset&&e.availabilityTimeOffset=u&&a-cte.min&&Math.abs(U.getDuration()-te.min)>=1&&M)try{var e=+("0."+((te.min+"").split(".")[1]||0)),t=e<.1?0:e>=.1?.1:+(e-.03).toFixed(2);t&&t>0&&!isNaN(t)&&(M.setMediaDuration(te.min-t),M.setAppendWindowEnd(te.min-t),k.setDeviationReset(!0))}catch(e){}}function ae(){return!!_&&!!G.getElement()}function se(){return Object(ti.a)()}function ue(){if(!T)throw t;return U.isPaused()}function ce(e){var t=[n.VIDEO,n.AUDIO,n.FRAGMENTED_TEXT];if(e)return-1!==t.indexOf(e)?_e().getCurrentBufferLevel(Ee(e))||NaN:(y("Warning - getBufferLength requested for invalid type"),NaN);var r=t.map((function(e){return Te(e).length>0?_e().getCurrentBufferLevel(Ee(e)):Number.MAX_VALUE})).reduce((function(e,t){return Math.min(e,t)}));return r===Number.MAX_VALUE?NaN:r}function le(e){var t=De(),r=U.getLiveDelay();if(!t)return 0;var n=t.range.start+e;return n>t.range.end-r&&(n=t.range.end-r),n}function de(e,r){if(!T)throw t;var n=be().currentTime;if(void 0!==e)n=M.getTimeRelativeToStreamId(n,e);else if(U.getIsDynamic()){var i=De();n=null===i?0:fe()-(i.range.end-i.time)}var o=k.getCachedDurationOffset("time");return r&&n-o>0&&(n-=o,n=Math.min(n,fe(void 0))),parseFloat(n.toFixed(5))}function fe(e){if(!T)throw t;var r=be().duration;if(U.getIsDynamic()){var n,i=De();if(!i)return 0;r=(n=i.range.end-i.range.start)a&&(r=o=t&&Z&&(k.setCachedDurationOffset("time",t),Z=!1,G.setDataOffsetAttr(t),f.trigger(p.APPENDED_NEXT_SOURCE_DURATION_CHANGED,{offset:t,totalTime:e.time,totalDuration:fe(),time:de(void 0,!0),duration:te.min||fe(!0)}))}function ke(e){try{if(e&&e.mediaType&&e.segments){
var t=e.mediaType,r=ee[t],n=e.segments,i=e.representation&&e.representation.index,o=!0,a=[],s={},u=0,c=0;if(r.total&&r.total===n.length&&(r.segments.forEach((function(e,t){e.duration&&e.duration!==n[t].duration&&t100&&a.push(t)})),a.length)){o=!1,s={old:r.qualityIndex,new:i};var l=G.getTime(),d=Math.floor(l/5);-1===a.indexOf(d)&&-1===a.indexOf(d+1)&&-1===a.indexOf(d+2)&&(o=!0)}var f=0,p=e.segments&&e.segments[e.segments.length-1];p&&(f=(p.duration+p.startTime)/p.timescale,te[t]=f,(!te.min||te.min>0&&te.min>f)&&(te.min=f));var h=0;n&&n.length&&(h=n[0].startTime/n[0].timescale,P.setStartOffsetTimeForType(t,h),u=parseInt(n[0].mediaRange.split("-")[0],10),c=parseInt(n[n.length-1].mediaRange.split("-")[1],10),J=Math.max(J,h)),te.min===f&&k.getCachedDurationOffset("duration")&&h>0&&(te.min-=h),k.setCachedDurationOffset("duration",te.min+Y);var y={total:n&&n.length,segments:n,isDurationAllEqual:o,qualityIndex:i,realDuration:f,startOffsetTime:h,rangeStart:u,rangeEnd:c};o||(y.notEqualIndexList=a,y.notEqualQualityIndex=s),ee[e.mediaType]=y,"function"==typeof re&&re(t,y)}}catch(e){throw new Error("Parse segment loaded error, "+e)}}function Le(){K=!0;var e=G.getBufferRange(),t=G.getElement().duration,r=e&&e.length&&e.end(e.length-1),n=G.getTime(),i=[t,r,n+ce("video"),n+ce("audio")],o=i.filter((function(e){return!isNaN(e)})),a=o.reduce((function(e,t){return e+t}))/o.length,s=Math.min.apply(null,o);if(y("onStreamBufferingCompleted",Y,i,k.getAppendingSourceState(),Q),Math.abs(s-a)<1&&(Y=parseFloat(s.toFixed(5)),Q.length)){var u=Q.splice(0,1)[0];y("Appending delay next source",u),Ue(u.manifest,u.preloadData)}}function xe(e){if(U.getEnded()&&k.getAppendingSourceState()){var t=e.sender.getType();if(ne[t]=e.bufferLevel,ne.audio>0&&ne.video>0){var r=G.getBufferRange(),n=r&&r.length&&r.end(r.length-1),i=U.getTime();n>i+.01&&(console.log("Playing next appending source after prev playback ended.",ne),U.seek(i+.01),U.play())}}if(k.getAppendingSourceState()&&z){for(var o=k.getCachedDurationOffset("offset"),a=G.getBufferRange(),s=U.getTime(),u=0,c=0;c=s&&(u=a.end(c));o>0&&u>o+1&&(k.setAppendingSourceState(!1),y("Appended Next Source, currentTime: "+s+" , buffered end: "+u),z=!1,f.trigger(p.APPENDED_NEXT_SOURCE,{time:s,ended:u}))}if(!X){var l=G.getBufferRange(),d=U.getTime(),h=l&&l.length&&l.start(0),m=k.getPlayAt();l&&l.length&&h>=J&&(X=!0,(m||d)3&&void 0!==arguments[3]&&arguments[3],i=new Date(1e3*e),o=i.toLocaleDateString(t),a=i.toLocaleTimeString(t,{hour12:r});return n?a+" "+o:a},getVersion:se,getDebug:function(){return h},getBufferLength:ce,getVideoContainer:function(){return G?G.getVideoContainer():null},getTTMLRenderingDiv:function(){return G?G.getTTMLRenderingDiv():null},getVideoElement:be,getSource:function(){if(!_)throw u;return _},setLiveDelayFragmentCount:function(e){k.setLiveDelayFragmentCount(e)},setLiveDelay:function(e){k.setLiveDelay(e)},getLiveDelay:function(){return k.getLiveDelay()},getCurrentLiveLatency:function(){if(!b)throw c;return T?U.getCurrentLiveLatency():NaN},useSuggestedPresentationDelay:function(e){k.setUseSuggestedPresentationDelay(e)},enableLastBitrateCaching:function(e,t){k.setLastBitrateCachingInfo(e,t)},enableLastMediaSettingsCaching:function(e,t){k.setLastMediaSettingsCachingInfo(e,t)},setMaxAllowedBitrateFor:function(e,t){A.setMaxAllowedBitrateFor(e,t)},getMaxAllowedBitrateFor:function(e){return A.getMaxAllowedBitrateFor(e)},getTopBitrateInfoFor:function(t){if(!S)throw e;return A.getTopBitrateInfoFor(t)},setMinAllowedBitrateFor:function(e,t){A.setMinAllowedBitrateFor(e,t)},getMinAllowedBitrateFor:function(e){return A.getMinAllowedBitrateFor(e)},setMaxAllowedRepresentationRatioFor:function(e,t){A.setMaxAllowedRepresentationRatioFor(e,t)},getMaxAllowedRepresentationRatioFor:function(e){return A.getMaxAllowedRepresentationRatioFor(e)},setAutoPlay:he,getAutoPlay:function(){return w},setScheduleWhilePaused:function(e){k.setScheduleWhilePaused(e)},getScheduleWhilePaused:function(){return k.getScheduleWhilePaused()},getDashMetrics:_e,getMetricsFor:Ee,getQualityFor:function(t){if(!S)throw e;return A.getQualityFor(t,M.getActiveStreamInfo())},setQualityFor:function(t,r){if(!S)throw e;A.setPlaybackQuality(t,M.getActiveStreamInfo(),r)},updatePortalSize:function(){A.setElementSize(),A.setWindowResizeEventCalled(!0)},getLimitBitrateByPortal:function(){return A.getLimitBitrateByPortal()},setLimitBitrateByPortal:function(e){A.setLimitBitrateByPortal(e)},getUsePixelRatioInLimitBitrateByPortal:function(){return A.getUsePixelRatioInLimitBitrateByPortal()},
setUsePixelRatioInLimitBitrateByPortal:function(e){A.setUsePixelRatioInLimitBitrateByPortal(e)},getBitrateInfoListFor:function(t){if(!S)throw e;var r=Oe();return r?r.getBitrateListFor(t):[]},setInitialBitrateFor:function(e,t){A.setInitialBitrateFor(e,t)},getInitialBitrateFor:function(t){if(!S)throw e;return A.getInitialBitrateFor(t)},setInitialRepresentationRatioFor:function(e,t){A.setInitialRepresentationRatioFor(e,t)},getInitialRepresentationRatioFor:function(e){return A.getInitialRepresentationRatioFor(e)},getStreamsFromManifest:function(t){if(!S)throw e;return C.getStreamsInfo(t)},getTracksFor:Te,getTracksForTypeFromManifest:function(t,r,n){if(!S)throw e;return(n=n||C.getStreamsInfo(r,1)[0])?C.getAllMediaInfoForType(n,t,r):[]},getCurrentTrackFor:function(t){if(!S)throw e;var r=M.getActiveStreamInfo();return r?P.getCurrentTrackFor(t,r):null},setInitialMediaSettingsFor:function(e,t){if(!b)throw c;P.setInitialSettings(e,t)},getInitialMediaSettingsFor:function(e){if(!b)throw c;return P.getInitialSettings(e)},setCurrentTrack:function(t){if(!S)throw e;P.setTrack(t)},getTrackSwitchModeFor:function(e){if(!b)throw c;return P.getSwitchMode(e)},setTrackSwitchModeFor:function(e,t){if(!b)throw c;P.setSwitchMode(e,t)},setSelectionModeForInitialTrack:function(e){if(!b)throw c;P.setSelectionModeForInitialTrack(e)},getSelectionModeForInitialTrack:function(){if(!b)throw c;return P.getSelectionModeForInitialTrack()},setFastSwitchEnabled:function(e){k.setFastSwitchEnabled(e)},getFastSwitchEnabled:function(){return k.getFastSwitchEnabled()},setMovingAverageMethod:function(e){e===n.MOVING_AVERAGE_SLIDING_WINDOW||e===n.MOVING_AVERAGE_EWMA?k.setMovingAverageMethod(e):y("Warning: Ignoring setMovingAverageMethod("+e+") - unknown value.")},getMovingAverageMethod:function(){return k.getMovingAverageMethod()},getAutoSwitchQualityFor:function(e){return A.getAutoSwitchBitrateFor(e)},setAutoSwitchQualityFor:function(e,t){A.setAutoSwitchBitrateFor(e,t)},setABRStrategy:function(e){e===n.ABR_STRATEGY_DYNAMIC||e===n.ABR_STRATEGY_BOLA||e===n.ABR_STRATEGY_THROUGHPUT?k.setABRStrategy(e):y("Warning: Ignoring setABRStrategy("+e+") - unknown value.")},getABRStrategy:function(){return k.getABRStrategy()},useDefaultABRRules:function(e){k.setUseDefaultABRRules(e)},addABRCustomRule:function(e,t,r){k.addABRCustomRule(e,t,r)},removeABRCustomRule:function(e){k.removeABRCustomRule(e)},removeAllABRCustomRule:function(){k.removeAllABRCustomRule()},setBandwidthSafetyFactor:function(e){k.setBandwidthSafetyFactor(e)},getBandwidthSafetyFactor:function(){return k.getBandwidthSafetyFactor()},getAverageThroughput:function(e){var t=A.getThroughputHistory();return t?t.getAverageThroughput(e):0},setAbandonLoadTimeout:function(e){k.setAbandonLoadTimeout(e)},retrieveManifest:function(e,t){var r=Re(),n=this;f.on(p.INTERNAL_MANIFEST_LOADED,(function e(i){i.error?t(null,i.error):t(i.manifest),f.off(p.INTERNAL_MANIFEST_LOADED,e,n),r.reset()}),n),Fe(l).getInstance().initialize(e),r.load(e,q)},addUTCTimingSource:ye,removeUTCTimingSource:me,clearDefaultUTCTimingSources:function(){k.setUTCTimingSources([])},restoreDefaultUTCTimingSources:ge,setBufferToKeep:function(e){k.setBufferToKeep(e)},setBufferAheadToKeep:function(e){k.setBufferAheadToKeep(e)},setBufferPruningInterval:function(e){k.setBufferPruningInterval(e)},setStableBufferTime:function(e){k.setStableBufferTime(e)},getStableBufferTime:function(){return k.getStableBufferTime()},setBufferTimeAtTopQuality:function(e){k.setBufferTimeAtTopQuality(e)},getBufferTimeAtTopQuality:function(){return k.getBufferTimeAtTopQuality()},setBufferTimeAtTopQualityLongForm:function(e){k.setBufferTimeAtTopQualityLongForm(e)},getBufferTimeAtTopQualityLongForm:function(){return k.getBufferTimeAtTopQualityLongForm()},setFragmentLoaderRetryAttempts:function(e){k.setFragmentRetryAttempts(e)},setFragmentLoaderRetryInterval:function(e){k.setFragmentRetryInterval(e)},setManifestLoaderRetryAttempts:function(e){k.setManifestRetryAttempts(e)},setManifestLoaderRetryInterval:function(e){k.setManifestRetryInterval(e)},setXHRWithCredentialsForType:function(e,t){k.setXHRWithCredentialsForType(e,t)},getXHRWithCredentialsForType:function(e){return k.getXHRWithCredentialsForType(e)},setJumpGaps:function(e){k.setJumpGaps(e)},getJumpGaps:function(){return k.getJumpGaps()},setSmallGapLimit:function(e){k.setSmallGapLimit(e)},getSmallGapLimit:function(){return k.getSmallGapLimit()},getLowLatencyEnabled:function(){return k.getLowLatencyEnabled()},setLowLatencyEnabled:function(e){return k.setLowLatencyEnabled(e)},setPreloadData:function(e){return k.setPreloadData(e)},setManifestUpdateRetryInterval:function(e){k.setManifestUpdateRetryInterval(e)},getManifestUpdateRetryInterval:function(){return k.getManifestUpdateRetryInterval()},setLongFormContentDurationThreshold:function(e){k.setLongFormContentDurationThreshold(e)},setSegmentOverlapToleranceTime:function(e){k.setSegmentOverlapToleranceTime(e)},setCacheLoadThresholdForType:function(e,t){k.setCacheLoadThresholdForType(e,t)},getProtectionController:function(){return Pe()},attachProtectionController:function(e){D=e},setProtectionData:function(e){E=e,M&&M.setProtectionData(E)},enableManifestDateHeaderTimeSource:function(e){k.setUseManifestDateHeaderTimeSource(e)},attachVideoContainer:function(e){if(!G.getElement())throw r;G.setVideoContainer(e)},attachTTMLRenderingDiv:function(e){if(!G.getElement())throw r;G.setTTMLRenderingDiv(e)},getUseDeadTimeLatencyForAbr:function(){return A.getUseDeadTimeLatency()},setUseDeadTimeLatencyForAbr:function(e){A.setUseDeadTimeLatency(e)},getThumbnail:function(e){if(e<0)return null;var t=U.getIsDynamic()?le(e):e,r=M.getStreamForTime(t);if(null===r)return null;var n=r.getThumbnailController(),i=r.getStreamInfo();if(!n||!i)return null;var o=M.getTimeRelativeToStreamId(t,r.getId());return n.get(o)},setDefaultQualityFor:function(e,t){A||(A=oe(l).getInstance()),A.setDefaultQualityFor(e,t)},getDefaultQualityFor:function(e){return A.getDefaultQualityFor(e)},getDroppedFramesInfo:function(){return A.getDroppedFramesInfo()},getCurrentSegmentInfoFor:function(e){return A.getCurrentSegmentInfoFor(e)},onInitSegmentsLoaded:function(e){re=e},getThroughputDict:function(e){var t=A.getThroughputHistory();return t?t.getDict(e):{}},getInitializeDate:Me,updateSource:function(e){if(!b)throw c;"string"==typeof e&&Fe(l).getInstance().initialize(e),ee.video={},ee.audio={},_=e,M.load(_,q)},switchSource:function(e){if(!b)throw c;"string"==typeof e&&Fe(l).getInstance().initialize(e),ee.video={},ee.audio={},te.min=0,te.video=0,te.audio=0,_=e,Y=0,G.setDataOffsetAttr(0),k.setCachedDurationOffset("offset",0),k.setCachedDurationOffset("time",0),k.setCachedDurationOffset("duration",0),k.setAppendingSourceState(!1),k.resetStartAndSeekTime(),Z=!1,Q=[],(S||T)&&Ae(),ae()&&Ce()},appendSource:Ue,setEndOfStreamState:function(e){k&&k.setEndOfStreamState(e)},setP2pPermission:function(e){e||k.addBufferingCount()},setP2pType:function(e,t){var r,n=!1;switch(e){case"yf-eg":case"yf-cg2":window.YFDashIO&&(n=!0);break;case"xl-eg":case"xl-cg2":window.xyvp&&(n=!0);break;case"ks-eg":case"ks-cg2":window.KSLoader&&(n=!0);break;case"bili-eg":case"bili-cg2":window.DIYSdk&&(n=!0);break;case"pear-eg":case"pear-cg2":window.PearDownloader&&(n=!0)}n?window.__DASH_P2P_TYPE__=e:t?(r=t,new Promise((function(e,t){var n=document.createElement("script");n.src=r,n.onload=function(){window.clearTimeout(W),e()},n.onerror=function(){window.clearTimeout(W),t(),f.trigger(p.PCDN_LOADED_ERROR,{code:o.DOWNLOAD_PCDN_SCRIPT_ERROR,url:r})},document.body.appendChild(n),W=window.setTimeout((function(){t(),f.trigger(p.PCDN_LOADED_ERROR,{code:o.DOWNLOAD_PCDN_SCRIPT_TIMEOUT,url:r})}),2e3)}))).then((function(){window.__DASH_P2P_TYPE__=e,y("[MediaPlayer] p2p Sdk Scripts Loaded")})).catch((function(){console.warn("load p2p sdk scripts failed")})):console.warn("lack p2p sdk scripts")},setUseNC:function(e){k&&k.setUseNC(e)},setUseP2P:function(e){k&&k.setUseP2P(e)},switchAudioTrack:function(e){return k.getAudioTrackIds().find((function(t){return t.id===e}))?(k.setAudioTrackId(e),f.trigger(p.SWITCH_AUDIO_TRACK_REQUEST,{id:e}),0):-1},getCurrentAudioTrackId:function(){return k.getAudioTrackId()},
-getAudioTrackList:function(){return k.getAudioTrackIds()},getRetryTimes:function(){return k.getRetryTimes()},getSpaceUtilLastSeekInSec:function(){return((new Date).getTime()-k.getLastStartSeekTime())/1e3},setPlayAt:function(e){return k.setPlayAt(e)},reset:function(){we(null),Se(null),E=null,z=!1,Z=!1,Y=0,Q=[],D&&(D.reset(),D=null),I&&(I.reset(),I=null),U&&(U.reset(),U=null),f.off(p.SEGMENTS_LOADED,ke,v),f.off(p.BUFFER_LEVEL_UPDATED,xe,v),f.off(p.PLAYBACK_ENDED,Le,this),f.off(p.STREAM_BUFFERING_COMPLETED,Le,this),f.off(p.PLAYBACK_TIME_UPDATED,Ne,this),f.off(p.PLAYBACK_METADATA_LOADED,ie,this)},setQualityMap:function(e){},setPlayerId:function(e){k.setPlayerId(e)}},function(){b=!1,T=!1,S=!1,w=!0,D=null,E=null,C=null,p.extend(hr),k=pr(l).getInstance(),G=Yn(l).getInstance(),Y=0,K=!1,Q=[],ne={video:0,audio:0},J=0,f.on(p.SEGMENTS_LOADED,ke,v),f.on(p.BUFFER_LEVEL_UPDATED,xe,v),f.on(p.PLAYBACK_ENDED,Le,this),f.on(p.STREAM_BUFFERING_COMPLETED,Le,this),f.on(p.PLAYBACK_TIME_UPDATED,Ne,this),f.on(p.PLAYBACK_METADATA_LOADED,ie,this)}(),v}Ai.__dashjs_factory_name="MediaPlayer";var Ri=s.a.getClassFactory(Ai);Ri.events=hr,s.a.updateClassFactory(Ai.__dashjs_factory_name,Ri),t.a=Ri},function(e,t,r){var n,i,o,u,c,l=function(e){for(var t=[],r=0;r>6),t.push(128|63&n)):n<65536?(t.push(224|n>>12),t.push(128|63&n>>6),t.push(128|63&n)):(t.push(240|n>>18),t.push(128|63&n>>12),t.push(128|63&n>>6),t.push(128|63&n))}return t},d=function(e){for(var t=[],r=0;r>18)),r.push(n.charAt(63&o>>12)),r.push(n.charAt(63&o>>6)),r.push(n.charAt(63&o))}return 2==e.length-t?(o=(e[t]<<16)+(e[t+1]<<8),r.push(n.charAt(63&o>>18)),r.push(n.charAt(63&o>>12)),r.push(n.charAt(63&o>>6)),r.push("=")):1==e.length-t&&(o=e[t]<<16,r.push(n.charAt(63&o>>18)),r.push(n.charAt(63&o>>12)),r.push("==")),r.join("")},o=function(){for(var e=[],t=0;t<64;++t)e[n.charCodeAt(t)]=t;return e["=".charCodeAt(0)]=0,e}(),u=function(e){for(var t=0,r=[],n=0|e.length/4;0>16),r.push(255&i>>8),r.push(255&i),t+=4}return r&&("="==e.charAt(t-2)?(r.pop(),r.pop()):"="==e.charAt(t-1)&&r.pop()),r},c={encode:function(e){for(var t=[],r=0;r>6),t.push(128|63&n)):n<65536?(t.push(224|n>>12),t.push(128|63&n>>6),t.push(128|63&n)):(t.push(240|n>>18),t.push(128|63&n>>12),t.push(128|63&n>>6),t.push(128|63&n))}return t},d=function(e){for(var t=[],r=0;r>18)),r.push(n.charAt(63&o>>12)),r.push(n.charAt(63&o>>6)),r.push(n.charAt(63&o))}return 2==e.length-t?(o=(e[t]<<16)+(e[t+1]<<8),r.push(n.charAt(63&o>>18)),r.push(n.charAt(63&o>>12)),r.push(n.charAt(63&o>>6)),r.push("=")):1==e.length-t&&(o=e[t]<<16,r.push(n.charAt(63&o>>18)),r.push(n.charAt(63&o>>12)),r.push("==")),r.join("")},o=function(){for(var e=[],t=0;t<64;++t)e[n.charCodeAt(t)]=t;return e["=".charCodeAt(0)]=0,e}(),u=function(e){for(var t=0,r=[],n=0|e.length/4;0>16),r.push(255&i>>8),r.push(255&i),t+=4}return r&&("="==e.charAt(t-2)?(r.pop(),r.pop()):"="==e.charAt(t-1)&&r.pop()),r},c={encode:function(e){for(var t=[],r=0;r=0&&this.events[e].splice(r,1)}}else this.events[e]=[]},e.prototype.fire=function(e,t){if(e){var r=this.events[e];r&&r.length&&r.forEach((function(e){"function"==typeof e&&e.call(null,t)}))}},e.prototype.play=function(){try{return this.player.play()}catch(e){this.error({msg:"Call play function error",detail:e})}},e.prototype.pause=function(){try{this.player.pause()}catch(e){this.error({msg:"Call pause function error",detail:e})}},e.prototype.getCurrentTime=function(e){void 0===e&&(e=!0);try{return this.player.time(void 0,e)}catch(e){this.error({type:p.STRING.WARNING,msg:"Call getCurrentTime function error",detail:e})}return 0},e.prototype.getBufferedTime=function(){this.getCurrentTime();var e=this.video;try{e.buffered}catch(e){this.error({msg:"Call getBufferedTime function error",detail:e})}return 0},e.prototype.getDuration=function(e){void 0===e&&(e=!0);try{return this.player.duration(e)}catch(e){this.error({msg:"Call getDuration function error",detail:e})}},e.prototype.seek=function(e,t){var r=this;return void 0===t&&(t=!1),new Promise((function(n,i){if(isNaN(parseInt(""+e,10))||e<0)i({msg:"Seek time value error, time: "+e});else if(r.state.appendingSourceState)i({msg:"Call seek function error while appending source, time: "+e});else try{var o=r.getCurrentTime(),a=Date.now();r.changePlaybackState(y.BUFFERING.PLAYBACK.SEEKING);var s=r.getStartOffsetTime();eu-.6&&(e=u-.6),r.player.seek(e,t),r.player.on(p.EVENTS.PLAYBACK_SEEKED,(function i(){r.changePlaybackState(y.BUFFERING.PLAYBACK.PLAYING).player.off(p.EVENTS.PLAYBACK_SEEKED,i),n({cost:Math.floor(Date.now()-a),currentTime:o,seekedTime:e,isRelative:t})}))}catch(e){r.error({msg:"Call seek function error",detail:e})}}))},e.prototype.getCorePlayer=function(){return this.player},e.prototype.setVolume=function(e){if(isNaN(parseInt(""+e,10))||e<0||e>1)this.error({msg:"SetVolume value error, value: "+e});else try{this.player.setVolume(e)}catch(e){this.error({msg:"Call setVolume function error",detail:e})}},e.prototype.getVolume=function(){try{return this.player.getVolume()}catch(e){this.error({msg:"Call getVolume function error",detail:e})}},e.prototype.setPlaybackRate=function(e){try{this.player.setPlaybackRate(e)}catch(e){this.error({msg:"Call setPlaybackRate function error",detail:e})}},e.prototype.getPlaybackRate=function(){try{return this.player.getPlaybackRate()}catch(e){this.error({msg:"Call getPlaybackRate function error",detail:e})}},e.prototype.getAutoSwitchQualityFor=function(e){try{return this.player.getAutoSwitchQualityFor(e)}catch(e){this.error({msg:"Call getAutoSwitchQualityFor function error",detail:e})}},e.prototype.setAutoSwitchQualityFor=function(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!0);try{this.state.isAutoSwitch&&r&&(this.state.isAutoSwitch[e]=t),t||this.setMaxAllowedBitrateFor(e,0),this.player.setAutoSwitchQualityFor(e,t)}catch(e){this.error({msg:"Call setAutoSwitchQualityFor function error",detail:e})}return this},e.prototype.getAudioQuallityCanBeUsed=function(e){return e===p.DOLBY_AUDIO_QN.AUDIO||e===p.DOLBY_AUDIO_QN.AMTOS?this.checkAudioCodecCanUseByType(p.SPECIAL_AUDIO_TYPE.DOLBY)&&e||30280:e===p.FLAC_QN?this.checkAudioCodecCanUseByType(p.SPECIAL_AUDIO_TYPE.FLAC)&&e||30280:e},e.prototype.getQualityList=function(e){try{return this.player.getBitrateInfoListFor(e)}catch(e){this.error({msg:"Call getQualityList function error",detail:e})}},e.prototype.setDefaultQualityFor=function(e,t){void 0===t&&(t=0);var r=this.getQualityIndexFromQualityNumber(t,e);try{var n=this.state.mpd&&this.state.mpd[e];if(!n)return;var i=n.length;i&&(r=Math.min(r,i-1)),r>=0?(this.state.currentQualityIndex[e]=r,this.player.setDefaultQualityFor(e,r)):this.error({msg:"Call setDefaultQualityFor function error, quality: "+t})}catch(e){this.error({msg:"Call setDefaultQualityFor function error, quality: "+t+", qualityIndex = "+r,detail:e})}},e.prototype.setAutoSwitchTopQualityFor=function(e,t){var r=this;try{if(!this.state.initialized)return void this.on(p.EVENTS.STREAM_INITIALIZED,(function n(){r.off(p.EVENTS.STREAM_INITIALIZED,n),r.setAutoSwitchTopQualityFor(e,t)}));if(!t&&0!==t)return void this.setMaxAllowedBitrateFor(e,0);if(!this.state.isAutoSwitch||!this.state.isAutoSwitch[e])return;var n=this.getQualityIndexFromQualityNumber(t,e),i=this.getQualityList(e),o=i&&i[n],a=Math.floor(o.bitrate/1e3)+1;this.state.autoSwitchTopQualityMap[e]=n,this.setMaxAllowedBitrateFor(e,a)}catch(e){this.error({msg:"Call setAutoSwitchTopQualityFor function error",detail:e})}},e.prototype.setQualityFor=function(e,t,r){var n=this;return void 0===r&&(r=20),new Promise((function(i,o){if(isNaN(parseInt(""+t,10))||t<0)o({msg:"Set quality value error, quality: "+t,code:p.ERROR_CODE.SET_QUALITY_VALUE_ERR});else if(n.detectQualityTypeIsLegal(e))o({msg:"Set quality type error, type: "+e,code:p.ERROR_CODE.SET_QUALITY_TYPE_ERR});else if(n.state.appendingSourceState)o({msg:"Reject setQualityFor by appending next source.",code:p.ERROR_CODE.SET_QUALITY_APENDING_ERR});else if("audio"===e&&n.state.enableMultiAudioTracks)o({msg:"MultiAudioTrack disable change Qn",code:p.ERROR_CODE.SET_QUALITY_MULTI_TRACK});else if("audio"===e&&n.getAutoSwitchQualityFor("video"))o({msg:"abr disable change Qn",code:p.ERROR_CODE.SET_QUALITY_ABR});else try{var a=t;if((t=n.getQualityIndexFromQualityNumber(t,e))===n.state.currentQualityIndex[e])return void o({msg:"Set quality equal current quality, quality: "+t,code:p.ERROR_CODE.SET_QUALITY_SAME_VALUE,isChange:a!==n.getQualityNumberFromQualityIndex(t)&&t!==a});n.player.setQualityFor(e,t);var s=Date.now(),u=function(e){-1!==n.timer.qnChangeTimeOutFlag[e]&&(clearTimeout(n.timer.qnChangeTimeOutFlag[e]),n.timer.qnChangeTimeOutFlag[e]=-1),n.qnSwitchingInfo[e]={}};u(e);var c=1e3*r;n.timer.qnChangeTimeOutFlag[e]=window.setTimeout((function(){n.player.off(p.EVENTS.QUALITY_CHANGE_RENDERED,l),o({msg:"Call setQualityFor timeout",code:p.ERROR_CODE.SET_QUALITY_TIME_OUT}),u(e);var t=n.state.currentQualityIndex[e];n.player.setQualityFor(e,t)}),c);var l=function r(c){if(c.mediaType===e){var l=c.newQuality;if(u(c.mediaType),n.player.off(p.EVENTS.QUALITY_CHANGE_RENDERED,r),l===t){var d=n.getQualityNumberFromQualityIndex(l,e);l!==a&&a!==d?(o({msg:"Quality rendered and quality is not "+a+" but "+d,code:p.ERROR_CODE.SET_QUALITY_RENDER_CHANGED,newQuality:l,newQnNumber:d}),n.fire(p.EVENTS.QUALITY_CHANGE_ABNORMAL,{type:p.EVENTS.QUALITY_CHANGE_ABNORMAL,mediaType:e,defaultQuality:a,currentIndex:l,qualityNumber:d})):i(n.getQualityChangedData(c,s))}}};n.qnSwitchingInfo[e]={switching:!0,oQn:a,qn:t,reject:o,resolve:i,listener:l},n.player.on(p.EVENTS.QUALITY_CHANGE_RENDERED,l)}catch(e){o({msg:"Call setQualityFor function error",code:p.ERROR_CODE.SET_QUALITY_ERR,detail:e})}}))},e.prototype.getQualityFor=function(e){try{return this.player.getQualityFor(e)}catch(e){
this.error({msg:"Call getQualityFor function error",detail:e})}},e.prototype.setStableBufferTime=function(e){void 0===e&&(e=60);try{this.player.setStableBufferTime(e),this.player.setBufferTimeAtTopQuality(e),this.player.setBufferTimeAtTopQualityLongForm(e),this.player.setBufferAheadToKeep(e+10)}catch(e){this.error({msg:"Call setStableBufferTime function error",detail:e})}},e.prototype.getStableBufferTime=function(){try{return this.player.getStableBufferTime()}catch(e){this.error({msg:"Call getStableBufferTime function error",detail:e})}},e.prototype.getBufferLength=function(e){try{return this.player.getBufferLength(e)}catch(e){this.error({msg:"Call getBufferLength function error",detail:e})}},e.prototype.getCurrentPlayURLFor=function(e){try{return this.player.getCurrentSegmentInfoFor(e).url||""}catch(t){this.error({msg:"Call getCurrentPlayURLFor function error, type: "+e+", qualityIndex: "+this.state.currentQualityIndex[e],detail:t})}},e.prototype.getVideoInfo=function(){return{mediaInfo:this.state.mediaInfo,statisticsInfo:this.state.statisticsInfo}},e.prototype.getCurrentCodecID=function(e){void 0===e&&(e=p.STRING.VIDEO);var t=0;return e===p.STRING.VIDEO&&this.state&&(t=p.VIDEO_CODEC_ID.AVC,this.state.enableAV1&&(t=p.VIDEO_CODEC_ID.AV1),this.state.enableHEVC&&(t=p.VIDEO_CODEC_ID.HEVC)),t},e.prototype.getAverageConnectionSpeed=function(e){void 0===e&&(e=p.STRING.VIDEO);try{return Number(this.player.getAverageThroughput(e))||0}catch(e){this.error({msg:"Call getAverageConnectionSpeed function error",detail:e})}},e.prototype.switchSource=function(e,t,r,n){var i=this;this.onDashJSLog({type:"switchsource",message:"start switchsource"+this.id}),"function"==typeof this.switchSourcePromise.reject&&this.switchSourcePromise.reject({code:p.ERROR_CODE.SWITCH_SOURCE_ABORT,msg:"abort switch source"}),this.player.off(p.EVENTS.STREAM_INITIALIZED,this.onSiwtchSourceInitialized,this);var o=n||{},a=o.playAt,s=o.keepTransition,u=o.autoPlay;if(window.clearTimeout(this.timer.removeSwitchSourceTransition),window.clearTimeout(this.timer.switchSourceTimer),s||this.onVideoSwitchSourceEnded(),t&&("string"!=typeof t.videoid||"string"!=typeof t.audioid?this.error({type:p.STRING.WARNING,msg:"Preload data videoid/audioid value must be string type.",detail:t}):this.player&&this.player.setPreloadData(t)),this.player&&this.player.setPlayAt(a||0),this.state&&(this.state.playAt=a),r){if(!this.getTransitionCanvas()||!s){var c=document.createElement("canvas"),l=this.video.offsetWidth,d=this.video.offsetHeight,f=this.video.videoWidth,h=this.video.videoHeight,y=f/h,m=l/d;c.width=f,c.height=h,c.style.zIndex="10",c.style.position="absolute",c.style.top="50%",c.style.left="50%",c.style.transform="translate(-50%, -50%)",c.className=p.STRING.SWITCH_SOURCE_TRANSITION_ELEMENT_CLASS_NAME;var g=c.getContext("2d"),v=void 0,_=void 0;m>=y?(_=d,v=d/h*f):(v=l,_=l/f*h),c.style.width=(v/l*100).toFixed(2)+"%",c.style.height=(_/d*100).toFixed(2)+"%",g.fillRect(0,0,c.width,c.height),g.drawImage(this.video,0,0,c.width,c.height),this.video.parentNode.appendChild(c),this.video.style.visibility="hidden",c=null,g=null}this.timer.removeSwitchSourceTransition=window.setTimeout((function(){s||i.onVideoSwitchSourceEnded()}),1e4),this.video.removeEventListener("canplay",this.onVideoSwitchSourceEnded),this.video.addEventListener("canplay",this.onVideoSwitchSourceEnded)}return new Promise((function(t,r){try{e=i.filterManifest({manifest:e,state:i.state}).manifest,i.state.mpd=e,i.player?(["video","audio"].forEach((function(e){var t=i.qnSwitchingInfo[e];t&&t.switching?(clearTimeout(i.timer.qnChangeTimeOutFlag[e]),i.setDefaultQualityFor(e,t.qn),i.player.off(p.EVENTS.QUALITY_CHANGE_RENDERED,t.listener)):i.setDefaultQualityFor(e,i.state.currentQualityIndex[e])})),i.state.defaultVideoQuality=i.state.currentQualityIndex.video,i.state.defaultAudioQuality=i.state.currentQualityIndex.audio,i.bindSwitchSourceEvents(t,r,1e4,u),i.player.switchSource(e)):r({code:p.ERROR_CODE.SWITCH_SOURCE_FAILED,msg:"switch source failed"})}catch(e){r({code:p.ERROR_CODE.SWITCH_SOURCE_ERR,msg:e})}}))},e.prototype.updateSource=function(e){var t=this;return new Promise((function(r,n){try{e=t.filterManifest({manifest:e,state:t.state}).manifest,t.player.updateSource(e),t.timer.updateSourceTimer=window.setTimeout((function(){n({msg:"Update Source Timeout"})}),5e3),t.player.on(p.EVENTS.STREAM_INITIALIZED,(function e(){t.player.off(p.EVENTS.STREAM_INITIALIZED,e),clearTimeout(t.timer.updateSourceTimer),r(null)}))}catch(e){n({msg:"Call updateSource function error, "+JSON.stringify(e),detail:e})}}))},e.prototype.appendSource=function(e,t){var r=this,n=this.state.appendingSourceState,i=this.state;return new Promise((function(o,a){n&&a("Dash Player is Appending Next Source!"),r.setAutoSwitchQualityFor("video",!1,!1),r.setAutoSwitchQualityFor("audio",!1,!1);var s=Date.now();t&&("string"!=typeof t.videoid||"string"!=typeof t.audioid?r.error({type:p.STRING.WARNING,msg:"Preload data videoid/audioid value must be string type.",detail:t}):r.player&&r.player.setPreloadData(t)),r.timer.appendSourceTimer=window.setTimeout((function(){r.state.appendingSourceState=!1,a({msg:"Append source time out."})}),5e3),r.state.appendingSourceState=!0;try{if(r.player){for(var u in r.state.currentQualityIndex)r.state.currentQualityIndex[u]>=0&&r.setDefaultQualityFor(u,r.state.currentQualityIndex[u]);e=r.filterManifest({manifest:e,state:r.state}).manifest,r.player.setEndOfStreamState(!1),r.player.appendSource(e),r.player.on(p.EVENTS.APPENDED_NEXT_SOURCE,(function e(t){clearTimeout(r.timer.appendSourceTimer),r.player.off(p.EVENTS.APPENDED_NEXT_SOURCE,e),o({cost:Date.now()-s})})),r.player.on(p.EVENTS.APPENDED_NEXT_SOURCE_DURATION_CHANGED,(function e(t){r.player.off(p.EVENTS.APPENDED_NEXT_SOURCE_DURATION_CHANGED,e),r.state.appendingSourceState=!1,i.autoSwitchTopQualityMap.video>=0&&r.setAutoSwitchTopQualityFor("video",i.autoSwitchTopQualityMap.video),r.setAutoSwitchQualityFor("video",i.isAutoSwitch[p.STRING.VIDEO],!1),r.setAutoSwitchQualityFor("audio",i.isAutoSwitch[p.STRING.AUDIO],!1)}))}else clearTimeout(r.timer.appendSourceTimer),r.state.appendingSourceState=!1,a({msg:"Missing dash player instance!"})}catch(e){clearTimeout(r.timer.appendSourceTimer),r.state.appendingSourceState=!1,a({msg:"Append Source Error",detail:e})}}))},e.prototype.getNextFragmentHistoryInfo=function(){var e="";try{var t=function(e){return e?1:0};if(this.state.getNextFragmentHistory){var r=function(r){var i=n.state.getNextFragmentHistory[r],o="";i.forEach((function(e){var r,n,i=[t(e.final),e.currentTime,e.bufferLevel.toFixed(3),(r=[e.bufferResetInProgress,e.isReplacement,e.switchTrack,e.hasTopQualityChanged,e.lastInitQuality,e.bufferLevelRule],n="",r.length&&r.forEach((function(e){n+=""+t(e)})),parseInt(n,2))];o+=i.join(",")+";"})),e+=r+":"+o+"!"},n=this;for(var i in this.state.getNextFragmentHistory)r(i)}}catch(e){}return e},e.prototype.isLoadingFragment=function(e){if(e)return!!this.state.fragmentLoadingInfo[e]},e.prototype.getNetworkActivity=function(){return this.components.networkActivity&&this.components.networkActivity.getNetworkActivity()},e.prototype.getNetworkActivityHistory=function(e){return void 0===e&&(e=0),this.components.networkActivity&&this.components.networkActivity.getNetworkActivityHistory(e)},e.prototype.setEndOfStreamState=function(e){void 0===e&&(e=!1);try{return this.player.setEndOfStreamState(e)}catch(e){this.error({msg:"Call setEndOfStreamState function error",detail:e})}},e.prototype.getLogHistory=function(){var e=this.state&&this.state.logHistory||[],t=e.join("\n");return{length:e.length,log:t,size:function(e){for(var t=[],r=[e],n=0;r.length;){var i=r.pop();if("boolean"==typeof i)n+=4;else if("string"==typeof i)n+=2*i.length;else if("number"==typeof i)n+=8;else if("object"==c(i)&&-1===t.indexOf(i))for(var o in t.push(i),i)r.push(i[o])}return n}(t)}},e.prototype.getPerformanceInfo=function(e){void 0===e&&(e=!1);var t=this.getDroppedFramesInfo();return this.components.performanceInfo.getInfo(t,e)},e.prototype.getDisableLoaderType=function(){
-return this.components.ncDisableStrategy.isUseNC?this.components.ncDisableStrategy.isUseP2P?p.DISABLE_LOADER_TYPE.NONE:p.DISABLE_LOADER_TYPE.DISABLE_RP:p.DISABLE_LOADER_TYPE.DISABLE_NC},e.prototype.getBufferingInfo=function(e){var t;void 0===e&&(e=!0);var r={type:-1};try{var i=this.state.currentQualityIndex.video,o=this.state.currentQualityIndex.audio;r=this.components.bufferingInfo&&this.components.bufferingInfo.getInfo({videoBufferLength:this.getBufferLength("video"),audioBufferLength:this.getBufferLength("audio"),videoCurrentIndex:i,audioCurrentIndex:o,videoCurrentQn:this.getQualityNumberFromQualityIndex(i,p.STRING.VIDEO),audioCurrentQn:this.getQualityNumberFromQualityIndex(o,p.STRING.AUDIO),videoSpeed:this.getAverageConnectionSpeed(p.STRING.VIDEO),audioSpeed:this.getAverageConnectionSpeed(p.STRING.AUDIO),networkActivity:this.getNetworkActivityHistory(5),playbackState:this.state.playbackState,latestPlayurlErrorHTTPCode:this.state.latestPlayurlErrorHTTPCode,fragmentLoadingInfo:this.state.fragmentLoadingInfo,networkWarningHistory:this.state.networkWarningHistory,startOffsetTime:this.state.startOffsetTime,retryTimes:this.player.getRetryTimes(),seekSpace:this.player.getSpaceUtilLastSeekInSec()}),r=n(n({},r),this.getPerformanceInfo(!0)),null===(t=this.components)||void 0===t||t.bufferingStrategy.push(r)}catch(e){throw new Error(e.message)}return e&&this.onDashJSLog({type:"videoBuffering",message:"[videoBuffering]:"+JSON.stringify(r)}),r},e.prototype.getCDNInfo=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.cdnInfo);return e&&(this.state.cdnInfo={cdn:0,p2p:0,nc:0,pdn:0,ncBr:0,business:0,mcdn:0,bcache:0,vcache:0,ncFail:0,ncGotFail:0}),t}return{}},e.prototype.getCDNInfoDetail=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.cdnInfoDetail);return e&&(this.state.cdnInfoDetail={}),t}return{}},e.prototype.getRequestedInfoDetail=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.requestedInfoDetail);return e&&(this.state.requestedInfoDetail={}),t}return{}},e.prototype.getNCInfo=function(e){if(void 0===e&&(e=!1),this.state){var t={};for(var r in this.state.NCInfo)t[r]=n({},this.state.NCInfo[r]);return e&&(this.state.NCInfo={}),t}return{}},e.prototype.switchAudioTrack=function(e){var t=this;return new Promise((function(r,n){try{var i=-1,o="";if(t.state.enableMultiAudioTracks?e===t.getCurrentAudioTrackId()&&(i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_ID_NOT_CHANGED,o="the id which is going to be switched is equal to current"):(i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_NOT_SUPPORT,o="not support multiple audio tracks"),-1!==i)return void n({code:i,msg:o});0!==t.player.switchAudioTrack(e)?n({code:i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_ID_NOT_EXIST,msg:o="the id which is going to be switched is not exist"}):t.once(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,(function(e){r(e)}))}catch(e){n({code:p.ERROR_CODE.SWITCH_AUDIO_TRACK_ERR,msg:"switch aduio track failed, "+(e&&e.message)})}}))},e.prototype.getCurrentAudioTrackId=function(){return this.player.getCurrentAudioTrackId()},e.prototype.getAudioTrackList=function(){try{return this.player.getAudioTrackList()}catch(e){return[]}},e.prototype.destroy=function(){try{this.player.off(p.EVENTS.FRAGMENT_LOADING_STARTED,this.onFragmentLoading,this),this.player.off(p.EVENTS.FRAGMENT_LOADING_PROGRESS,this.onFragmentLoading,this),this.player.off(p.EVENTS.FRAGMENT_LOADING_COMPLETED,this.onFragmentLoading,this),this.player.off(p.EVENTS.SWITCH_AUDIO_TRACK_REQUEST,this.onAudioTrackSwitchRequest,this),this.player.off(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,this.onAudioTrackSwitchRendered,this),this.player.off(p.EVENTS.LOG,this.onDashJSLog,this),this.player.off(p.EVENTS.PREDICT_SEEK,this.onPredictSeek,this),this.player.off(p.EVENTS.JUMP_MEDIA_GAP,this.onJumpMediaGap,this),this.player.off(p.EVENTS.STREAM_INITIALIZED,this.onSiwtchSourceInitialized,this),this.player&&this.player.reset(),this.onVideoSwitchSourceEnded(),this.switchSourcePromise=null,this.clearAllTimer(),this.events={},this.config=null,this.state=null,this.video=null,this.player=null,this.switchStartTime=null,this.destroyAllComponents(),this.externalMediaLoader=null,this.qnSwitchingInfo=null}catch(e){this.error({msg:"Call destroy function error, "+(e&&e.message),detail:e})}},e.prototype.destroyAllComponents=function(){this.components.networkActivity.destroy(),this.components.networkActivity=null,this.components.bufferingInfo.destroy(),this.components.bufferingInfo=null,this.components.bufferingStrategy.destroy(),this.components.bufferingStrategy=null,this.components.performanceInfo.destroy(),this.components.performanceInfo=null,this.components.ncDisableStrategy.destroy(),this.components.ncDisableStrategy=null,this.components=null},e.prototype.clearAllTimer=function(){var e=this;this.timer&&(Object.keys(this.timer).forEach((function(t){"qnChangeTimeOutFlag"===t?(clearTimeout(e.timer.qnChangeTimeOutFlag.video),clearTimeout(e.timer.qnChangeTimeOutFlag.audio)):clearTimeout(e.timer[t])})),this.timer=null)},e.prototype.mixin=function(e){if(e&&e instanceof Object)for(var t in e)e.hasOwnProperty(t)&&this.state.hasOwnProperty(t)&&(this.state[t]=e[t]);this.state&&this.state.isAutoSwitch||(this.state.isAutoSwitch={video:!1,audio:!1})},e.prototype.loadDashPlayerScript=function(){var e=this,t=this.config.scriptSrc;return new Promise((function(r,n){try{var i=document.createElement("script");i.src=t,i.onload=function(){e.state.onScriptLoading=!1,clearTimeout(e.timer.loadScript),r()},i.onerror=function(r){e.state.onScriptLoading=!1,clearTimeout(e.timer.loadScript),n({msg:"Load dash player script error, src: "+t,detail:r})},document.body.appendChild(i),e.state.onScriptLoading=!0,e.timer.loadScript=window.setTimeout((function(){n({msg:"Call loadDashPlayerScript function timeout"})}),e.config.scriptMaxLoadTime)}catch(e){n({msg:"Call loadDashPlayerScript function error",detail:e})}}))},e.prototype.createPlayer=function(t,r){var n,i=window.dashjs,o=this.state;this.state.defaultVideoQuality=this.getQualityIndexFromQualityNumber(o.defaultVideoQuality,p.STRING.VIDEO),this.state.defaultAudioQuality=this.getQualityIndexFromQualityNumber(o.defaultAudioQuality,p.STRING.AUDIO);try{var a=i.MediaPlayer().create();a.setPlayerId(this.id),o&&o.protectionDataSet&&"function"==typeof a.setProtectionData&&a.setProtectionData(o.protectionDataSet),this.player=a,this.setDebugLog(),this.bindEvents(t),this.state.logHistory.push("Dash player log history, "+JSON.stringify(e.CONFIG)),o.preloadData&&a.setPreloadData(o.preloadData),o.playAt&&a.setPlayAt(o.playAt),a.initialize(this.video,o.mpd,o.isAutoPlay,o.enforceSSLStream,null===(n=this.config)||void 0===n?void 0:n.hid,this.externalMediaLoader,o.ignoreEmeEncryptedEvent,o.enableMultiAudioTracks),a.setABRStrategy(o.abrStrategy||p.STRING.ABR_THROUGHPUT),a.setAutoSwitchQualityFor(p.STRING.VIDEO,o.isAutoSwitch[p.STRING.VIDEO]),a.setAutoSwitchQualityFor(p.STRING.AUDIO,o.isAutoSwitch[p.STRING.AUDIO]),a.setFastSwitchEnabled(!0),a.enableLastBitrateCaching(!1),a.setBufferPruningInterval(20),a.setUseNC(this.components.ncDisableStrategy.isUseNC),a.setUseP2P(this.components.ncDisableStrategy.isUseP2P),o.mpd&&o.mpd.interactive&&a.setEndOfStreamState(!1),a.setJumpGaps(!0),this.setStableBufferTime(this.state.stableBufferTime)}catch(e){r({msg:"Call createPlayer function error",detail:e})}},e.prototype.bindEvents=function(e){var t=this,r=this.player;r.on(p.EVENTS.STREAM_INITIALIZED,(function n(){r.off(p.EVENTS.STREAM_INITIALIZED,n,t),t.state.initialized=!0;var i=t.player.getBitrateInfoListFor("video");e&&e(i),t.fire(p.EVENTS.STREAM_INITIALIZED),t.videoInfoSchedule(),t.detectDefaultQualityChangeAbnormal()}),this),r.on(p.EVENTS.MANIFEST_LOADED,this.parseManifestInfo,this),r.on(p.EVENTS.GET_NEXT_FRAGMENT,this.getNextFragmentInfo,this),r.on(p.EVENTS.FRAGMENT_LOADING_STARTED,this.onFragmentLoading,this),r.on(p.EVENTS.FRAGMENT_LOADING_PROGRESS,this.onFragmentLoading,this),r.on(p.EVENTS.FRAGMENT_LOADING_COMPLETED,this.onFragmentLoading,this),r.on(p.EVENTS.SWITCH_AUDIO_TRACK_REQUEST,this.onAudioTrackSwitchRequest,this),r.on(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,this.onAudioTrackSwitchRendered,this),
-r.on(p.EVENTS.FRAGMENT_LOADED_ERROR,this.onFragmentLoadingError,this),r.on(p.EVENTS.REQUEST_RETRYED,this.onFragmentLoadingError,this),r.on(p.EVENTS.LOG,this.onDashJSLog,this),r.on(p.EVENTS.PREDICT_SEEK,this.onPredictSeek,this),r.on(p.EVENTS.JUMP_MEDIA_GAP,this.onJumpMediaGap,this),r.onInitSegmentsLoaded(this.onInitSegmentsLoaded.bind(this)),r.on(p.EVENTS.DELAY_TO_APPEND_TO_BUFFER,(function(e){})),r.on(p.EVENTS.START_OFFSET_TIME_WARNING,(function(e){var r=e&&e.time;r&&r>t.state.startOffsetTime&&(t.error({type:p.STRING.WARNING,code:p.ERROR.START_OFFSET_TIME_WARNING,msg:"Start offset time is less than buffer.start(0), "+t.state.startOffsetTime+" < "+r}),t.state.startOffsetTime=r+.2)})),r.on(p.EVENTS.PLAYBACK_METADATA_LOADED,(function e(){r.off(p.EVENTS.PLAYBACK_METADATA_LOADED,e),t.timer.delayStartOffsetHackTimer=window.setTimeout((function(){if(t.video){var e=t.video.buffered,n=e.length&&e.start(0),i=t.video.currentTime;i=400){var c=0;if(a){var l=a.match(/expires=\d+/g),h=a.match(/deadline=\d+/g);c=l&&parseInt(l[0].substr(8),10)||h&&parseInt(h[0].substr(9),10)}c&&this.state.latestPlayurlExpireTimeStamp===c&&this.state.latestPlayurlErrorHTTPCode===s&&(u=!1),this.state.latestPlayurlExpireTimeStamp=c,this.state.latestPlayurlErrorHTTPCode=s}u&&this.error({code:r,msg:s+" downloadError - "+a,detail:e});break;case p.ERROR.MANIFEST_ERROR:case p.ERROR.MANIFEST_TYPE_ERROR:case p.ERROR.MANIFEST_RESOLVE_ERROR:this.error({code:r,msg:n+" - "+i,detail:e});break;case p.ERROR.MEDIA_ERROR:case p.ERROR.MEDIA_ABORTED_ERROR:case p.ERROR.MEDIA_NETWORK_ERROR:case p.ERROR.MEDIA_SUPPORTED_ERROR:case p.ERROR.MEDIA_ENCRYPTED_ERROR:case p.ERROR.MEDIA_UNKNOWN_ERROR:case p.ERROR.MEDIA_DECODE_ERROR:!function(){try{if(r===p.ERROR.MEDIA_DECODE_ERROR&&"audio"===o){var e=t.getQualityNumberFromQualityIndex(t.getQualityFor("audio"),"audio");f.default.saveDecodeErrorMediaQualityNumber("audio",e,p.STRING.BILIBILI_DECODE_ERROR_OBJ)}var n=t.state,i=n.enableAV1,a=n.enableHEVC,s=n.decodeErrorLocalConfig,u=i?"AV1":a?"HEVC":"AVC";if("AVC"===u)return;if(!o||"audio"!==o){var c="enable"+u+"Error";f.default.setSessionStorage(c,"1")}if(s&&s[u]){var l=s[u],h=l.occurTimes,y=l.disableDuration,m=d.getLocalDecodeErrorInfo(u)||{occurTimes:0},g=m.occurTimes,v=m.reactivateTime;if(++g>=h&&!v){var _=y||6048e5;v=(new Date).getTime()+_}d.setLocalDecodeErrorInfo(u,{occurTimes:g,reactivateTime:v})}}catch(e){}}();var y=e.event,m=o?"[DecodeErrorType]"+o+";":n+" - "+y;this.error({code:r,msg:m,detail:e});break;default:this.error({msg:"Unknown error.",detail:e}),console.error(e)}}catch(e){this.error({msg:"Unknown error.",detail:e})}},e.prototype.detectDashJSExists=function(){return!(!window.dashjs||!window.dashjs.MediaPlayer)},e.prototype.detectQualityTypeIsLegal=function(e){return!(e===p.STRING.VIDEO||e===p.STRING.AUDIO)},e.prototype.parseManifestInfo=function(e){var t=this;try{var r=e.data;if(this.state.manifest=r,r&&r.Period){var n={baseUri:r.baseUri,representation:{video:[],audio:[]}},i={video:{},audio:{}},o=r.Period.AdaptationSet_asArray;o.length&&o.forEach((function(e){var r=e.Representation_asArray;if(r){var o="";r instanceof Array||(r=[r]),r.length&&(r.sort((function(e,t){return e.bandwidth-t.bandwidth})),r.forEach((function(r,a){var s=r.frameRate,u=r.mimeType||e.mimeType;try{if(s&&(""+s).indexOf("/")>-1){var c=s.split("/");s=(s=parseInt(c[0],10)/parseInt(c[1],10)).toFixed(3)}}catch(e){t.error({msg:"Parse fps error, fps: "+s,detail:e})}var l={id:r.id,baseURL:r.BaseURL,width:r.width,height:r.height,bandwidth:r.bandwidth,codecs:r.codecs,fps:s,mimeType:u,sar:r.sar,startWithSAP:r.startWithSAP,audioSamplingRate:r.audioSamplingRate}
+return this.components.ncDisableStrategy.isUseNC?this.components.ncDisableStrategy.isUseP2P?p.DISABLE_LOADER_TYPE.NONE:p.DISABLE_LOADER_TYPE.DISABLE_RP:p.DISABLE_LOADER_TYPE.DISABLE_NC},e.prototype.getBufferingInfo=function(e){var t;void 0===e&&(e=!0);var r={type:-1};try{var i=this.state.currentQualityIndex.video,o=this.state.currentQualityIndex.audio;r=this.components.bufferingInfo&&this.components.bufferingInfo.getInfo({videoBufferLength:this.getBufferLength("video"),audioBufferLength:this.getBufferLength("audio"),videoCurrentIndex:i,audioCurrentIndex:o,videoCurrentQn:this.getQualityNumberFromQualityIndex(i,p.STRING.VIDEO),audioCurrentQn:this.getQualityNumberFromQualityIndex(o,p.STRING.AUDIO),videoSpeed:this.getAverageConnectionSpeed(p.STRING.VIDEO),audioSpeed:this.getAverageConnectionSpeed(p.STRING.AUDIO),networkActivity:this.getNetworkActivityHistory(5),playbackState:this.state.playbackState,latestPlayurlErrorHTTPCode:this.state.latestPlayurlErrorHTTPCode,fragmentLoadingInfo:this.state.fragmentLoadingInfo,networkWarningHistory:this.state.networkWarningHistory,startOffsetTime:this.state.startOffsetTime,retryTimes:this.player.getRetryTimes(),seekSpace:this.player.getSpaceUtilLastSeekInSec()}),r=n(n({},r),this.getPerformanceInfo(!0)),null===(t=this.components)||void 0===t||t.bufferingStrategy.push(r)}catch(e){throw new Error(e.message)}return e&&this.onDashJSLog({type:"videoBuffering",message:"[videoBuffering]:"+JSON.stringify(r)}),r},e.prototype.getCDNInfo=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.cdnInfo);return e&&(this.state.cdnInfo={cdn:0,p2p:0,nc:0,pdn:0,ncBr:0,business:0,mcdn:0,bcache:0,vcache:0,ncFail:0,ncGotFail:0}),t}return{}},e.prototype.getCDNInfoDetail=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.cdnInfoDetail);return e&&(this.state.cdnInfoDetail={}),t}return{}},e.prototype.getRequestedInfoDetail=function(e){if(void 0===e&&(e=!1),this.state){var t=n({},this.state.requestedInfoDetail);return e&&(this.state.requestedInfoDetail={}),t}return{}},e.prototype.getNCInfo=function(e){if(void 0===e&&(e=!1),this.state){var t={};for(var r in this.state.NCInfo)t[r]=n({},this.state.NCInfo[r]);return e&&(this.state.NCInfo={}),t}return{}},e.prototype.switchAudioTrack=function(e){var t=this;return new Promise((function(r,n){try{var i=-1,o="";if(t.state.enableMultiAudioTracks?e===t.getCurrentAudioTrackId()&&(i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_ID_NOT_CHANGED,o="the id which is going to be switched is equal to current"):(i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_NOT_SUPPORT,o="not support multiple audio tracks"),-1!==i)return void n({code:i,msg:o});0!==t.player.switchAudioTrack(e)?n({code:i=p.ERROR_CODE.SWITCH_AUDIO_TRACK_ID_NOT_EXIST,msg:o="the id which is going to be switched is not exist"}):t.once(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,(function(e){r(e)}))}catch(e){n({code:p.ERROR_CODE.SWITCH_AUDIO_TRACK_ERR,msg:"switch aduio track failed, "+(e&&e.message)})}}))},e.prototype.getCurrentAudioTrackId=function(){return this.player.getCurrentAudioTrackId()},e.prototype.getAudioTrackList=function(){try{return this.player.getAudioTrackList()}catch(e){return[]}},e.prototype.destroy=function(){try{this.player.off(p.EVENTS.FRAGMENT_LOADING_STARTED,this.onFragmentLoading,this),this.player.off(p.EVENTS.FRAGMENT_LOADING_PROGRESS,this.onFragmentLoading,this),this.player.off(p.EVENTS.FRAGMENT_LOADING_COMPLETED,this.onFragmentLoading,this),this.player.off(p.EVENTS.SWITCH_AUDIO_TRACK_REQUEST,this.onAudioTrackSwitchRequest,this),this.player.off(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,this.onAudioTrackSwitchRendered,this),this.player.off(p.EVENTS.LOG,this.onDashJSLog,this),this.player.off(p.EVENTS.PREDICT_SEEK,this.onPredictSeek,this),this.player.off(p.EVENTS.JUMP_MEDIA_GAP,this.onJumpMediaGap,this),this.player.off(p.EVENTS.STREAM_INITIALIZED,this.onSiwtchSourceInitialized,this),this.player&&this.player.reset(),this.onVideoSwitchSourceEnded(),this.switchSourcePromise=null,this.clearAllTimer(),this.events={},this.config=null,this.state=null,this.video=null,this.player=null,this.switchStartTime=null,this.destroyAllComponents(),this.externalMediaLoader=null,this.qnSwitchingInfo=null}catch(e){this.error({msg:"Call destroy function error, "+(e&&e.message),detail:e})}},e.prototype.destroyAllComponents=function(){this.components.networkActivity.destroy(),this.components.networkActivity=null,this.components.bufferingInfo.destroy(),this.components.bufferingInfo=null,this.components.bufferingStrategy.destroy(),this.components.bufferingStrategy=null,this.components.performanceInfo.destroy(),this.components.performanceInfo=null,this.components.ncDisableStrategy.destroy(),this.components.ncDisableStrategy=null,this.components=null},e.prototype.clearAllTimer=function(){var e=this;this.timer&&(Object.keys(this.timer).forEach((function(t){"qnChangeTimeOutFlag"===t?(clearTimeout(e.timer.qnChangeTimeOutFlag.video),clearTimeout(e.timer.qnChangeTimeOutFlag.audio)):clearTimeout(e.timer[t])})),this.timer=null)},e.prototype.mixin=function(e){if(e&&e instanceof Object)for(var t in e)e.hasOwnProperty(t)&&this.state.hasOwnProperty(t)&&(this.state[t]=e[t]);this.state&&this.state.isAutoSwitch||(this.state.isAutoSwitch={video:!1,audio:!1})},e.prototype.loadDashPlayerScript=function(){var e=this,t=this.config.scriptSrc;return new Promise((function(r,n){try{var i=document.createElement("script");i.src=t,i.onload=function(){e.state.onScriptLoading=!1,clearTimeout(e.timer.loadScript),r()},i.onerror=function(r){e.state.onScriptLoading=!1,clearTimeout(e.timer.loadScript),n({msg:"Load dash player script error, src: "+t,detail:r})},document.body.appendChild(i),e.state.onScriptLoading=!0,e.timer.loadScript=window.setTimeout((function(){n({msg:"Call loadDashPlayerScript function timeout"})}),e.config.scriptMaxLoadTime)}catch(e){n({msg:"Call loadDashPlayerScript function error",detail:e})}}))},e.prototype.createPlayer=function(t,r){var n,i=dashjs,o=this.state;this.state.defaultVideoQuality=this.getQualityIndexFromQualityNumber(o.defaultVideoQuality,p.STRING.VIDEO),this.state.defaultAudioQuality=this.getQualityIndexFromQualityNumber(o.defaultAudioQuality,p.STRING.AUDIO);try{var a=i.MediaPlayer().create();a.setPlayerId(this.id),o&&o.protectionDataSet&&"function"==typeof a.setProtectionData&&a.setProtectionData(o.protectionDataSet),this.player=a,this.setDebugLog(),this.bindEvents(t),this.state.logHistory.push("Dash player log history, "+JSON.stringify(e.CONFIG)),o.preloadData&&a.setPreloadData(o.preloadData),o.playAt&&a.setPlayAt(o.playAt),a.initialize(this.video,o.mpd,o.isAutoPlay,o.enforceSSLStream,null===(n=this.config)||void 0===n?void 0:n.hid,this.externalMediaLoader,o.ignoreEmeEncryptedEvent,o.enableMultiAudioTracks),a.setABRStrategy(o.abrStrategy||p.STRING.ABR_THROUGHPUT),a.setAutoSwitchQualityFor(p.STRING.VIDEO,o.isAutoSwitch[p.STRING.VIDEO]),a.setAutoSwitchQualityFor(p.STRING.AUDIO,o.isAutoSwitch[p.STRING.AUDIO]),a.setFastSwitchEnabled(!0),a.enableLastBitrateCaching(!1),a.setBufferPruningInterval(20),a.setUseNC(this.components.ncDisableStrategy.isUseNC),a.setUseP2P(this.components.ncDisableStrategy.isUseP2P),o.mpd&&o.mpd.interactive&&a.setEndOfStreamState(!1),a.setJumpGaps(!0),this.setStableBufferTime(this.state.stableBufferTime)}catch(e){r({msg:"Call createPlayer function error",detail:e})}},e.prototype.bindEvents=function(e){var t=this,r=this.player;r.on(p.EVENTS.STREAM_INITIALIZED,(function n(){r.off(p.EVENTS.STREAM_INITIALIZED,n,t),t.state.initialized=!0;var i=t.player.getBitrateInfoListFor("video");e&&e(i),t.fire(p.EVENTS.STREAM_INITIALIZED),t.videoInfoSchedule(),t.detectDefaultQualityChangeAbnormal()}),this),r.on(p.EVENTS.MANIFEST_LOADED,this.parseManifestInfo,this),r.on(p.EVENTS.GET_NEXT_FRAGMENT,this.getNextFragmentInfo,this),r.on(p.EVENTS.FRAGMENT_LOADING_STARTED,this.onFragmentLoading,this),r.on(p.EVENTS.FRAGMENT_LOADING_PROGRESS,this.onFragmentLoading,this),r.on(p.EVENTS.FRAGMENT_LOADING_COMPLETED,this.onFragmentLoading,this),r.on(p.EVENTS.SWITCH_AUDIO_TRACK_REQUEST,this.onAudioTrackSwitchRequest,this),r.on(p.EVENTS.SWITCH_AUDIO_TRACK_RENDERED,this.onAudioTrackSwitchRendered,this),
+r.on(p.EVENTS.FRAGMENT_LOADED_ERROR,this.onFragmentLoadingError,this),r.on(p.EVENTS.REQUEST_RETRYED,this.onFragmentLoadingError,this),r.on(p.EVENTS.LOG,this.onDashJSLog,this),r.on(p.EVENTS.PREDICT_SEEK,this.onPredictSeek,this),r.on(p.EVENTS.JUMP_MEDIA_GAP,this.onJumpMediaGap,this),r.onInitSegmentsLoaded(this.onInitSegmentsLoaded.bind(this)),r.on(p.EVENTS.DELAY_TO_APPEND_TO_BUFFER,(function(e){})),r.on(p.EVENTS.START_OFFSET_TIME_WARNING,(function(e){var r=e&&e.time;r&&r>t.state.startOffsetTime&&(t.error({type:p.STRING.WARNING,code:p.ERROR.START_OFFSET_TIME_WARNING,msg:"Start offset time is less than buffer.start(0), "+t.state.startOffsetTime+" < "+r}),t.state.startOffsetTime=r+.2)})),r.on(p.EVENTS.PLAYBACK_METADATA_LOADED,(function e(){r.off(p.EVENTS.PLAYBACK_METADATA_LOADED,e),t.timer.delayStartOffsetHackTimer=window.setTimeout((function(){if(t.video){var e=t.video.buffered,n=e.length&&e.start(0),i=t.video.currentTime;i=400){var c=0;if(a){var l=a.match(/expires=\d+/g),h=a.match(/deadline=\d+/g);c=l&&parseInt(l[0].substr(8),10)||h&&parseInt(h[0].substr(9),10)}c&&this.state.latestPlayurlExpireTimeStamp===c&&this.state.latestPlayurlErrorHTTPCode===s&&(u=!1),this.state.latestPlayurlExpireTimeStamp=c,this.state.latestPlayurlErrorHTTPCode=s}u&&this.error({code:r,msg:s+" downloadError - "+a,detail:e});break;case p.ERROR.MANIFEST_ERROR:case p.ERROR.MANIFEST_TYPE_ERROR:case p.ERROR.MANIFEST_RESOLVE_ERROR:this.error({code:r,msg:n+" - "+i,detail:e});break;case p.ERROR.MEDIA_ERROR:case p.ERROR.MEDIA_ABORTED_ERROR:case p.ERROR.MEDIA_NETWORK_ERROR:case p.ERROR.MEDIA_SUPPORTED_ERROR:case p.ERROR.MEDIA_ENCRYPTED_ERROR:case p.ERROR.MEDIA_UNKNOWN_ERROR:case p.ERROR.MEDIA_DECODE_ERROR:!function(){try{if(r===p.ERROR.MEDIA_DECODE_ERROR&&"audio"===o){var e=t.getQualityNumberFromQualityIndex(t.getQualityFor("audio"),"audio");f.default.saveDecodeErrorMediaQualityNumber("audio",e,p.STRING.BILIBILI_DECODE_ERROR_OBJ)}var n=t.state,i=n.enableAV1,a=n.enableHEVC,s=n.decodeErrorLocalConfig,u=i?"AV1":a?"HEVC":"AVC";if("AVC"===u)return;if(!o||"audio"!==o){var c="enable"+u+"Error";f.default.setSessionStorage(c,"1")}if(s&&s[u]){var l=s[u],h=l.occurTimes,y=l.disableDuration,m=d.getLocalDecodeErrorInfo(u)||{occurTimes:0},g=m.occurTimes,v=m.reactivateTime;if(++g>=h&&!v){var _=y||6048e5;v=(new Date).getTime()+_}d.setLocalDecodeErrorInfo(u,{occurTimes:g,reactivateTime:v})}}catch(e){}}();var y=e.event,m=o?"[DecodeErrorType]"+o+";":n+" - "+y;this.error({code:r,msg:m,detail:e});break;default:this.error({msg:"Unknown error.",detail:e}),console.error(e)}}catch(e){this.error({msg:"Unknown error.",detail:e})}},e.prototype.detectDashJSExists=function(){return!(!dashjs||!dashjs.MediaPlayer)},e.prototype.detectQualityTypeIsLegal=function(e){return!(e===p.STRING.VIDEO||e===p.STRING.AUDIO)},e.prototype.parseManifestInfo=function(e){var t=this;try{var r=e.data;if(this.state.manifest=r,r&&r.Period){var n={baseUri:r.baseUri,representation:{video:[],audio:[]}},i={video:{},audio:{}},o=r.Period.AdaptationSet_asArray;o.length&&o.forEach((function(e){var r=e.Representation_asArray;if(r){var o="";r instanceof Array||(r=[r]),r.length&&(r.sort((function(e,t){return e.bandwidth-t.bandwidth})),r.forEach((function(r,a){var s=r.frameRate,u=r.mimeType||e.mimeType;try{if(s&&(""+s).indexOf("/")>-1){var c=s.split("/");s=(s=parseInt(c[0],10)/parseInt(c[1],10)).toFixed(3)}}catch(e){t.error({msg:"Parse fps error, fps: "+s,detail:e})}var l={id:r.id,baseURL:r.BaseURL,width:r.width,height:r.height,bandwidth:r.bandwidth,codecs:r.codecs,fps:s,mimeType:u,sar:r.sar,startWithSAP:r.startWithSAP,audioSamplingRate:r.audioSamplingRate}
;u.indexOf(p.STRING.VIDEO)>-1?o=p.STRING.VIDEO:u.indexOf(p.STRING.AUDIO)>-1?o=p.STRING.AUDIO:t.error({msg:"Manifest missing mimeType",detail:r}),o&&(function(e){var t,r,n,i=e.width,o=e.height,a=e.id;return t=function(e,t,r,n){return e+';codecs="'+t+'"'+(r&&n?';width="'+r+'";height="'+n+'"':";")}(e.mimeType,e.codecs,i,o),(null===(n=(r=window.MediaSource).isTypeSupported)||void 0===n?void 0:n.call(r,t))&&function(e,t,r){return v.getCurrentBrowserInfo().type!==v.BROWSER_TYPE.Firefox||e!==p.VIDEO_QN.QN_4K||!(!t||!r)&&t<=4096&&r<=2160}(+a,i,o)}(l)||t.isUsingWasmPlayer())?(n.representation[o].push(l),i[o][l.id]=a):t.onDashJSLog({type:"FilterCodecNotSupportedQn",message:"abandon qn: "+l.id})}))),t.state.maxQualityIndex[o]=r.length-1}})),this.state.manifestInfo=n,this.state.qualityNumberMap=i,this.state.setTheDefaultVideoQualityState||(this.state.setTheDefaultVideoQualityState=!0,this.setDefaultQualityFor("video",this.state.defaultVideoQuality),this.setDefaultQualityFor("audio",this.state.defaultAudioQuality))}}catch(t){this.error({msg:"Parse dash player manifest error",detail:e})}},e.prototype.getQualityIndexFromQualityNumber=function(e,t){void 0===t&&(t=p.STRING.VIDEO);var r=0;"audio"===t&&(e=this.qualityNumberDowngrading("audio",e)),t===p.STRING.AUDIO&&[p.DOLBY_AUDIO_QN.AMTOS,p.DOLBY_AUDIO_QN.AUDIO,p.FLAC_QN].includes(e)&&(e=this.getAudioQuallityCanBeUsed(e));try{var n=this.state.qualityNumberMap[t];e=parseInt(""+e,10);var i=this.state.maxQualityIndex[t];if(n&&n[e]>=0&&e>=this.config.minQualityNumberMappingNumber){var o=n[e];o>=0&&(r=o)}else if(-1===i||e>=0&&e<=i)r=e;else if(n){for(var a in n)if(n.hasOwnProperty(a)){var s=parseInt(a,10);s "+r.new+", segment index list: "+t.notEqualIndexList+" } "})}var n=this.state.segmentsInfoMap,i=this.state.appendingSourceState;if(n&&n.video&&n.audio&&!i){var o=n.video.realDuration,a=n.audio.realDuration,s=Math.abs(o-a);if(s>3){var u=this.getQualityNumberFromQualityIndex(n.video.qualityIndex,p.STRING.VIDEO),c=this.getQualityNumberFromQualityIndex(n.audio.qualityIndex,p.STRING.AUDIO),l=n.video.segments.length,d=n.audio.segments.length;this.error({type:p.STRING.WARNING,code:p.ERROR.DURATION_DEVIATION_IS_TOO_LARGE,msg:"Video / audio duration deviation is too large, deviation: "+s+"s. Video qn:"+u+", segments:"+l+", duration:"+o+". Audio qn:"+c+", segments:"+d+", duration:"+a})}}if(this.state.startOffsetTimeh&&(this.player.seek(this.state.startOffsetTime+.2),this.error({type:p.STRING.WARNING,code:p.ERROR.START_OFFSET_TIME_WARNING,msg:e+" start offset time is greater than 0, "+this.state.startOffsetTime}))}}catch(e){this.error({msg:"Call onInitSegmentsLoaded function error",detail:e})}},e.prototype.setMaxAllowedBitrateFor=function(e,t){try{this.player.setMaxAllowedBitrateFor(e,t)}catch(e){this.error({msg:"Call setMaxAllowedBitrateFor function error",detail:e})}},e.prototype.videoInfoSchedule=function(){var e=this,t={},r={};try{var n=this.state,i=n.manifestInfo,o=n.currentQualityIndex,a=i.representation[p.STRING.VIDEO][o[p.STRING.VIDEO]]||{},s=i.representation[p.STRING.AUDIO][o[p.STRING.AUDIO]]||{},u=a.mimeType+';codecs="'+a.codecs+'"',c=this.getCurrentSegmentInfoFor(p.STRING.VIDEO),l=s.mimeType+';codecs="'+s.codecs+'"',d=this.getCurrentSegmentInfoFor(p.STRING.AUDIO),f=this.getDroppedFramesInfo(),h=this.getCurrentCodecID(p.STRING.VIDEO);t={width:a.width,height:a.height,sar:a.sar,mimeType:u+", "+l,fps:a.fps,videoDataRate:a.bandwidth,videoCodec:a.codecs,videoCodecID:h,audioDataRate:s.bandwidth,audioCodec:s.codecs,audioCodecID:0,audioSampleRate:s.audioSamplingRate||0,audioChannelCount:0},r={playerType:"DashPlayer",speed:Math.round(this.getAverageConnectionSpeed(p.STRING.VIDEO)),videoConnectionSpeed:Math.round(this.getAverageConnectionSpeed(p.STRING.VIDEO)),audioConnectionSpeed:Math.round(this.getAverageConnectionSpeed(p.STRING.AUDIO)),networkActivity:this.components.networkActivity&&this.components.networkActivity.getNetworkActivity(),videoBufferHealth:this.getBufferLength("video")||0,audioBufferHealth:this.getBufferLength("audio")||0,droppedFrames:f.droppedFrames||0,decodedFrames:f.totalFrames||0,audioURL:d.url||"",audioCurrentSegmentIndex:d.index||0,audioCurrentSegmentStartTime:d.startTime||0,audioCurrentSegmentDuration:d.duration||0,audioTotalSegmentCount:n.segmentsInfoMap[p.STRING.AUDIO].total||0,videoURL:c.url||"",videoCurrentSegmentIndex:c.index||0,videoCurrentSegmentStartTime:c.startTime||0,videoCurrentSegmentDuration:c.duration||0,videoTotalSegmentCount:n.segmentsInfoMap[p.STRING.VIDEO].total||0},this.state.mediaInfo=t,this.state.statisticsInfo=r,this.fire(p.EVENTS.VIDEO_INFO,{mediaInfo:t,statisticsInfo:r})}catch(e){}clearTimeout(this.timer&&this.timer.videoInfoSchedule),this.config&&this.config.videoInfoScheduleTime&&this.timer&&(this.timer.videoInfoSchedule=window.setTimeout((function(){e.videoInfoSchedule()}),this.config.videoInfoScheduleTime))},e.prototype.getQualityChangedData=function(e,t){var r={};try{var n=e.mediaType,i=e.type,o=e.newQuality,a=e.oldQuality,s=this.state.isAutoSwitch[n];r={mediaType:n,type:i,newQuality:o,newQualityNumber:this.getQualityNumberFromQualityIndex(o,n),oldQuality:a,oldQualityNumber:this.getQualityNumberFromQualityIndex(a,n),currentTime:this.getCurrentTime(),isAutoSwitch:s,dict:this.player.getThroughputDict("video")},p.EVENTS.QUALITY_CHANGE_RENDERED===i?((t=t||this.state.autoSwitchStartTime||0)&&(r.cost=Math.floor(Date.now()-t)),this.state.autoSwitchStartTime=0):p.EVENTS.QUALITY_CHANGE_REQUESTED===i&&(this.state.autoSwitchStartTime=Date.now())}catch(e){this.error({msg:"Call getQualityChangedData error",detail:e,type:p.STRING.WARNING})}return r},e.prototype.getTransitionCanvas=function(){try{if(this.video&&this.video.parentNode)return this.video.parentNode.querySelector("."+p.STRING.SWITCH_SOURCE_TRANSITION_ELEMENT_CLASS_NAME)}catch(e){return null}},e.prototype.onVideoSwitchSourceEnded=function(e){try{this.switchSourcePromise={},window.clearTimeout(this.timer.removeSwitchSourceTransition),window.clearTimeout(this.timer.switchSourceTimer),this.video&&(this.video.style.visibility="",this.video.removeEventListener("canplay",this.onVideoSwitchSourceEnded));var t=void 0;if(e&&e.target){var r=e.target.parentElement;t=r&&r.querySelectorAll("."+p.STRING.SWITCH_SOURCE_TRANSITION_ELEMENT_CLASS_NAME)
}else t=document.querySelectorAll("."+p.STRING.SWITCH_SOURCE_TRANSITION_ELEMENT_CLASS_NAME);t&&t.length&&t.forEach((function(e){e&&e.parentElement.removeChild(e)}))}catch(e){console.error("Remove transition canvas error.",e)}},e.prototype.getStartOffsetTime=function(){var e=0;try{var t=this.state.segmentsInfoMap;t&&(e=Math.max(t.video.startOffsetTime||0,t.audio.startOffsetTime||0))}catch(e){}return e},e.prototype.setDebugLog=function(){try{var e=location.href;e&&e.indexOf("debug=1")>0&&this.player.getDebug().setLogToBrowserConsole(!0)}catch(e){}},e.prototype.getNextFragmentInfo=function(e){if(e&&e.mediaType){var t=e.mediaType;this.state.getNextFragmentHistory||(this.state.getNextFragmentHistory={video:[],audio:[]});var r=!1,n=this.state.getNextFragmentHistory[t].length;if(n){var i=this.state.getNextFragmentHistory[t][this.state.getNextFragmentHistory[t].length-1];for(var o in i)if(i[o]!==e[o]){r=!0;break}}!r&&n||(n>=30&&this.state.getNextFragmentHistory[e.mediaType].splice(0,1),this.state.getNextFragmentHistory[e.mediaType].push(e))}},e.prototype.onFragmentLoading=function(e){var t,r;if(e&&e.type){var n=e.type,i=e.request,o=this.covertFragmentInfoObject(i);if(o.loadingType=n,n===p.EVENTS.FRAGMENT_LOADING_STARTED)this.state.fragmentLoadingInfo[o.mediaType]=o;else if(n===p.EVENTS.FRAGMENT_LOADING_COMPLETED){var a=this.state.fragmentLoadingInfo[o.mediaType];o.isError=!!e.error;var s=e.response&&e.response.byteLength||0,u=Number(i.firstByteDate)-Number(i.requestStartDate);u=u?Math.max(u,1):1;var c=Number(i.requestEndDate)-Number(i.firstByteDate);c=c?Math.max(c,1):1;var l=Number(i.requestEndDate)-Number(i.requestStartDate);l=l?Math.max(l,1):1;var d=Math.round(8*s/l);o.latencyTime=u,o.downloadTime=c,o.totalTime=l,o.downloadBytes=s,o.connectionSpeed=d,o.data=e.response,o.totalSize=this.state.segmentsInfoMap[o.mediaType].rangeEnd+1;var f=!0;for(var h in a)if(a[h]!==o[h]&&"loadingType"!==h&&!isNaN(a[h])){f=!1;break}f&&(this.state.fragmentLoadingInfo[o.mediaType]=null,this.fire(p.EVENTS.FRAGMENT_LOADING_COMPLETED,o)),this.bpNCSaveData(o);var y=i.mediaType;"video"!==y&&"audio"!==y||this.recordRequestedInfoDetail(y,{code:200,qn:null==o?void 0:o.qn,index:null==o?void 0:o.index,rType:null===(t=null==i?void 0:i.loadInfo)||void 0===t?void 0:t.rType,protocol:null===(r=null==i?void 0:i.loadInfo)||void 0===r?void 0:r.protocol,currentTime:this.getCurrentTime(),buffered:this.getBufferLength(y),now:Math.round(null===performance||void 0===performance?void 0:performance.now()),latencyTime:u,downloadTime:c,totalTime:l,connectionSpeed:d,totalSize:s,retryTimes:null==i?void 0:i.retry,url:null==i?void 0:i.url})}else this.state.fragmentLoadingInfo&&this.state.fragmentLoadingInfo[o.mediaType]&&!this.state.fragmentLoadingInfo[o.mediaType].loaderType&&(this.state.fragmentLoadingInfo[o.mediaType].loaderType=o.loaderType),this.components.networkActivity&&this.components.networkActivity.onFragmentLoadingProgess(e)}},e.prototype.onFragmentLoadingError=function(e){if(e){if(e.type===p.EVENTS.REQUEST_RETRYED&&(null==e?void 0:e.code)<4e3)return;var t=null==e?void 0:e.mediaType;"video"!==t&&"audio"!==t||this.recordRequestedInfoDetail(t,{code:null==e?void 0:e.code,qn:(null==e?void 0:e.id)||(null==e?void 0:e.qn),index:null==e?void 0:e.index,rType:e.rType,retryTimes:e.retryTimes,currentTime:this.getCurrentTime(),buffered:this.getBufferLength(t),now:Math.round(null===performance||void 0===performance?void 0:performance.now()),latencyTime:null==e?void 0:e.timeout,downloadTime:(null==e?void 0:e.downloadTime)||(null==e?void 0:e.timeout),totalTime:(null==e?void 0:e.totalTime)||(null==e?void 0:e.timeout),totalSize:null==e?void 0:e.received,url:null==e?void 0:e.url})}},e.prototype.recordRequestedInfoDetail=function(e,t){var r,n,i,o;if(t&&this.state){(null===(r=this.state)||void 0===r?void 0:r.requestedInfoDetail[e])||(this.state.requestedInfoDetail[e]={latestHost:"",list:[]}),this.state.requestedInfoDetail[e].list.length>1e3&&this.state.requestedInfoDetail[e].list.shift();var a="-",s="443";try{var u=((null==t?void 0:t.url)||"").match(/^(?:https?:\/\/)?([^\/\n:]+)(?::(\d+))?/);u[2]&&(s=u[2]);var c=null===(n=u[1])||void 0===n?void 0:n.split(".");a=c.splice(0,c.length-2).join("."),"443"!==s&&(a+=":"+s);var l=this.state.requestedInfoDetail[e].latestHost;l&&l===a||(this.state.requestedInfoDetail[e].latestHost=a)}catch(e){}var d=t.qn||t.representationId;if(d){var p={id:this.state.requestedInfoRecordIndex++,co:t.code,qn:parseInt(d.toString().substr(-3),10),in:t.index,rt:(t.rType||"-").substr(0,1),qr:(t.protocol||"-").substr(0,1),ct:f.default.toFixed(t.currentTime||0,2),bf:f.default.toFixed(t.buffered||0,2),lt:t.latencyTime||0,dt:t.downloadTime||0,cs:t.connectionSpeed||0,ts:t.totalSize||0,ry:t.retryTimes||0,ht:a};null===(o=null===(i=this.state)||void 0===i?void 0:i.requestedInfoDetail[e])||void 0===o||o.list.push([p.id,p.co,p.qn,p.in,{"-":0,X:1,N:2,P:3}[p.rt]||0,{"-":0,T:1,Q:2}[p.qr]||0,p.ct,p.bf,p.lt,p.dt,p.cs,p.ts,p.ry,p.ht])}}},e.prototype.bpNCSaveData=function(e){if(e&&e.url&&e.range&&e.data){var t=this.getBPNC();if(t&&"function"==typeof t.allowDPSaveDataByNC){var r=(""+e.url).split("?")[0].split("/"),n=r[r.length-1].split(".")[0].split("-").pop();if(n){var i=parseInt(n,10);if(!isNaN(i)&&t.allowDPSaveDataByNC({qn:i})){var o={url:e.url,range:e.range,data:e.data,totalSize:e.totalSize,token:t.getToken()};t.saveData(o)}}}}},e.prototype.getBPNC=function(){var e,t="bpNC";return(null===(e=this.config)||void 0===e?void 0:e.hid)&&(t+="_"+this.config.hid),window[t]},e.prototype.covertFragmentInfoObject=function(e){var t={};try{t={type:e.type,mediaType:e.mediaType,startTime:e.startTime,url:e.url,index:e.index,id:e.representationId,qn:this.getQualityNumberFromQualityIndex(e.quality,e.mediaType),range:e.range,duration:e.duration,isError:!1},e.startLoadFragmentTime?t.startDownloadTime=new Date(e.startLoadFragmentTime).getTime():t.startDownloadTime=(new Date).getTime(),e.loadInfo&&(t.loaderType=e.loadInfo.rType)}catch(e){}return t},e.prototype.onDashJSLog=function(e){this.state.logHistory||(this.state.logHistory=[]),this.state.logHistory.length>=2e4&&this.state.logHistory.shift(),e&&this.state.logHistory.push(e.message)},e.prototype.onPredictSeek=function(e){this.fire(p.EVENTS.PREDICT_SEEK,e)},e.prototype.onJumpMediaGap=function(e){this.fire(p.EVENTS.JUMP_MEDIA_GAP,e)},e.prototype.onDashCDNLoadInfo=function(e){var t,r,n,i,o,a,s,u,c;if(null==e?void 0:e.loadInfo){var l=e.loadInfo,d=null==e?void 0:e.mediaInfo.id;for(var f in d&&!this.state.cdnInfoDetail[d]&&(this.state.cdnInfoDetail[d]={cdn:0,p2p:0,nc:0,ncBr:0,pdn:0,business:0,mcdn:0,bcache:0,vcache:0,ncFail:0,ncGotFail:0}),this.state.cdnInfo)l[f]&&(this.state.cdnInfo[f]+=l[f],d&&(this.state.cdnInfoDetail[d][f]+=l[f]));if("XHR"===l.rType&&l.url&&l.cdn){var h=l.url;h.indexOf("upos-")>-1?(this.state.cdnInfo.business+=l.cdn,d&&(this.state.cdnInfoDetail[d].business+=l.cdn)):h.indexOf("os=mcdn")>-1?(this.state.cdnInfo.mcdn+=l.cdn,d&&(this.state.cdnInfoDetail[d].mcdn+=l.cdn)):h.indexOf("os=bcache")>-1?(this.state.cdnInfo.bcache+=l.cdn,d&&(this.state.cdnInfoDetail[d].bcache+=l.cdn)):h.indexOf("os=vcache")>-1&&(this.state.cdnInfo.vcache+=l.cdn,d&&(this.state.cdnInfoDetail[d].vcache+=l.cdn))}this.fire(p.EVENTS.CDN_LOAD_INFO,l)}if((null===(t=null==e?void 0:e.NCInfo)||void 0===t?void 0:t.responseData)&&this.state.NCInfo){var y=null==e?void 0:e.NCInfo,m=(d=y.qn,this.state.NCInfo[d]||{total:0,response:0,expect:0});if(9999===y.code){if(m.total++,y.range){var g=y.range.split("-"),v=parseInt(g[0],10),_=parseInt(g[1],10);_&&(m.expect+=_-v+1||0)}return void(this.state.NCInfo[d]=m)}if(m[y.code]||(m[y.code]={}),4999===y.code)return m[y.code].count=(null===(r=m[y.code])||void 0===r?void 0:r.count)+1||1,(null===(n=this.video)||void 0===n?void 0:n.seeking)&&(m[y.code].seeking=m[y.code].seeking+1||1),void(this.state.NCInfo[d]=m);var E=y.responseData,b=E.gotDataByte,S=E.getDataTime,T=E.usePeerSids,w=E.retryCount,A=E.originRange,R=E.gotDataByteFromBr;T=T||[],b=b||0,S=S||0,R=R||0,w=w||0,A&&A.hasOwnProperty("start")&&A.hasOwnProperty("end")||(A={start:0,end:0});var P=Math.abs(A.end-A.start)+1,D=(null==T?void 0:T.length)||0;if(m.response++,
m[y.code].count=(null===(i=m[y.code])||void 0===i?void 0:i.count)+1||1,m[y.code].bytes=(null===(o=m[y.code])||void 0===o?void 0:o.bytes)+b||b,m[y.code].time=(null===(a=m[y.code])||void 0===a?void 0:a.time)+S||S,m[y.code].peers=(null===(s=m[y.code])||void 0===s?void 0:s.peers)+D||D,m[y.code].retry=(null===(u=m[y.code])||void 0===u?void 0:u.retry)+w||w,m[y.code].expect=(null===(c=m[y.code])||void 0===c?void 0:c.expect)+P||P,4003!==y.code&&40003!==y.code||0!==b||(m[y.code].abnormal=m[y.code].abnormal+1||1),2e3===y.code||24e3===y.code){var I="peers_"+D;m[y.code][I]=m[y.code][I]+1||1}this.state.NCInfo[d]=m}},e.prototype.changePlaybackState=function(e){return this.state.playbackState=e,this},e.prototype.saveNetworkWarningInfo=function(e){this.state.networkWarningHistory&&(this.state.networkWarningHistory||(this.state.networkWarningHistory=[]),this.state.networkWarningHistory.length>=100&&this.state.networkWarningHistory.shift(),this.state.networkWarningHistory.push(e))},e.prototype.detectDefaultQualityChangeAbnormal=function(){var e=this,t=this.state,r=t.defaultVideoQuality,n=t.defaultAudioQuality,i=t.currentQualityIndex,o=i.video,a=i.audio;return[{type:p.STRING.VIDEO,defaultQuality:r,currentIndex:o},{type:p.STRING.AUDIO,defaultQuality:n,currentIndex:a}].forEach((function(t){var r=e.getQualityNumberFromQualityIndex(t.currentIndex,t.type),n=t.defaultQuality,i=t.currentIndex;n>=0&&i>=0&&-1===[i,r].indexOf(n)&&e.fire(p.EVENTS.QUALITY_CHANGE_ABNORMAL,{type:p.EVENTS.QUALITY_CHANGE_ABNORMAL,mediaType:t.type,defaultQuality:n,currentIndex:i,qualityNumber:r})})),this},e.prototype.isUsingWasmPlayer=function(){return window.__ENABLE_WASM_PLAYER__&&this.video instanceof window.BwpElement},e.prototype.filterHEVCSpecialVideoUrl=function(e){var t=this;if("string"!=typeof e&&(null==e?void 0:e.video)){var r=this.state.defaultVideoQuality,n=[p.VIDEO_QN.QN_8K,p.VIDEO_QN.QN_DOLBY_VISION,p.VIDEO_QN.QN_HDR10],i=p.VIDEO_CODEC_ID.HEVC;((null==e?void 0:e.video)||[]).filter((function(e){return e.codecid===i})).length<=0||n.includes(r)||(e.video=e.video.filter((function(e){if(!n.includes(e.id))return!0;var r=t.state.filterVideoInfo,i=p.FILTER_VIDEO_URL_REASON.FILTER_SPECIAL_VIDEO;return void 0===r[i]&&(r[i]=[]),r[i].push(JSON.parse(JSON.stringify(e))),t.onDashJSLog({type:"filterSpecialVideo",message:"filter hevc special video urls"}),!1})))}},e.prototype.filterPdnUrl=function(t){if("string"!=typeof t&&t){var r=t.video,n=t.audio,i=function(e){return"string"==typeof e&&(e.includes("traceid")||e.includes(":8082"))},o=this.shouldFilterPdnUrl(),a=JSON.parse(e.getFawkesConfigValue(p.STRING.DASH_CONFIG,"pdn_disable_qn_list")),s=JSON.parse(e.getFawkesConfigValue(p.STRING.DASH_CONFIG,"pdn_disable_codecid_list")),u=!1,c=function(e){e&&e.length&&e.forEach((function(e){(i(e.baseUrl)||i(e.base_url))&&(o||a.includes(e.id)&&f.default.isInSpareTime()||s.includes(e.codecid)&&f.default.isInSpareTime())&&(u=!0,e.baseUrl&&e.backupUrl&&e.backupUrl.length&&(e.baseUrl=e.backupUrl.shift()),e.base_url&&e.backup_url&&e.backup_url.length&&(e.base_url=e.backup_url.shift()))}))};c(r),c(n),u&&this.onDashJSLog({type:"filterPdn",message:"["+Math.round(performance.now())+"] filter pdn, "+o+", qn list: "+a+", codec list: "+s})}},e.prototype.filterManifest=function(e){var t=e.manifest;e.log=this.onDashJSLog.bind(this),void 0===e.enableAV1&&(e.enableAV1=this.state.enableAV1),void 0===e.enableHEVC&&(e.enableHEVC=this.state.enableHEVC),t&&!t.video&&(this.onDashJSLog({type:"audio-only",message:"playing in audio-only"}),"string"!=typeof t&&(t.video=[]));var r=p.VIDEO_CODEC_ID.AVC;t&&t.video&&t.video instanceof Array&&(this.externalMediaLoader||(this.filterHEVCSpecialVideoUrl(e.manifest),r=g.applyCodecStrategy(e),t.video=t.video.filter((function(e){return e.codecid===r}))),t=this.adjustManifestHack(t));try{this.filterPdnUrl(t)}catch(e){}return{codecId:r,manifest:t}},e.prototype.shouldFilterPdnUrl=function(){try{var t=e.getFawkesConfigValue(p.STRING.DASH_CONFIG,"pdn_mid_black_list"),r=t&&JSON.parse(t)||[],n=f.default.getCookie("DedeUserID"),i=""===n?0:Number(n);if(Math.random()>Number(e.getFawkesConfigValue(p.STRING.DASH_CONFIG,p.STRING.PDN_ENABLE)))return!0;if(r.includes(i))return!0}catch(e){return!1}return!1},e.prototype.adjustManifestHack=function(e){var t;if((null===(t=null==e?void 0:e.video)||void 0===t?void 0:t.length)>1){var r=e.video,n=Math.max.apply(Math,r.map((function(e){return e.bandwidth}))),i=Math.min.apply(Math,r.map((function(e){return e.bandwidth})));if(Math.abs(n-i)<1e4){this.state&&this.state.logHistory.push("Adjust manifest hack, max: "+n+", min: "+i+", delta: "+Math.abs(n-i));for(var o=r.length-1;o>0;o--)r[o-1].bandwidth=Math.max(r[o-1].bandwidth,r[o].bandwidth+1e4)}}return e},e.prototype.processSpecialAudioItem=function(e,t){var r;void 0===t&&(t=30280),e.audio;var n=e.flac,i=e.dolby;if(n&&n.audio&&d.isFLACTypeSupported()&&t===p.FLAC_QN)return n.audio.codecs=n.audio.codecs.toLocaleLowerCase(),void(e.audio=[n.audio]);i&&(null===(r=null==i?void 0:i.audio)||void 0===r?void 0:r.length)&&d.isEC3DolbyATMOSTypeSupported()&&[p.DOLBY_AUDIO_QN.AMTOS,p.DOLBY_AUDIO_QN.AUDIO].includes(t)&&(e.audio=s(i.audio))},e.prototype.checkAudioCodecCanUseByType=function(e){var t=this.state.mpd&&this.state.mpd[p.STRING.AUDIO]?this.state.mpd[p.STRING.AUDIO]:this.state.manifest&&this.state.manifest.audio?this.state.manifest.audio:void 0;if(!t||!t.length)return!1;switch(e){case p.SPECIAL_AUDIO_TYPE.DOLBY:if(d.isEC3DolbyATMOSTypeSupported())return-1!==t.findIndex((function(e){return e.id===p.DOLBY_AUDIO_QN.AUDIO||e.id===p.DOLBY_AUDIO_QN.AMTOS}));break;case p.SPECIAL_AUDIO_TYPE.FLAC:if(d.isFLACTypeSupported())return-1!==t.findIndex((function(e){return e.id===p.FLAC_QN}))}return!1},e.prototype.qualityNumberDowngrading=function(e,t){var r=f.default.getDecodeErrorMediaQualityNumberListForType(e,p.STRING.BILIBILI_DECODE_ERROR_OBJ),n=Object.keys(this.state.qualityNumberMap[e]).map(Number).reverse(),i=0;if(r.length>0){for(;r.includes(t)&&i(s.shouldUseHardwareDecodingAV1()?f:h)&&(u=!1);var y=p();switch(y){case i.USER_CODEC_PREFER_TYPE.AV1:u=!0;break;case i.USER_CODEC_PREFER_TYPE.DISABLE:case i.USER_CODEC_PREFER_TYPE.HEVC:u=!1}var m=s.getLocalDecodeErrorInfo("AV1"),g=(new Date).getTime();m&&(m.reactivateTime||0)>g&&(u=!1),l.includes(d)&&(u=!0),s.isBrowserSupportAV1(r)||(u=!1);var v=!!+a.default.getSessionStorage("enableAV1Error");v&&(u=!1),n&&n({type:"applyAV1Strategy",message:"[1] Apply AV1 strategy, enable: "+u+", preferType: "+y+", hardwareLimit: "+f+", softwareLimit: "+h+", prevEnableAV1Error: "+v})}return u}(m,n,I,v,_))return b;var O=!!window.__ENABLE_WASM_PLAYER__;return(1===A||O)&&P&&function(e,t,r,n){var c=e;if(c){var l=navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase(),y=l.indexOf("edge/")>-1,m=t&&t.defaultVideoQuality||n,g=d.SOFTWARE,v=d.HARDWARE,_=d.WASM,E=o.getCurrentBrowserInfo(),b=E.type,S=E.version,T=b===o.BROWSER_TYPE.Chrome&&S>108&&s.getCPULogicCount()>=8?v:g,w=m>T&&!y&&l.indexOf("chrome/")>0,A=m>v,R=b===o.BROWSER_TYPE.ChromiumEdge,P=!!+a.default.getSessionStorage("enableHEVCError"),D=parseInt(a.default.getLocalStorage("bilibili_player_codec_prefer_strategy"),10);window.__ENABLE_WASM_PLAYER__?m>_&&(c=!1):(w||A)&&(c=!1);var I=p();i.USER_CODEC_PREFER_TYPE.HEVC===I?c=!0:i.USER_CODEC_PREFER_TYPE.DISABLE===I||i.USER_CODEC_PREFER_TYPE.AV1===I?(c=!1,h().then((function(){a.default.setLocalStorage(u,""+i.USER_CODEC_PREFER_TYPE.RECOMMEND)})).catch((function(){}))):(h().catch((function(){})),i.USER_CODEC_PREFER_TYPE.DISABLE===D&&(c=!1));var O=s.getLocalDecodeErrorInfo("HEVC"),C=(new Date).getTime();O&&(O.reactivateTime||0)>C&&(c=!1),f.includes(m)&&(c=!0),(!window.__ENABLE_WASM_PLAYER__&&R&&"Mac OS"!==s.getOS()||P)&&(c=!1),r&&r({type:"applyHEVCStrategy",message:"[1] Apply HEVC strategy, enable: "+c+", preferType: "+I+", hardwareLimit: "+v+", softwareLimit: "+T+", wasm: "+_+", prevEnableHEVCError: "+P+", strategyType: "+D})}return c}(g,n,v,_)?E:S},t.getUserCodecPreferType=p},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0){var t=this.video.buffered.end(this.video.buffered.length-1),r=this.video.currentTime,n=Math.floor(1e3*(t-r))/1e3;this.swichingInfo.bufferLen=n}},e.prototype.getInfo=function(e){var r={type:-1};if(!e)return r;try{var i=this.video,o=i.currentTime,a=i.duration,s=i.readyState,u=i.buffered,c=u&&u.length,l=i.seeking,d=i.playbackRate,f=t.BUFFERING.TYPE.UNKNOWN,p=e.playbackState||t.BUFFERING.PLAYBACK.PLAYING;if(!l||p!==t.BUFFERING.PLAYBACK.PLAYING&&p!==t.BUFFERING.PLAYBACK.SWITCHING_QUALITY||(p=t.BUFFERING.PLAYBACK.SEEKING),r={type:f,isSeeking:l,cTime:o,duration:a,rState:s,nRanges:c,vLength:e.videoBufferLength,aLength:e.audioBufferLength,activity:e.networkActivity,vSpeed:Math.round(e.videoSpeed),aSpeed:Math.round(e.audioSpeed),playbackRate:d,vQn:e.videoCurrentQn,aQn:e.audioCurrentQn,retryTimes:e.retryTimes,seekSpace:e.seekSpace},p===t.BUFFERING.PLAYBACK.SEEKING)f=0===c?t.BUFFERING.TYPE.SEEKING_OUTSIDE_BUFFERED:t.BUFFERING.TYPE.SEEKING_INSIDE_BUFFERED;else{var h=this.checkGapInfo(),y=h.nativeBufferLength;if(r.nLength=y,r.cRange=h.start+"-"+h.end,h.hasGap)f=h.type,r.gap=h.gapStart+"-"+h.gapEnd,r.gapLength=h.gapLength;else if(y<1){var m=this.checkLackOfBufferInfo(e);f=m.type,r.vCode=m.videoErrorCode,r.aCode=m.audioErrorCode}else f=s>=3?t.BUFFERING.TYPE.PERFORMANCE:t.BUFFERING.TYPE.PERFORMANCE_UNKNOWN}var g=this.checkNativeErrorInfo();g.type&&(f=g.type,r.nCode=g.code);var v=e.fragmentLoadingInfo;if(v&&v.video){var _=v.video;r.vFragment=_.id+"-"+_.index,e.latestPlayurlErrorHTTPCode&&(r.hCode=e.latestPlayurlErrorHTTPCode)}v&&v.audio&&(_=v.audio,r.aFragment=_.id+"-"+_.index,e.latestPlayurlErrorHTTPCode&&(r.hCode=e.latestPlayurlErrorHTTPCode)),r.type=""+p+(f||"00")}catch(e){throw new Error(e.message)}return this.swichingInfo&&(r=n(n({},r),this.swichingInfo)),this.downloadInfo&&(r=n(n({},r),this.downloadInfo)),r},e.prototype.checkGapInfo=function(){var e=this.video,r=e.currentTime,n=e.buffered,i=n&&n.length,o=0,a=!1,s=0,u=0,c={start:0,end:0},l=0,d=t.BUFFERING.TYPE.UNKNOWN;if(i&&i>1)for(var f=0;f=r&&(o=Math.floor(1e3*(h-r))/1e3,c={start:p,end:h},d===t.BUFFERING.TYPE.GAP_BEFORE_CURRENT?u=p:s=h),p>r&&p-r<=1&&d!==t.BUFFERING.TYPE.GAP_BEFORE_CURRENT&&(a=!0,d=t.BUFFERING.TYPE.GAP_AFTER_CURRENT,u=u?Math.min(u,p):p,s=c.end),r-h<3&&r-h>=0&&(a=!0,d=t.BUFFERING.TYPE.GAP_BEFORE_CURRENT,s=h,u=c.start)}else 1===i&&(h=n.end(0),c={start:n.start(0),end:h},o=Math.floor(1e3*(h-r))/1e3);return a&&(l=Math.round(1e3*(u-s))/1e3),{type:d,start:c.start,end:c.end,nativeBufferLength:o,hasGap:a,gapStart:s,gapEnd:u,gapLength:l}},e.prototype.checkLackOfBufferInfo=function(e){var r=t.BUFFERING.TYPE.UNKNOWN,n=this.video,i=n.currentTime,o=n.buffered,a=n.duration,s=n.readyState,u=0,c=0;if(o&&o.length)if(a&&a-i<1)r=t.BUFFERING.TYPE.INTERNAL_ENDING;else{var l=this.checkNetworkInfo(e);r=l.type,u=l.videoErrorCode,c=l.audioErrorCode}else r=i<=e.startOffsetTime&&s<=1?t.BUFFERING.TYPE.INTERNAL_STARTING:(e.networkActivity.length&&e.networkActivity.reduce((function(e,t){return e+t})))<100?t.BUFFERING.TYPE.NETWORK_POOR:e.videoBufferLength?e.audioBufferLength?t.BUFFERING.TYPE.INTERNAL_UNNORMAL_RANGES:t.BUFFERING.TYPE.INTERNAL_AUDIO_RANGES:t.BUFFERING.TYPE.INTERNAL_VIDEO_RANGES;return{type:r,videoErrorCode:u,audioErrorCode:c}},e.prototype.checkNetworkInfo=function(e){var r=this,n=t.BUFFERING.TYPE.UNKNOWN,o=this.video.currentTime,a=e.videoBufferLength||0,s=e.audioBufferLength||0,u=e.networkWarningHistory,c=this.getCurrentNetworkWarningInfo({mediaType:i.STRING.VIDEO,currentQn:e.videoCurrentQn,networkWarningHistory:u,warningTime:o+a,bufferLength:a},1),l=this.getCurrentNetworkWarningInfo({mediaType:i.STRING.AUDIO,currentQn:e.audioCurrentQn,networkWarningHistory:u,warningTime:o+s,bufferLength:s},1),d=c.code,f=l.code,p=this.getBufferingTypeByPoorNetwork(d),h=this.getBufferingTypeByPoorNetwork(f);if(p||h)n=p||"00",h&&(n=""+n+h);else if(this.video.playbackRate>1)n=t.BUFFERING.TYPE.NETWORK_POOR_UNDER_PLAYBACKRATE;else{var y=e.fragmentLoadingInfo,m=function(e){if(!e)return!1;var t=e.startDownloadTime,n=e.loaderType,i=e.qn,o=e.index,a=((new Date).getTime()-t)/1e3;return r.downloadInfo||(r.downloadInfo={}),r.downloadInfo[e.mediaType]={downloadTime:a,loaderType:n,qn:i,index:o},a>5};if(y){var g=y.video,v=y.audio,_=m(g),E=m(v)
;n=_||E?t.BUFFERING.TYPE.NETWORK_DOWNLOAD_TOO_LONG:t.BUFFERING.TYPE.NETWORK}else n=t.BUFFERING.TYPE.NETWORK}return{type:n,videoErrorCode:d,audioErrorCode:f,videoBufferLength:a,audioBufferLength:s}},e.prototype.checkNativeErrorInfo=function(){var e=this.video.error,r=e&&e.code||0,n=t.BUFFERING.TYPE.UNKNOWN;if(e&&r)switch(r){case 1:n=t.BUFFERING.TYPE.MEDIA_ERR_ABORTED;break;case 2:n=t.BUFFERING.TYPE.MEDIA_ERR_NETWORK;break;case 3:n=t.BUFFERING.TYPE.MEDIA_ERR_DECODE;break;case 4:n=t.BUFFERING.TYPE.MEDIA_ERR_SRC_NOT_SUPPORTED;break;default:n=t.BUFFERING.TYPE.MEDIA}return{type:n,code:r}},e.prototype.getCurrentNetworkWarningInfo=function(e,t){if(void 0===t&&(t=1),!e)return{code:0};var r=e.mediaType,n={code:0,type:"",mediaType:e.mediaType},i=e.networkWarningHistory,o=e.warningTime,a=e.bufferLength,s=e.currentQn;if(i.length&&a=o&&e.id===s.toString()}));u.length&&(n=u[u.length-1])}catch(e){throw new Error("getCurrentNetworkWarningInfo error, "+JSON.stringify(e))}}return n},e.prototype.getBufferingTypeByPoorNetwork=function(e){var r=t.BUFFERING.TYPE.UNKNOWN;if(e)switch(e){case i.ERROR.CONNECT_FRAGMENT_ERROR_TIMEOUT:r=t.BUFFERING.TYPE.NETWORK_CONNECT_TIMEOUT;break;case i.ERROR.DOWNLOAD_FRAGMENT_ERROR_TIMEOUT:r=t.BUFFERING.TYPE.NETWORK_DOWNLOAD_TIMEOUT;break;case i.ERROR.DOWNLOAD_FRAGMENT_ERROR:r=t.BUFFERING.TYPE.NETWORK_DOWNLOAD_ERROR}return r},e}();t.default=o},function(e,t,r){"use strict";var n=Array.isArray,i=Object.keys,o=Object.prototype.hasOwnProperty;e.exports=function e(t,r){if(t===r)return!0;var a,s,u,c=n(t),l=n(r);if(c&&l){if((s=t.length)!=r.length)return!1;for(a=0;a=r&&console.log(this.time+" ["+e+"] "+t)}},d=function(e){for(var t=[],r=0;ri&&(l.log("ERROR","Too large cursor position "+this.pos),this.pos=i)},moveCursor:function(e){var t=this.pos+e;if(e>1)for(var r=this.pos+1;r=144&&this.backSpace();var t=r(e);this.pos>=i?l.log("ERROR","Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))},clearFromPos:function(e){var t;for(t=e;t0&&(r=e?"["+t.join(" | ")+"]":t.join("\n")),r},getTextAndFormat:function(){return this.rows}};var m=function(e,t){this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new y,this.nonDisplayedMemory=new y,this.lastOutputScreen=new y,this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};m.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(e){this.outputFilter=e},setPAC:function(e){this.writeScreen.setPAC(e)},setBkgData:function(e){this.writeScreen.setBkgData(e)},setMode:function(e){e!==this.mode&&(this.mode=e,l.log("INFO","MODE="+e),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},insertChars:function(e){for(var t=0;t=46,t.italics)t.foreground="white";else{var r=Math.floor(e/2)-16;t.foreground=["white","green","blue","cyan","red","yellow","magenta"][r]}l.log("INFO","MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},outputDataUpdate:function(){var e=l.time;null!==e&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(e,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}};var g=function(e,t,r){this.field=e||1,this.outputs=[t,r],this.channels=[new m(1,t),new m(2,r)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};g.prototype={getHandler:function(e){return this.channels[e].getHandler()},setHandler:function(e,t){this.channels[e].setHandler(t)},addData:function(e,t){var r,n,i,o=!1;this.lastTime=e,l.setTime(e);for(var a=0;a=16&&n<=31&&n===this.lastCmdA&&i===this.lastCmdB?(this.lastCmdA=null,this.lastCmdB=null,l.log("DEBUG","Repeated command ("+d([n,i])+") is dropped")):0!==n||0!==i?(l.log("DATA","["+d([t[a],t[a+1]])+"] -> ("+d([n,i])+")"),(r=this.parseCmd(n,i))||(r=this.parseMidrow(n,i)),r||(r=this.parsePAC(n,i)),r||(r=this.parseBackgroundAttributes(n,i)),r||(o=this.parseChars(n,i))&&(this.currChNr&&this.currChNr>=0?this.channels[this.currChNr-1].insertChars(o):l.log("WARNING","No channel found yet. TEXT-MODE?")),r?this.dataCounters.cmd+=2:o?this.dataCounters.char+=2:(this.dataCounters.other+=2,l.log("WARNING","Couldn't parse cleaned data "+d([n,i])+" orig: "+d([t[a],t[a+1]])))):this.dataCounters.padding+=2},parseCmd:function(e,t){var r;if(!((20===e||21===e||28===e||29===e)&&32<=t&&t<=47||(23===e||31===e)&&33<=t&&t<=35))return!1;r=20===e||21===e||23===e?1:2;var n=this.channels[r-1];return 20===e||21===e||28===e||29===e?32===t?n.cc_RCL():33===t?n.cc_BS():34===t?n.cc_AOF():35===t?n.cc_AON():36===t?n.cc_DER():37===t?n.cc_RU(2):38===t?n.cc_RU(3):39===t?n.cc_RU(4):40===t?n.cc_FON():41===t?n.cc_RDC():42===t?n.cc_TR():43===t?n.cc_RTD():44===t?n.cc_EDM():45===t?n.cc_CR():46===t?n.cc_ENM():47===t&&n.cc_EOC():n.cc_TO(t-32),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=r,!0},parseMidrow:function(e,t){var r=null;if((17===e||25===e)&&32<=t&&t<=47){if((r=17===e?1:2)!==this.currChNr)return l.log("ERROR","Mismatch channel in midrow parsing"),!1;var n=this.channels[r-1];return n.insertChars([32]),n.cc_MIDROW(t),l.log("DEBUG","MIDROW ("+d([e,t])+")"),this.lastCmdA=e,this.lastCmdB=t,!0}return!1},parsePAC:function(e,t){var r,n;if(!((17<=e&&e<=23||25<=e&&e<=31)&&64<=t&&t<=127||(16===e||24===e)&&64<=t&&t<=95))return!1;r=e<=23?1:2,n=64<=t&&t<=95?1===r?o[e]:s[e]:1===r?a[e]:u[e];var i=this.interpretPAC(n,t);return this.channels[r-1].setPAC(i),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=r,!0},interpretPAC:function(e,t){var r,n={color:null,italics:!1,indent:null,underline:!1,row:e};return r=t>95?t-96:t-64,n.underline=1==(1&r),r<=13?n.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(n.italics=!0,n.color="white"):n.indent=4*Math.floor((r-16)/2),n},parseChars:function(e,t){var n,i=null,o=null,a=null;(e>=25?(i=2,a=e-8):(i=1,a=e),17<=a&&a<=19)?(n=17===a?t+80:18===a?t+112:t+144,l.log("INFO","Special char '"+r(n)+"' in channel "+i),o=[n],this.lastCmdA=e,this.lastCmdB=t):32<=e&&e<=127&&(o=0===t?[e]:[e,t],this.lastCmdA=null,this.lastCmdB=null);if(o){var s=d(o);l.log("DEBUG","Char codes = "+s.join(","))}return o},parseBackgroundAttributes:function(e,t){var r,n,i;return((16===e||24===e)&&32<=t&&t<=47||(23===e||31===e)&&45<=t&&t<=47)&&(r={},16===e||24===e?(n=Math.floor((t-32)/2),r.background=c[n],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0)),i=e<24?1:2,this.channels[i-1].setBkgData(r),this.lastCmdA=e,this.lastCmdB=t,!0)},reset:function(){for(var e=0;e=this.state.maxCacheLength&&this.state.networkActivityLoadedList.splice(0,1),r&&this.state.networkActivityLoadedList.push({time:n,loaded:Math.max(r,0)})},e.prototype.getNetworkActivity=function(){return this.state.networkActivityHistory.length?this.state.networkActivityHistory[this.state.networkActivityHistory.length-1]:0},e.prototype.getNetworkActivityHistory=function(e){return void 0===e&&(e=0),e?this.state.networkActivityHistory.slice(this.state.networkActivityHistory.length-e):this.state.networkActivityHistory},e.prototype.destroy=function(){clearTimeout(this.state&&this.state.networkActivityTimer),this.state.networkActivityLoadedList.length=0,this.state.networkActivityHistory.length=0,this.state=null},e.prototype.initalize=function(){this.runNewWorkActivityTimer()},e.prototype.runNewWorkActivityTimer=function(){var e=this;this.runNetworkActivity(),clearTimeout(this.state.networkActivityTimer),this.state.networkActivityTimer=window.setTimeout((function(){e.runNewWorkActivityTimer()}),this.state.runningInterval)},e.prototype.runNetworkActivity=function(){var e=this.state.runningInterval,t=Math.floor(performance.now()),r=this.state.networkActivityLatestTraceTime,n=this.state.networkActivityLoadedList.filter((function(n){return t-n.timer}));this.state.networkActivityLatestTraceTime=t;var i=0;n&&n.length&&n.forEach((function(e){return i+=e.loaded})),this.state.networkActivityHistory.length>=this.state.maxCacheLength&&this.state.networkActivityHistory.splice(0,1),this.state.networkActivityHistory.push(Math.max(i,0))},e}();t.default=n},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=r(13),a=n(r(4)),s=function(){function e(){this.bufferingHistory=[],this.state={enableHEVC:!1}}return e.prototype.destroy=function(){this.state=null,this.bufferingHistory.length=0},e.prototype.setHEVCEnableFlag=function(e){return void 0===e&&(e=!1),this.state.enableHEVC=e,this},e.prototype.push=function(e){this.bufferingHistory.length>=this.MAX_HISTORY_LENGTH&&this.bufferingHistory.shift(),e.timestamp=this.getNow(),this.bufferingHistory.push(e),this.optimize()},e.prototype.setOnOptimizingCallback=function(e){this.state.onOptimizingCallback=e},e.prototype.onOptimzing=function(e,t){"function"==typeof this.state.onOptimizingCallback&&this.state.onOptimizingCallback(e,t)},e.prototype.optimize=function(){var e=this.getNow(),t=this.bufferingHistory.filter((function(t){return e-t.timestamp<=2e4}));if(this.state.enableHEVC){var r=""+o.BUFFERING.PLAYBACK.PLAYING+o.BUFFERING.TYPE.PERFORMANCE,n=t.filter((function(e){return r===e.type}));n&&n.length>=10&&(this.state.enableHEVC=!1,this.disableHEVCFlag())}},e.prototype.disableHEVCFlag=function(){1!==parseInt(a.default.getLocalStorage("bilibili_player_codec_prefer_type"),10)&&(a.default.setLocalStorage("bilibili_player_codec_prefer_strategy","2"),this.onOptimzing(i.EVENTS.BUFFERING_OPTIMIZATION,{type:"hevcPerf"}))},e.prototype.getNow=function(){var e;return(null===(e=window.performance)||void 0===e?void 0:e.now())||Date.now()},e}();t.default=s},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=this.state.maxCacheLength&&this.state.networkActivityLoadedList.splice(0,1),r&&this.state.networkActivityLoadedList.push({time:n,loaded:Math.max(r,0)})},e.prototype.getNetworkActivity=function(){return this.state.networkActivityHistory.length?this.state.networkActivityHistory[this.state.networkActivityHistory.length-1]:0},e.prototype.getNetworkActivityHistory=function(e){return void 0===e&&(e=0),e?this.state.networkActivityHistory.slice(this.state.networkActivityHistory.length-e):this.state.networkActivityHistory},e.prototype.destroy=function(){clearTimeout(this.state&&this.state.networkActivityTimer),this.state.networkActivityLoadedList.length=0,this.state.networkActivityHistory.length=0,this.state=null},e.prototype.initalize=function(){this.runNewWorkActivityTimer()},e.prototype.runNewWorkActivityTimer=function(){var e=this;this.runNetworkActivity(),clearTimeout(this.state.networkActivityTimer),this.state.networkActivityTimer=window.setTimeout((function(){e.runNewWorkActivityTimer()}),this.state.runningInterval)},e.prototype.runNetworkActivity=function(){var e=this.state.runningInterval,t=Math.floor(performance.now()),r=this.state.networkActivityLatestTraceTime,n=this.state.networkActivityLoadedList.filter((function(n){return t-n.timer}));this.state.networkActivityLatestTraceTime=t;var i=0;n&&n.length&&n.forEach((function(e){return i+=e.loaded})),this.state.networkActivityHistory.length>=this.state.maxCacheLength&&this.state.networkActivityHistory.splice(0,1),this.state.networkActivityHistory.push(Math.max(i,0))},e}();t.default=n},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=r(13),a=n(r(4)),s=function(){function e(){this.bufferingHistory=[],this.state={enableHEVC:!1}}return e.prototype.destroy=function(){this.state=null,this.bufferingHistory.length=0},e.prototype.setHEVCEnableFlag=function(e){return void 0===e&&(e=!1),this.state.enableHEVC=e,this},e.prototype.push=function(e){this.bufferingHistory.length>=this.MAX_HISTORY_LENGTH&&this.bufferingHistory.shift(),e.timestamp=this.getNow(),this.bufferingHistory.push(e),this.optimize()},e.prototype.setOnOptimizingCallback=function(e){this.state.onOptimizingCallback=e},e.prototype.onOptimzing=function(e,t){"function"==typeof this.state.onOptimizingCallback&&this.state.onOptimizingCallback(e,t)},e.prototype.optimize=function(){var e=this.getNow(),t=this.bufferingHistory.filter((function(t){return e-t.timestamp<=2e4}));if(this.state.enableHEVC){var r=""+o.BUFFERING.PLAYBACK.PLAYING+o.BUFFERING.TYPE.PERFORMANCE,n=t.filter((function(e){return r===e.type}));n&&n.length>=10&&(this.state.enableHEVC=!1,this.disableHEVCFlag())}},e.prototype.disableHEVCFlag=function(){1!==parseInt(a.default.getLocalStorage("bilibili_player_codec_prefer_type"),10)&&(a.default.setLocalStorage("bilibili_player_codec_prefer_strategy","2"),this.onOptimzing(i.EVENTS.BUFFERING_OPTIMIZATION,{type:"hevcPerf"}))},e.prototype.getNow=function(){var e;return(null===(e=window.performance)||void 0===e?void 0:e.now())||Date.now()},e}();t.default=s},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0){var s=1e3/a;e.lows.length>=43200&&e.lows.shift(),e.lows.push(s)}t=n,o>=1e3&&(s=e.frameCount/o*1e3,e.frameCount=1,e.lastFPSTime=i,e.fpsArr.length>=7200&&e.fpsArr.shift(),e.fpsArr.push(Math.floor(s)||1)),e.rafId=requestAnimationFrame(r)}))},e.prototype.onChargingStateChange=function(){this.chargingState=+this.battery.charging},e.prototype.runBatteryStateDetect=function(){var e=this;"function"==typeof navigator.getBattery&&(this.onChargingStateChange=this.onChargingStateChange.bind(this),navigator.getBattery().then((function(t){e.battery=t,e.chargingState=+t.charging,t.addEventListener("chargingchange",e.onChargingStateChange)})))},e}();t.default=i},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=n(r(10)),o=r(2),a=function(){function e(e){this.player=e,this.ncGrayPercentage=Math.random(),this.p2pGrayPercentage=Math.random(),this.ncDisable=this.getDisableValue("nc_disable"),this.p2pDisable=this.getDisableValue("rp_disable")}return Object.defineProperty(e.prototype,"isUseNC",{get:function(){return this.ncGrayPercentage>=this.ncDisable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isUseP2P",{get:function(){return this.p2pGrayPercentage>=this.p2pDisable},enumerable:!1,configurable:!0}),e.prototype.getDisableValue=function(e){var t=0,r=i.default.getFawkesConfigValue(o.STRING.DASH_CONFIG,e);return""!==r&&(t=Number(r)),t},e.prototype.destroy=function(){this.player=null},e}();t.default=a},function(e,t,r){"use strict";r.r(t),r.d(t,"MediaPlayer",(function(){return n.a})),r.d(t,"Protection",(function(){return X}));var n=r(9),i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.findCencContentProtection=function(e){for(var t=null,r=0;r0&&(t+=4+16*r.getUint32(t)),t+=4,e.slice(t)},e.getPSSHForKeySystem=function(t,r){var n=e.parsePSSHList(r);return n.hasOwnProperty(t.uuid.toLowerCase())?n[t.uuid.toLowerCase()]:null},e.parseInitDataFromContentProtection=function(e,t){return"pssh"in e?t.decodeArray(e.pssh.__text).buffer:null},e.parsePSSHList=function(e){if(null===e)return[];for(var t=new DataView(e.buffer||e),r={},n=0;;){var i,o,a=void 0,s=n;if(n>=t.buffer.byteLength)break;if(i=n+t.getUint32(n),n+=4,1886614376===t.getUint32(n))if(n+=4,0===(o=t.getUint8(n))||1===o){n++,n+=3,a="";var u=void 0,c=void 0;for(u=0;u<4;u++)a+=1===(c=t.getUint8(n+u).toString(16)).length?"0"+c:c;for(n+=4,a+="-",u=0;u<2;u++)a+=1===(c=t.getUint8(n+u).toString(16)).length?"0"+c:c;for(n+=2,a+="-",u=0;u<2;u++)a+=1===(c=t.getUint8(n+u).toString(16)).length?"0"+c:c;for(n+=2,a+="-",u=0;u<2;u++)a+=1===(c=t.getUint8(n+u).toString(16)).length?"0"+c:c;for(n+=2,a+="-",u=0;u<6;u++)a+=1===(c=t.getUint8(n+u).toString(16)).length?"0"+c:c;n+=6,a=a.toLowerCase(),t.getUint32(n),n+=4,r[a]=t.buffer.slice(s,i),n=i}else n=i;else n=i}return r},e}(),o=function e(t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.contentType=t,this.robustness=r},a=function e(t,r,n,i,o){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.initDataTypes=["cenc"],t&&t.length&&(this.audioCapabilities=t),r&&r.length&&(this.videoCapabilities=r),this.distinctiveIdentifier=n,this.persistentState=i,this.sessionTypes=o},s="function"==typeof Symbol&&"symbol"==c(Symbol.iterator)?function(e){return c(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":c(e)};function u(e){var t,r=(e=e||{}).protectionKeyController,n=e.protectionModel,u=e.eventBus,c=e.events,l=e.log,d=e.BASE64,f=e.constants,p=e.ignoreEmeEncryptedEvent,h=void 0,y=void 0,m=void 0,g=void 0,v=void 0,_=void 0;function E(e,t){var o=i.getPSSHForKeySystem(_,e),a=T(_);if(o){for(var s=n.getAllInitData(),d=0;d0?t.audioRobustness:v,s=t&&t.videoRobustness&&t.videoRobustness.length>0?t.videoRobustness:v,u=A(e);return y.forEach((function(e){e.type===f.AUDIO?r.push(new o(e.codec,i)):e.type===f.VIDEO&&n.push(new o(e.codec,s))})),new a(r,n,"optional","temporary"===u?"optional":"required",[u])}function A(e){var t=T(e);return t&&t.sessionType?t.sessionType:g}function R(e,t){var i=this,o=[];e=e.sort((function(t,r){return(m&&m[t.ks.systemString]&&m[t.ks.systemString].priority>=0?m[t.ks.systemString].priority:e.length)-(m&&m[r.ks.systemString]&&m[r.ks.systemString].priority>=0?m[r.ks.systemString].priority:e.length)}));var a=void 0;if(_)for(a=0;a0&&n.setServerCertificate(d.decodeArray(s.serverCertificate).buffer)
;for(var l=0;l0&&R(t,!0)},createKeySession:E,loadKeySession:b,removeKeySession:function(e){n.removeKeySession(e)},closeKeySession:function(e){n.closeKeySession(e)},setServerCertificate:function(e){n.setServerCertificate(e)},setMediaElement:S,setSessionType:function(e){g=e},setRobustnessLevel:function(e){v=e},setProtectionData:function(e){m=e,r.setProtectionData(e)},getSupportedKeySystemsFromContentProtection:function(e){return r.getSupportedKeySystemsFromContentProtection(e)},getKeySystems:function(){return r?r.getKeySystems():[]},reset:function(){u.off(c.INTERNAL_KEY_MESSAGE,I,this),u.off(c.INTERNAL_KEY_STATUS_CHANGED,D,this),S(null),_=void 0,n&&(n.reset(),n=null),y=[]}},h=[],y=[],g="temporary",v="",t}u.__dashjs_factory_name="ProtectionController";var l=dashjs.FactoryMaker.getClassFactory(u),d=function e(t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.keyID=t,this.key=r},f=function(){function e(t,r){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),r&&"persistent"!==r&&"temporary"!==r)throw new Error("Invalid ClearKey key set type! Must be one of 'persistent' or 'temporary'");this.keyPairs=t,this.type=r}return e.prototype.toJWK=function(){var e=void 0,t=this.keyPairs.length,r={keys:[]};for(e=0;e%CUSTOMDATA%'.replace("%CUSTOMDATA%",e),i=[],o=0;ofigure {
- anchor-name: --bofqi-example;
-
- &:not(.mode-fullscreen-web) {
- inline-size: 980px;
- min-inline-size: 980px;
- block-size: calc(980px / 16 * 9 + 68px);
-
- @media screen and (min-width:1400px) {
-
- & {
- inline-size: 1160px;
- block-size: calc(1160px / 16 * 9 + 68px);
- }
- }
-
- @media screen and (min-width:2500px) {
-
- & {
- inline-size: 1920px;
- block-size: calc(1920px / 16 * 9 + 68px);
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/docs/index.html b/src/docs/index.html
deleted file mode 100644
index 1ae0d28..0000000
--- a/src/docs/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
- Bilibili 2019
-
-
-
-
-
-
-
-
欢迎使用Bilibili 2019的播放器组件
-
您可以点击播放器右上角的【三点】加载本地视频、弹幕、字幕等文件,来作为本地播放器使用
-
- - 视频文件目前只支持 mp4 容器,且只支持您的浏览器能支持的音视频编码格式
- - 弹幕文件支持 Bilibili 标准弹幕 xml 文件
- - 字幕文件支持标准 vtt 字幕文件(不支持内封字幕)
-
-
-
-
-
\ No newline at end of file
diff --git a/src/docs/index.ts b/src/docs/index.ts
deleted file mode 100644
index 6216ab1..0000000
--- a/src/docs/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { Player } from "../player";
-import '../utils/support';
-
-document.body.appendChild(new Player());
\ No newline at end of file
diff --git a/src/docs/tsconfig.json b/src/docs/tsconfig.json
deleted file mode 100644
index af8dc37..0000000
--- a/src/docs/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "../tsconfig-base.json",
- "include": [
- "**/*",
- "../interface",
- "../player"
- ],
- "references": [
- {
- "path": "../interface"
- },
- {
- "path": "../player"
- }
- ]
-}
\ No newline at end of file
diff --git a/src/flv.js/README.md b/src/flv.js/README.md
deleted file mode 100644
index 857754a..0000000
--- a/src/flv.js/README.md
+++ /dev/null
@@ -1 +0,0 @@
-flv.js 视频核心组件,提取自B站[原生js文件](https://s1.hdslb.com/bfs/static/player/main/core.3447259f.js),与[开源版本](https://github.com/bilibili/flv.js)有所不同
\ No newline at end of file
diff --git a/src/flv.js/config.js b/src/flv.js/config.js
deleted file mode 100644
index 853afef..0000000
--- a/src/flv.js/config.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export const defaultConfig = {
- enableWorker: false,
- enableStashBuffer: true,
- stashInitialSize: undefined,
-
- isLive: false,
-
- lazyLoad: true,
- lazyLoadMaxDuration: 3 * 60,
- lazyLoadRecoverDuration: 30,
- deferLoadAfterSourceOpen: true,
-
- // autoCleanupSourceBuffer: default as false, leave unspecified
- autoCleanupMaxBackwardDuration: 3 * 60,
- autoCleanupMinBackwardDuration: 2 * 60,
-
- statisticsInfoReportInterval: 600,
-
- fixAudioTimestampGap: true,
-
- accurateSeek: false,
- seekType: 'range', // [range, param, custom]
- seekParamStart: 'bstart',
- seekParamEnd: 'bend',
- rangeLoadZeroStart: false,
- customSeekHandler: undefined,
- reuseRedirectedURL: false,
- // referrerPolicy: leave as unspecified
-};
-
-export function createDefaultConfig() {
- return Object.assign({}, defaultConfig);
-}
diff --git a/src/flv.js/core/features.js b/src/flv.js/core/features.js
deleted file mode 100644
index 7a6c2be..0000000
--- a/src/flv.js/core/features.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import IOController from '../io/io-controller.js';
-import { createDefaultConfig } from '../config.js';
-
-class Features {
- static supportMSEH264Playback() {
- return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
- }
-
- static supportNetworkStreamIO() {
- let ioctl = new IOController({}, createDefaultConfig());
- let loaderType = ioctl.loaderType;
- ioctl.destroy();
- return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';
- }
-
- static getNetworkLoaderTypeName() {
- let ioctl = new IOController({}, createDefaultConfig());
- let loaderType = ioctl.loaderType;
- ioctl.destroy();
- return loaderType;
- }
-
- static supportNativeMediaPlayback(mimeType) {
- if (Features.videoElement == undefined) {
- Features.videoElement = window.document.createElement('video');
- }
- let canPlay = Features.videoElement.canPlayType(mimeType);
- return canPlay === 'probably' || canPlay == 'maybe';
- }
-
- static getFeatureList() {
- let features = {
- mseFlvPlayback: false,
- mseLiveFlvPlayback: false,
- networkStreamIO: false,
- networkLoaderName: '',
- nativeMP4H264Playback: false,
- nativeWebmVP8Playback: false,
- nativeWebmVP9Playback: false,
- };
-
- features.mseFlvPlayback = Features.supportMSEH264Playback();
- features.networkStreamIO = Features.supportNetworkStreamIO();
- features.networkLoaderName = Features.getNetworkLoaderTypeName();
- features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;
- features.nativeMP4H264Playback = Features.supportNativeMediaPlayback(
- 'video/mp4; codecs="avc1.42001E, mp4a.40.2"',
- );
- features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"');
- features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp9"');
-
- return features;
- }
-}
-
-export default Features;
diff --git a/src/flv.js/core/media-info.js b/src/flv.js/core/media-info.js
deleted file mode 100644
index 70399bd..0000000
--- a/src/flv.js/core/media-info.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class MediaInfo {
- constructor() {
- this.mimeType = null;
- this.duration = null;
-
- this.hasAudio = null;
- this.hasVideo = null;
- this.audioCodec = null;
- this.videoCodec = null;
- this.audioDataRate = null;
- this.videoDataRate = null;
-
- this.audioSampleRate = null;
- this.audioChannelCount = null;
-
- this.width = null;
- this.height = null;
- this.fps = null;
- this.profile = null;
- this.level = null;
- this.chromaFormat = null;
- this.sarNum = null;
- this.sarDen = null;
-
- this.metadata = null;
- this.segments = null; // MediaInfo[]
- this.segmentCount = null;
- this.hasKeyframesIndex = null;
- this.keyframesIndex = null;
- }
-
- isComplete() {
- let audioInfoComplete =
- this.hasAudio === false ||
- (this.hasAudio === true &&
- this.audioCodec != null &&
- this.audioSampleRate != null &&
- this.audioChannelCount != null);
-
- let videoInfoComplete =
- this.hasVideo === false ||
- (this.hasVideo === true &&
- this.videoCodec != null &&
- this.width != null &&
- this.height != null &&
- this.fps != null &&
- this.profile != null &&
- this.level != null &&
- this.chromaFormat != null &&
- this.sarNum != null &&
- this.sarDen != null);
-
- // keyframesIndex may not be present
- return (
- this.mimeType != null &&
- this.duration != null &&
- this.metadata != null &&
- this.hasKeyframesIndex != null &&
- audioInfoComplete &&
- videoInfoComplete
- );
- }
-
- isSeekable() {
- return this.hasKeyframesIndex === true;
- }
-
- getNearestKeyframe(milliseconds) {
- if (this.keyframesIndex == null) {
- return null;
- }
-
- let table = this.keyframesIndex;
- let keyframeIdx = this._search(table.times, milliseconds);
-
- return {
- index: keyframeIdx,
- milliseconds: table.times[keyframeIdx],
- fileposition: table.filepositions[keyframeIdx],
- };
- }
-
- _search(list, value) {
- let idx = 0;
-
- let last = list.length - 1;
- let mid = 0;
- let lbound = 0;
- let ubound = last;
-
- if (value < list[0]) {
- idx = 0;
- lbound = ubound + 1; // skip search
- }
-
- while (lbound <= ubound) {
- mid = lbound + Math.floor((ubound - lbound) / 2);
- if (mid === last || (value >= list[mid] && value < list[mid + 1])) {
- idx = mid;
- break;
- } else if (list[mid] < value) {
- lbound = mid + 1;
- } else {
- ubound = mid - 1;
- }
- }
-
- return idx;
- }
-}
-
-export default MediaInfo;
diff --git a/src/flv.js/core/media-segment-info.js b/src/flv.js/core/media-segment-info.js
deleted file mode 100644
index 8e5d5cc..0000000
--- a/src/flv.js/core/media-segment-info.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Represents an media sample (audio / video)
-export class SampleInfo {
- constructor(dts, pts, duration, originalDts, isSync) {
- this.dts = dts;
- this.pts = pts;
- this.duration = duration;
- this.originalDts = originalDts;
- this.isSyncPoint = isSync;
- this.fileposition = null;
- }
-}
-
-// Media Segment concept is defined in Media Source Extensions spec.
-// Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.
-export class MediaSegmentInfo {
- constructor() {
- this.beginDts = 0;
- this.endDts = 0;
- this.beginPts = 0;
- this.endPts = 0;
- this.originalBeginDts = 0;
- this.originalEndDts = 0;
- this.syncPoints = []; // SampleInfo[n], for video IDR frames only
- this.firstSample = null; // SampleInfo
- this.lastSample = null; // SampleInfo
- }
-
- appendSyncPoint(sampleInfo) {
- // also called Random Access Point
- sampleInfo.isSyncPoint = true;
- this.syncPoints.push(sampleInfo);
- }
-}
-
-// Ordered list for recording video IDR frames, sorted by originalDts
-export class IDRSampleList {
- constructor() {
- this._list = [];
- }
-
- clear() {
- this._list = [];
- }
-
- appendArray(syncPoints) {
- let list = this._list;
-
- if (syncPoints.length === 0) {
- return;
- }
-
- if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {
- this.clear();
- }
-
- Array.prototype.push.apply(list, syncPoints);
- }
-
- getLastSyncPointBeforeDts(dts) {
- if (this._list.length == 0) {
- return null;
- }
-
- let list = this._list;
- let idx = 0;
- let last = list.length - 1;
- let mid = 0;
- let lbound = 0;
- let ubound = last;
-
- if (dts < list[0].dts) {
- idx = 0;
- lbound = ubound + 1;
- }
-
- while (lbound <= ubound) {
- mid = lbound + Math.floor((ubound - lbound) / 2);
- if (mid === last || (dts >= list[mid].dts && dts < list[mid + 1].dts)) {
- idx = mid;
- break;
- } else if (list[mid].dts < dts) {
- lbound = mid + 1;
- } else {
- ubound = mid - 1;
- }
- }
- return this._list[idx];
- }
-}
-
-// Data structure for recording information of media segments in single track.
-export class MediaSegmentInfoList {
- constructor(type) {
- this._type = type;
- this._list = [];
- this._lastAppendLocation = -1; // cached last insert location
- }
-
- get type() {
- return this._type;
- }
-
- get length() {
- return this._list.length;
- }
-
- isEmpty() {
- return this._list.length === 0;
- }
-
- clear() {
- this._list = [];
- this._lastAppendLocation = -1;
- }
-
- _searchNearestSegmentBefore(originalBeginDts) {
- let list = this._list;
- if (list.length === 0) {
- return -2;
- }
- let last = list.length - 1;
- let mid = 0;
- let lbound = 0;
- let ubound = last;
-
- let idx = 0;
-
- if (originalBeginDts < list[0].originalBeginDts) {
- idx = -1;
- return idx;
- }
-
- while (lbound <= ubound) {
- mid = lbound + Math.floor((ubound - lbound) / 2);
- if (
- mid === last ||
- (originalBeginDts > list[mid].lastSample.originalDts &&
- originalBeginDts < list[mid + 1].originalBeginDts)
- ) {
- idx = mid;
- break;
- } else if (list[mid].originalBeginDts < originalBeginDts) {
- lbound = mid + 1;
- } else {
- ubound = mid - 1;
- }
- }
- return idx;
- }
-
- _searchNearestSegmentAfter(originalBeginDts) {
- return this._searchNearestSegmentBefore(originalBeginDts) + 1;
- }
-
- append(mediaSegmentInfo) {
- let list = this._list;
- let msi = mediaSegmentInfo;
- let lastAppendIdx = this._lastAppendLocation;
- let insertIdx = 0;
-
- if (
- lastAppendIdx !== -1 &&
- lastAppendIdx < list.length &&
- msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts &&
- (lastAppendIdx === list.length - 1 ||
- (lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts))
- ) {
- insertIdx = lastAppendIdx + 1; // use cached location idx
- } else {
- if (list.length > 0) {
- insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;
- }
- }
-
- this._lastAppendLocation = insertIdx;
- this._list.splice(insertIdx, 0, msi);
- }
-
- getLastSegmentBefore(originalBeginDts) {
- let idx = this._searchNearestSegmentBefore(originalBeginDts);
- if (idx >= 0) {
- return this._list[idx];
- } else {
- // -1
- return null;
- }
- }
-
- getLastSampleBefore(originalBeginDts) {
- let segment = this.getLastSegmentBefore(originalBeginDts);
- if (segment != null) {
- return segment.lastSample;
- } else {
- return null;
- }
- }
-
- getLastSyncPointBefore(originalBeginDts) {
- let segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);
- let syncPoints = this._list[segmentIdx].syncPoints;
- while (syncPoints.length === 0 && segmentIdx > 0) {
- segmentIdx--;
- syncPoints = this._list[segmentIdx].syncPoints;
- }
- if (syncPoints.length > 0) {
- return syncPoints[syncPoints.length - 1];
- } else {
- return null;
- }
- }
-}
diff --git a/src/flv.js/core/mse-controller.js b/src/flv.js/core/mse-controller.js
deleted file mode 100644
index f3af74b..0000000
--- a/src/flv.js/core/mse-controller.js
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import Browser from '../utils/browser.js';
-import MSEEvents from './mse-events.js';
-import { SampleInfo, IDRSampleList } from './media-segment-info.js';
-import { IllegalStateException } from '../utils/exception.js';
-
-// Media Source Extensions controller
-class MSEController {
- constructor(config) {
- this.TAG = 'MSEController';
-
- this._config = config;
- this._emitter = new EventEmitter();
-
- if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {
- // For live stream, do auto cleanup by default
- this._config.autoCleanupSourceBuffer = true;
- }
-
- this.e = {
- onSourceOpen: this._onSourceOpen.bind(this),
- onSourceEnded: this._onSourceEnded.bind(this),
- onSourceClose: this._onSourceClose.bind(this),
- onSourceBufferError: this._onSourceBufferError.bind(this),
- onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this),
- };
-
- this._mediaSource = null;
- this._mediaSourceObjectURL = null;
- this._mediaElement = null;
-
- this._isBufferFull = false;
- this._hasPendingEos = false;
-
- this._requireSetMediaDuration = false;
- this._pendingMediaDuration = 0;
-
- this._pendingSourceBufferInit = [];
- this._mimeTypes = {
- video: null,
- audio: null,
- };
- this._sourceBuffers = {
- video: null,
- audio: null,
- };
- this._lastInitSegments = {
- video: null,
- audio: null,
- };
- this._pendingSegments = {
- video: [],
- audio: [],
- };
- this._pendingRemoveRanges = {
- video: [],
- audio: [],
- };
- this._idrList = new IDRSampleList();
- }
-
- destroy() {
- if (this._mediaElement || this._mediaSource) {
- this.detachMediaElement();
- }
- this.e = null;
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-
- attachMediaElement(mediaElement) {
- if (this._mediaSource) {
- throw new IllegalStateException('MediaSource has been attached to an HTMLMediaElement!');
- }
- let ms = (this._mediaSource = new window.MediaSource());
- ms.addEventListener('sourceopen', this.e.onSourceOpen);
- ms.addEventListener('sourceended', this.e.onSourceEnded);
- ms.addEventListener('sourceclose', this.e.onSourceClose);
-
- this._mediaElement = mediaElement;
- this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);
- mediaElement.src = this._mediaSourceObjectURL;
- }
-
- detachMediaElement() {
- if (this._mediaSource) {
- let ms = this._mediaSource;
- for (let type in this._sourceBuffers) {
- // pending segments should be discard
- let ps = this._pendingSegments[type];
- ps.splice(0, ps.length);
- this._pendingSegments[type] = null;
- this._pendingRemoveRanges[type] = null;
- this._lastInitSegments[type] = null;
-
- // remove all sourcebuffers
- let sb = this._sourceBuffers[type];
- if (sb) {
- if (ms.readyState !== 'closed') {
- ms.removeSourceBuffer(sb);
- sb.removeEventListener('error', this.e.onSourceBufferError);
- sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);
- }
- this._mimeTypes[type] = null;
- this._sourceBuffers[type] = null;
- }
- }
- if (ms.readyState === 'open') {
- try {
- ms.endOfStream();
- } catch (error) {
- Log.e(this.TAG, error.message);
- }
- }
- ms.removeEventListener('sourceopen', this.e.onSourceOpen);
- ms.removeEventListener('sourceended', this.e.onSourceEnded);
- ms.removeEventListener('sourceclose', this.e.onSourceClose);
- this._pendingSourceBufferInit = [];
- this._isBufferFull = false;
- this._idrList.clear();
- this._mediaSource = null;
- }
-
- if (this._mediaElement) {
- this._mediaElement.src = '';
- this._mediaElement.removeAttribute('src');
- this._mediaElement = null;
- }
- if (this._mediaSourceObjectURL) {
- window.URL.revokeObjectURL(this._mediaSourceObjectURL);
- this._mediaSourceObjectURL = null;
- }
- }
-
- appendInitSegment(initSegment, deferred) {
- if (!this._mediaSource || this._mediaSource.readyState !== 'open') {
- // sourcebuffer creation requires mediaSource.readyState === 'open'
- // so we defer the sourcebuffer creation, until sourceopen event triggered
- this._pendingSourceBufferInit.push(initSegment);
- // make sure that this InitSegment is in the front of pending segments queue
- this._pendingSegments[initSegment.type].push(initSegment);
- return;
- }
-
- let is = initSegment;
- let mimeType = `${is.container}`;
- if (is.codec && is.codec.length > 0) {
- mimeType += `;codecs=${is.codec}`;
- }
-
- let firstInitSegment = false;
-
- Log.v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType);
- this._lastInitSegments[is.type] = is;
-
- if (mimeType !== this._mimeTypes[is.type]) {
- if (!this._mimeTypes[is.type]) {
- // empty, first chance create sourcebuffer
- firstInitSegment = true;
- try {
- let sb = (this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType));
- sb.addEventListener('error', this.e.onSourceBufferError);
- sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);
- } catch (error) {
- Log.e(this.TAG, error.message);
- this._emitter.emit(MSEEvents.ERROR, { code: error.code, msg: error.message });
- return;
- }
- } else {
- Log.v(
- this.TAG,
- `Notice: ${is.type} mimeType changed, origin: ${this._mimeTypes[is.type]}, target: ${mimeType}`,
- );
- }
- this._mimeTypes[is.type] = mimeType;
- }
-
- if (!deferred) {
- // deferred means this InitSegment has been pushed to pendingSegments queue
- this._pendingSegments[is.type].push(is);
- }
- if (!firstInitSegment) {
- // append immediately only if init segment in subsequence
- if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {
- this._doAppendSegments();
- }
- }
- if (Browser.safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {
- // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN
- // Manually correct MediaSource.duration to make progress bar seekable, and report right duration
- this._requireSetMediaDuration = true;
- this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds
- this._updateMediaSourceDuration();
- }
- }
-
- appendMediaSegment(mediaSegment) {
- let ms = mediaSegment;
- this._pendingSegments[ms.type].push(ms);
-
- if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer()) {
- this._doCleanupSourceBuffer();
- }
-
- let sb = this._sourceBuffers[ms.type];
- if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {
- this._doAppendSegments();
- }
- }
-
- seek(seconds) {
- // remove all appended buffers
- for (let type in this._sourceBuffers) {
- if (!this._sourceBuffers[type]) {
- continue;
- }
-
- // abort current buffer append algorithm
- let sb = this._sourceBuffers[type];
- if (this._mediaSource.readyState === 'open') {
- try {
- // If range removal algorithm is running, InvalidStateError will be throwed
- // Ignore it.
- sb.abort();
- } catch (error) {
- Log.e(this.TAG, error.message);
- }
- }
-
- // IDRList should be clear
- this._idrList.clear();
-
- // pending segments should be discard
- let ps = this._pendingSegments[type];
- ps.splice(0, ps.length);
-
- if (this._mediaSource.readyState === 'closed') {
- // Parent MediaSource object has been detached from HTMLMediaElement
- continue;
- }
-
- // record ranges to be remove from SourceBuffer
- for (let i = 0; i < sb.buffered.length; i++) {
- let start = sb.buffered.start(i);
- let end = sb.buffered.end(i);
- this._pendingRemoveRanges[type].push({ start, end });
- }
-
- // if sb is not updating, let's remove ranges now!
- if (!sb.updating) {
- this._doRemoveRanges();
- }
-
- // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call
- // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.
- // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230
- if (Browser.safari) {
- let lastInitSegment = this._lastInitSegments[type];
- if (lastInitSegment) {
- this._pendingSegments[type].push(lastInitSegment);
- if (!sb.updating) {
- this._doAppendSegments();
- }
- }
- }
- }
- }
-
- endOfStream() {
- let ms = this._mediaSource;
- let sb = this._sourceBuffers;
- if (!ms || ms.readyState !== 'open') {
- if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {
- // If MediaSource hasn't turned into open state, and there're pending segments
- // Mark pending endOfStream, defer call until all pending segments appended complete
- this._hasPendingEos = true;
- }
- return;
- }
-
- if (window['__FLV_P2P_TYPE__'] && this._hasPendingSegments()) {
- this._doAppendSegments();
- this._hasPendingEos = true;
- return;
- }
-
- if ((sb.video && sb.video.updating) || (sb.audio && sb.audio.updating)) {
- // If any sourcebuffer is updating, defer endOfStream operation
- // See _onSourceBufferUpdateEnd()
- this._hasPendingEos = true;
- } else {
- this._hasPendingEos = false;
- // Notify media data loading complete
- // This is helpful for correcting total duration to match last media segment
- // Otherwise MediaElement's ended event may not be triggered
- ms.endOfStream();
- }
- }
-
- getNearestKeyframe(dts) {
- return this._idrList.getLastSyncPointBeforeDts(dts);
- }
-
- _needCleanupSourceBuffer() {
- if (!this._config.autoCleanupSourceBuffer) {
- return false;
- }
-
- let currentTime = this._mediaElement.currentTime;
-
- for (let type in this._sourceBuffers) {
- let sb = this._sourceBuffers[type];
- if (sb) {
- let buffered = sb.buffered;
- if (buffered.length >= 1) {
- if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
- _doCleanupSourceBuffer() {
- let currentTime = this._mediaElement.currentTime;
-
- for (let type in this._sourceBuffers) {
- let sb = this._sourceBuffers[type];
- if (sb) {
- let buffered = sb.buffered;
- let doRemove = false;
-
- for (let i = 0; i < buffered.length; i++) {
- let start = buffered.start(i);
- let end = buffered.end(i);
-
- if (start <= currentTime && currentTime < end + 3) {
- // padding 3 seconds
- if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {
- doRemove = true;
- let removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;
- this._pendingRemoveRanges[type].push({ start: start, end: removeEnd });
- }
- } else if (end < currentTime) {
- doRemove = true;
- this._pendingRemoveRanges[type].push({ start: start, end: end });
- }
- }
-
- if (doRemove && !sb.updating) {
- this._doRemoveRanges();
- }
- }
- }
- }
-
- _updateMediaSourceDuration() {
- let sb = this._sourceBuffers;
- if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {
- return;
- }
- if ((sb.video && sb.video.updating) || (sb.audio && sb.audio.updating)) {
- return;
- }
-
- let current = this._mediaSource.duration;
- let target = this._pendingMediaDuration;
-
- if (target > 0 && (isNaN(current) || target > current)) {
- Log.v(this.TAG, `Update MediaSource duration from ${current} to ${target}`);
- this._mediaSource.duration = target;
- }
-
- this._requireSetMediaDuration = false;
- this._pendingMediaDuration = 0;
- }
-
- _doRemoveRanges() {
- for (let type in this._pendingRemoveRanges) {
- if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
- continue;
- }
- let sb = this._sourceBuffers[type];
- let ranges = this._pendingRemoveRanges[type];
- while (ranges.length && !sb.updating) {
- let range = ranges.shift();
- sb.remove(range.start, range.end);
- }
- }
- }
-
- _doAppendSegments() {
- let pendingSegments = this._pendingSegments;
-
- for (let type in pendingSegments) {
- if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
- continue;
- }
-
- if (pendingSegments[type].length > 0) {
- let segment = pendingSegments[type].shift();
-
- if (segment.timestampOffset) {
- // For MPEG audio stream in MSE, if unbuffered-seeking occurred
- // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
- let currentOffset = this._sourceBuffers[type].timestampOffset;
- let targetOffset = segment.timestampOffset / 1000; // in seconds
-
- let delta = Math.abs(currentOffset - targetOffset);
- if (delta > 0.1) {
- // If time delta > 100ms
- Log.v(this.TAG, `Update MPEG audio timestampOffset from ${currentOffset} to ${targetOffset}`);
- this._sourceBuffers[type].timestampOffset = targetOffset;
- }
- delete segment.timestampOffset;
- }
-
- if (!segment.data || segment.data.byteLength === 0) {
- // Ignore empty buffer
- continue;
- }
-
- try {
- this._sourceBuffers[type].appendBuffer(segment.data);
- this._isBufferFull = false;
- if (type === 'video' && segment.hasOwnProperty('info')) {
- this._idrList.appendArray(segment.info.syncPoints);
- }
- } catch (error) {
- this._pendingSegments[type].unshift(segment);
- if (error.code === 22) {
- // QuotaExceededError
- /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full
- * Currently we can only do lazy-load to avoid SourceBuffer become scattered.
- * SourceBuffer eviction policy may be changed in future version of FireFox.
- *
- * Related issues:
- * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885
- * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023
- */
-
- // report buffer full, abort network IO
- if (!this._isBufferFull) {
- this._emitter.emit(MSEEvents.BUFFER_FULL);
- }
- this._isBufferFull = true;
- } else {
- Log.e(this.TAG, error.message);
- this._emitter.emit(MSEEvents.ERROR, { code: error.code, msg: error.message });
- }
- }
- }
- }
- }
-
- _onSourceOpen() {
- Log.v(this.TAG, 'MediaSource onSourceOpen');
- this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
- // deferred sourcebuffer creation / initialization
- if (this._pendingSourceBufferInit.length > 0) {
- let pendings = this._pendingSourceBufferInit;
- while (pendings.length) {
- let segment = pendings.shift();
- this.appendInitSegment(segment, true);
- }
- }
- // there may be some pending media segments, append them
- if (this._hasPendingSegments()) {
- this._doAppendSegments();
- }
- this._emitter.emit(MSEEvents.SOURCE_OPEN);
- }
-
- _onSourceEnded() {
- // fired on endOfStream
- Log.v(this.TAG, 'MediaSource onSourceEnded');
- }
-
- _onSourceClose() {
- // fired on detaching from media element
- Log.v(this.TAG, 'MediaSource onSourceClose');
- if (this._mediaSource && this.e != null) {
- this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
- this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);
- this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);
- }
- }
-
- _hasPendingSegments() {
- let ps = this._pendingSegments;
- return ps.video.length > 0 || ps.audio.length > 0;
- }
-
- _hasPendingRemoveRanges() {
- let prr = this._pendingRemoveRanges;
- return prr.video.length > 0 || prr.audio.length > 0;
- }
-
- _onSourceBufferUpdateEnd() {
- if (this._requireSetMediaDuration) {
- this._updateMediaSourceDuration();
- } else if (this._hasPendingRemoveRanges()) {
- this._doRemoveRanges();
- } else if (this._hasPendingSegments()) {
- this._doAppendSegments();
- } else if (this._hasPendingEos) {
- this.endOfStream();
- }
- this._emitter.emit(MSEEvents.UPDATE_END);
- }
-
- _onSourceBufferError(e) {
- Log.e(this.TAG, `SourceBuffer Error: ${e}`);
- // this error might not always be fatal, just ignore it
- }
-}
-
-export default MSEController;
diff --git a/src/flv.js/core/mse-events.js b/src/flv.js/core/mse-events.js
deleted file mode 100644
index d7c66b5..0000000
--- a/src/flv.js/core/mse-events.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const MSEEvents = {
- ERROR: 'error',
- SOURCE_OPEN: 'source_open',
- UPDATE_END: 'update_end',
- BUFFER_FULL: 'buffer_full',
-};
-
-export default MSEEvents;
diff --git a/src/flv.js/core/transmuxer.js b/src/flv.js/core/transmuxer.js
deleted file mode 100644
index 66668b5..0000000
--- a/src/flv.js/core/transmuxer.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import LoggingControl from '../utils/logging-control.js';
-import TransmuxingController from './transmuxing-controller.js';
-import TransmuxingEvents from './transmuxing-events.js';
-import TransmuxingWorker from './transmuxing-worker.js';
-import MediaInfo from './media-info.js';
-import { OTHER_EVENTS_POLYMER } from '../player/player-events.js';
-
-class Transmuxer {
- constructor(mediaDataSource, config, mediaElement) {
- this.TAG = 'Transmuxer';
- this._emitter = new EventEmitter();
- this._mediaElement = mediaElement;
-
- if (config.enableWorker && typeof Worker !== 'undefined') {
- try {
- let work = require('webworkify');
- this._worker = work(TransmuxingWorker);
- this._workerDestroying = false;
- this._worker.addEventListener('message', this._onWorkerMessage.bind(this));
- this._worker.postMessage({ cmd: 'init', param: [mediaDataSource, config, this._mediaElement] });
- this.e = {
- onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this),
- };
- LoggingControl.registerListener(this.e.onLoggingConfigChanged);
- this._worker.postMessage({ cmd: 'logging_config', param: LoggingControl.getConfig() });
- } catch (error) {
- Log.e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');
- this._worker = null;
- this._controller = new TransmuxingController(mediaDataSource, config, this._mediaElement);
- }
- } else {
- this._controller = new TransmuxingController(mediaDataSource, config, this._mediaElement);
- }
-
- if (this._controller) {
- let ctl = this._controller;
- ctl.on(TransmuxingEvents.IO_ERROR, this._onIOError.bind(this));
- ctl.on(TransmuxingEvents.DEMUX_ERROR, this._onDemuxError.bind(this));
- ctl.on(TransmuxingEvents.INIT_SEGMENT, this._onInitSegment.bind(this));
- ctl.on(TransmuxingEvents.MEDIA_SEGMENT, this._onMediaSegment.bind(this));
- ctl.on(TransmuxingEvents.LOADING_COMPLETE, this._onLoadingComplete.bind(this));
- ctl.on(TransmuxingEvents.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));
- ctl.on(TransmuxingEvents.MEDIA_INFO, this._onMediaInfo.bind(this));
- ctl.on(TransmuxingEvents.STATISTICS_INFO, this._onStatisticsInfo.bind(this));
- ctl.on(TransmuxingEvents.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));
- ctl.on(OTHER_EVENTS_POLYMER, (obj) => this._emitter.emit(OTHER_EVENTS_POLYMER, obj));
- }
- }
-
- destroy() {
- if (this._worker) {
- if (!this._workerDestroying) {
- this._workerDestroying = true;
- this._worker.postMessage({ cmd: 'destroy' });
- LoggingControl.removeListener(this.e.onLoggingConfigChanged);
- this.e = null;
- }
- } else {
- this._controller.destroy();
- this._controller = null;
- }
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-
- hasWorker() {
- return this._worker != null;
- }
-
- open() {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'start' });
- } else {
- this._controller.start();
- }
- }
-
- close() {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'stop' });
- } else {
- this._controller.stop();
- }
- }
-
- seek(milliseconds) {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'seek', param: milliseconds });
- } else {
- this._controller.seek(milliseconds);
- }
- }
-
- pause() {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'pause' });
- } else {
- this._controller.pause();
- }
- }
-
- resume() {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'resume' });
- } else {
- this._controller.resume();
- }
- }
-
- _onInitSegment(type, initSegment) {
- // do async invoke
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.INIT_SEGMENT, type, initSegment);
- });
- }
-
- _onMediaSegment(type, mediaSegment) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.MEDIA_SEGMENT, type, mediaSegment);
- });
- }
-
- _onLoadingComplete(from, to, requestUrl) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.LOADING_COMPLETE, from, to, requestUrl);
- });
- }
-
- _onRecoveredEarlyEof() {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.RECOVERED_EARLY_EOF);
- });
- }
-
- _onMediaInfo(mediaInfo) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.MEDIA_INFO, mediaInfo);
- });
- }
-
- _onStatisticsInfo(statisticsInfo) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.STATISTICS_INFO, statisticsInfo);
- });
- }
-
- _onIOError(type, info) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.IO_ERROR, type, info);
- });
- }
-
- _onDemuxError(type, info) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.DEMUX_ERROR, type, info);
- });
- }
-
- _onRecommendSeekpoint(milliseconds) {
- Promise.resolve().then(() => {
- this._emitter.emit(TransmuxingEvents.RECOMMEND_SEEKPOINT, milliseconds);
- });
- }
-
- _onLoggingConfigChanged(config) {
- if (this._worker) {
- this._worker.postMessage({ cmd: 'logging_config', param: config });
- }
- }
-
- _onWorkerMessage(e) {
- let message = e.data;
- let data = message.data;
-
- if (message.msg === 'destroyed' || this._workerDestroying) {
- this._workerDestroying = false;
- this._worker.terminate();
- this._worker = null;
- return;
- }
-
- switch (message.msg) {
- case OTHER_EVENTS_POLYMER:
- this._emitter.emit(OTHER_EVENTS_POLYMER, data);
- break;
- case TransmuxingEvents.INIT_SEGMENT:
- case TransmuxingEvents.MEDIA_SEGMENT:
- this._emitter.emit(message.msg, data.type, data.data);
- break;
- case TransmuxingEvents.LOADING_COMPLETE:
- this._emitter.emit(message.msg, data.from, data.to, data.requestUrl);
- break;
- case TransmuxingEvents.RECOVERED_EARLY_EOF:
- this._emitter.emit(message.msg);
- break;
- case TransmuxingEvents.MEDIA_INFO:
- Object.setPrototypeOf(data, MediaInfo.prototype);
- this._emitter.emit(message.msg, data);
- break;
- case TransmuxingEvents.STATISTICS_INFO:
- this._emitter.emit(message.msg, data);
- break;
- case TransmuxingEvents.IO_ERROR:
- case TransmuxingEvents.DEMUX_ERROR:
- this._emitter.emit(message.msg, data.type, data.info);
- break;
- case TransmuxingEvents.RECOMMEND_SEEKPOINT:
- this._emitter.emit(message.msg, data);
- break;
- case 'logcat_callback':
- Log.emitter.emit('log', data.type, data.logcat);
- break;
- default:
- break;
- }
- }
-}
-
-export default Transmuxer;
diff --git a/src/flv.js/core/transmuxing-controller.js b/src/flv.js/core/transmuxing-controller.js
deleted file mode 100644
index 5bf15b6..0000000
--- a/src/flv.js/core/transmuxing-controller.js
+++ /dev/null
@@ -1,466 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import Browser from '../utils/browser.js';
-import MediaInfo from './media-info.js';
-import FLVDemuxer from '../demux/flv-demuxer.js';
-import MP4Remuxer from '../remux/mp4-remuxer.js';
-import DemuxErrors from '../demux/demux-errors.js';
-import IOController from '../io/io-controller.js';
-import TransmuxingEvents from './transmuxing-events.js';
-import { LoaderStatus, LoaderErrors } from '../io/loader.js';
-import { OTHER_EVENTS_POLYMER } from '../player/player-events.js';
-
-// Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support
-class TransmuxingController {
- constructor(mediaDataSource, config, mediaElement) {
- this.TAG = 'TransmuxingController';
- this._emitter = new EventEmitter();
-
- this._config = config;
- this._mediaElement = mediaElement;
-
- // treat single part media as multipart media, which has only one segment
- if (!mediaDataSource.segments) {
- mediaDataSource.segments = [
- {
- duration: mediaDataSource.duration,
- filesize: mediaDataSource.filesize,
- url: mediaDataSource.url,
- },
- ];
- }
-
- // fill in default IO params if not exists
- if (typeof mediaDataSource.cors !== 'boolean') {
- mediaDataSource.cors = true;
- }
- if (typeof mediaDataSource.withCredentials !== 'boolean') {
- mediaDataSource.withCredentials = false;
- }
-
- this._mediaDataSource = mediaDataSource;
- this._currentSegmentIndex = 0;
- let totalDuration = 0;
-
- this._mediaDataSource.segments.forEach((segment) => {
- // timestampBase for each segment, and calculate total duration
- segment.timestampBase = totalDuration;
- totalDuration += segment.duration;
- // params needed by IOController
- segment.cors = mediaDataSource.cors;
- segment.withCredentials = mediaDataSource.withCredentials;
- // referrer policy control, if exist
- if (config.referrerPolicy) {
- segment.referrerPolicy = config.referrerPolicy;
- }
- });
-
- if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {
- this._mediaDataSource.duration = totalDuration;
- }
-
- this._mediaInfo = null;
- this._demuxer = null;
- this._remuxer = null;
- this._ioctl = null;
-
- this._pendingSeekTime = null;
- this._pendingResolveSeekPoint = null;
-
- this._statisticsReporter = null;
- }
-
- destroy() {
- this._mediaInfo = null;
- this._mediaDataSource = null;
-
- if (this._statisticsReporter) {
- this._disableStatisticsReporter();
- }
- if (this._ioctl) {
- this._ioctl.destroy();
- this._ioctl = null;
- }
- if (this._demuxer) {
- this._demuxer.destroy();
- this._demuxer = null;
- }
- if (this._remuxer) {
- this._remuxer.destroy();
- this._remuxer = null;
- }
-
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-
- start() {
- this._loadSegment(0);
- this._enableStatisticsReporter();
- }
-
- _loadSegment(segmentIndex, optionalFrom, bNewSlice) {
- this._currentSegmentIndex = segmentIndex;
- let dataSource = this._mediaDataSource.segments[segmentIndex];
-
- let ioctl = (this._ioctl = new IOController(
- dataSource,
- this._config,
- segmentIndex,
- this._mediaElement,
- bNewSlice,
- ));
- ioctl.onError = this._onIOException.bind(this);
- ioctl.onSeeked = this._onIOSeeked.bind(this);
- ioctl.onComplete = this._onIOComplete.bind(this);
- ioctl.onRedirect = this._onIORedirect.bind(this);
- ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);
- ioctl.on(OTHER_EVENTS_POLYMER, (obj) => this._emitter.emit(OTHER_EVENTS_POLYMER, obj));
-
- if (optionalFrom) {
- this._demuxer.bindDataSource(this._ioctl);
- } else {
- ioctl.onDataArrival = this._onInitChunkArrival.bind(this);
- }
-
- ioctl.open(optionalFrom);
- }
-
- stop() {
- this._internalAbort();
- this._disableStatisticsReporter();
- }
-
- _internalAbort() {
- if (this._ioctl) {
- this._ioctl.destroy();
- this._ioctl = null;
- }
- }
-
- pause() {
- // take a rest
- if (this._ioctl && this._ioctl.isWorking()) {
- this._ioctl.pause();
- this._disableStatisticsReporter();
- }
- }
-
- resume() {
- if (this._ioctl && this._ioctl.isPaused()) {
- this._ioctl.resume();
- this._enableStatisticsReporter();
- }
- }
-
- seek(milliseconds) {
- if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {
- return;
- }
-
- let targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);
-
- if (targetSegmentIndex === this._currentSegmentIndex) {
- // intra-segment seeking
- let segmentInfo = this._mediaInfo.segments[targetSegmentIndex];
-
- if (segmentInfo == undefined) {
- // current segment loading started, but mediainfo hasn't received yet
- // wait for the metadata loaded, then seek to expected position
- this._pendingSeekTime = milliseconds;
- } else {
- let keyframe = segmentInfo.getNearestKeyframe(milliseconds);
- this._remuxer.seek(keyframe.milliseconds);
- this._ioctl.seek(keyframe.fileposition);
- // Will be resolved in _onRemuxerMediaSegmentArrival()
- this._pendingResolveSeekPoint = keyframe.milliseconds;
- }
- } else {
- // cross-segment seeking
- let targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];
-
- if (targetSegmentInfo == undefined) {
- // target segment hasn't been loaded. We need metadata then seek to expected time
- this._pendingSeekTime = milliseconds;
- this._internalAbort();
- this._remuxer.seek();
- this._remuxer.insertDiscontinuity();
- // change slice
- this._loadSegment(targetSegmentIndex, undefined, true);
- // Here we wait for the metadata loaded, then seek to expected position
- } else {
- // We have target segment's metadata, direct seek to target position
- let keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);
- this._internalAbort();
- this._remuxer.seek(milliseconds);
- this._remuxer.insertDiscontinuity();
- this._demuxer.resetMediaInfo();
- this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;
- this._loadSegment(targetSegmentIndex, keyframe.fileposition);
- this._pendingResolveSeekPoint = keyframe.milliseconds;
- this._reportSegmentMediaInfo(targetSegmentIndex);
- }
- }
-
- this._enableStatisticsReporter();
- }
-
- _searchSegmentIndexContains(milliseconds) {
- let segments = this._mediaDataSource.segments;
- let idx = segments.length - 1;
-
- for (let i = 0; i < segments.length; i++) {
- if (milliseconds < segments[i].timestampBase) {
- idx = i - 1;
- break;
- }
- }
- return idx;
- }
-
- _onInitChunkArrival(data, byteStart) {
- let probeData = null;
- let consumed = 0;
-
- if (byteStart > 0) {
- // IOController seeked immediately after opened, byteStart > 0 callback may received
- this._demuxer.bindDataSource(this._ioctl);
- this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;
-
- consumed = this._demuxer.parseChunks(data, byteStart);
- } else if ((probeData = FLVDemuxer.probe(data)).match) {
- // Always create new FLVDemuxer
- this._demuxer = new FLVDemuxer(probeData, this._config);
-
- if (!this._remuxer) {
- this._remuxer = new MP4Remuxer(this._config);
- }
-
- let mds = this._mediaDataSource;
- if (mds.duration != undefined && !isNaN(mds.duration)) {
- this._demuxer.overridedDuration = mds.duration;
- }
- if (typeof mds.hasAudio === 'boolean') {
- this._demuxer.overridedHasAudio = mds.hasAudio;
- }
- if (typeof mds.hasVideo === 'boolean') {
- this._demuxer.overridedHasVideo = mds.hasVideo;
- }
-
- this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;
-
- this._demuxer.onError = this._onDemuxException.bind(this);
- this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);
- this._demuxer.onFlvFrameDecoded = this._onFlvFrameDecoded.bind(this);
- this._demuxer.onCtsWarning = this._onCtsWarning.bind(this);
- this._demuxer.onFLVDataAbnormal = this._onFLVDataAbnormal.bind(this);
-
- this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));
-
- this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);
- this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);
-
- consumed = this._demuxer.parseChunks(data, byteStart);
- } else {
- probeData = null;
- Log.e(this.TAG, 'Non-FLV, Unsupported media type!');
- Promise.resolve().then(() => {
- this._internalAbort();
- });
- this._emitter.emit(
- TransmuxingEvents.DEMUX_ERROR,
- DemuxErrors.FORMAT_UNSUPPORTED,
- 'Non-FLV, Unsupported media type',
- );
-
- consumed = 0;
- }
-
- return consumed;
- }
-
- _onFlvFrameDecoded(eventName, timestamp) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: eventName,
- eventParams: [timestamp],
- });
- }
-
- _onCtsWarning(eventName, params) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: eventName,
- eventParams: [params],
- });
- }
-
- _onFLVDataAbnormal(eventName, params) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: eventName,
- eventParams: [params],
- });
- }
-
- _onMediaInfo(mediaInfo) {
- if (this._mediaInfo == null) {
- // Store first segment's mediainfo as global mediaInfo
- this._mediaInfo = Object.assign({}, mediaInfo);
- this._mediaInfo.keyframesIndex = null;
- this._mediaInfo.segments = [];
- this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;
- Object.setPrototypeOf(this._mediaInfo, MediaInfo.prototype);
- }
-
- let segmentInfo = Object.assign({}, mediaInfo);
- Object.setPrototypeOf(segmentInfo, MediaInfo.prototype);
- this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo;
-
- // notify mediaInfo update
- this._reportSegmentMediaInfo(this._currentSegmentIndex);
-
- if (this._pendingSeekTime != null) {
- Promise.resolve().then(() => {
- let target = this._pendingSeekTime;
- this._pendingSeekTime = null;
- this.seek(target);
- });
- }
- }
-
- _onIOSeeked() {
- this._remuxer.insertDiscontinuity();
- }
-
- _onIOComplete(extraData, from, to, requestUrl) {
- let segmentIndex = extraData;
- let nextSegmentIndex = segmentIndex + 1;
-
- if (nextSegmentIndex < this._mediaDataSource.segments.length) {
- this._internalAbort();
- // change slice
- this._loadSegment(nextSegmentIndex, undefined, true);
- } else {
- this._emitter.emit(TransmuxingEvents.LOADING_COMPLETE, from, to, requestUrl);
- this._disableStatisticsReporter();
- }
- }
-
- _onIORedirect(redirectedURL) {
- let segmentIndex = this._ioctl.extraData;
- this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;
- }
-
- _onIORecoveredEarlyEof() {
- this._emitter.emit(TransmuxingEvents.RECOVERED_EARLY_EOF);
- }
-
- _onIOException(type, info) {
- Log.e(this.TAG, `IOException: type = ${type}, code = ${info.code}, msg = ${info.msg}`);
- this._emitter.emit(TransmuxingEvents.IO_ERROR, type, info);
- this._disableStatisticsReporter();
- }
-
- _onDemuxException(type, info) {
- Log.e(this.TAG, `DemuxException: type = ${type}, info = ${info}`);
- this._emitter.emit(TransmuxingEvents.DEMUX_ERROR, type, info);
- }
-
- _onRemuxerInitSegmentArrival(type, initSegment) {
- this._emitter.emit(TransmuxingEvents.INIT_SEGMENT, type, initSegment);
- }
-
- _onRemuxerMediaSegmentArrival(type, mediaSegment) {
- if (this._pendingSeekTime != null) {
- // Media segments after new-segment cross-seeking should be dropped.
- return;
- }
- this._emitter.emit(TransmuxingEvents.MEDIA_SEGMENT, type, mediaSegment);
-
- // Resolve pending seekPoint
- if (this._pendingResolveSeekPoint != null && type === 'video') {
- let syncPoints = mediaSegment.info.syncPoints;
- let seekpoint = this._pendingResolveSeekPoint;
- this._pendingResolveSeekPoint = null;
-
- // Safari: Pass PTS for recommend_seekpoint
- if (Browser.safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {
- seekpoint = syncPoints[0].pts;
- }
- // else: use original DTS (keyframe.milliseconds)
-
- this._emitter.emit(TransmuxingEvents.RECOMMEND_SEEKPOINT, seekpoint);
- }
- }
-
- _enableStatisticsReporter() {
- if (this._statisticsReporter == null) {
- this._statisticsReporter = self.setInterval(
- this._reportStatisticsInfo.bind(this),
- this._config.statisticsInfoReportInterval,
- );
- }
- }
-
- _disableStatisticsReporter() {
- if (this._statisticsReporter) {
- self.clearInterval(this._statisticsReporter);
- this._statisticsReporter = null;
- }
- }
-
- _reportSegmentMediaInfo(segmentIndex) {
- let segmentInfo = this._mediaInfo.segments[segmentIndex];
- let exportInfo = Object.assign({}, segmentInfo);
-
- exportInfo.duration = this._mediaInfo.duration;
- exportInfo.segmentCount = this._mediaInfo.segmentCount;
- delete exportInfo.segments;
- delete exportInfo.keyframesIndex;
-
- this._emitter.emit(TransmuxingEvents.MEDIA_INFO, exportInfo);
- }
-
- _reportStatisticsInfo() {
- let info = {};
-
- info.url = this._ioctl.currentURL;
- info.hasRedirect = this._ioctl.hasRedirect;
- if (info.hasRedirect) {
- info.redirectedURL = this._ioctl.currentRedirectedURL;
- }
-
- info.speed = this._ioctl.currentSpeed;
- info.loaderType = this._ioctl.loaderType;
- info.currentSegmentIndex = this._currentSegmentIndex;
- info.totalSegmentCount = this._mediaDataSource.segments.length;
-
- this._emitter.emit(TransmuxingEvents.STATISTICS_INFO, info);
- }
-}
-
-export default TransmuxingController;
diff --git a/src/flv.js/core/transmuxing-events.js b/src/flv.js/core/transmuxing-events.js
deleted file mode 100644
index f87b1a1..0000000
--- a/src/flv.js/core/transmuxing-events.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const TransmuxingEvents = {
- IO_ERROR: 'io_error',
- DEMUX_ERROR: 'demux_error',
- INIT_SEGMENT: 'init_segment',
- MEDIA_SEGMENT: 'media_segment',
- LOADING_COMPLETE: 'loading_complete',
- RECOVERED_EARLY_EOF: 'recovered_early_eof',
- MEDIA_INFO: 'media_info',
- STATISTICS_INFO: 'statistics_info',
- RECOMMEND_SEEKPOINT: 'recommend_seekpoint',
-};
-
-export default TransmuxingEvents;
diff --git a/src/flv.js/core/transmuxing-worker.js b/src/flv.js/core/transmuxing-worker.js
deleted file mode 100644
index 3d12c1e..0000000
--- a/src/flv.js/core/transmuxing-worker.js
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import LoggingControl from '../utils/logging-control.js';
-import Polyfill from '../utils/polyfill.js';
-import TransmuxingController from './transmuxing-controller.js';
-import TransmuxingEvents from './transmuxing-events.js';
-import { OTHER_EVENTS_POLYMER } from '../player/player-events.js';
-
-/* post message to worker:
- data: {
- cmd: string
- param: any
- }
-
- receive message from worker:
- data: {
- msg: string,
- data: any
- }
- */
-
-let TransmuxingWorker = function (self) {
- let TAG = 'TransmuxingWorker';
- let controller = null;
- let logcatListener = onLogcatCallback.bind(this);
-
- Polyfill.install();
-
- self.addEventListener('message', function (e) {
- switch (e.data.cmd) {
- case 'init':
- controller = new TransmuxingController(e.data.param[0], e.data.param[1], e.data.param[2]);
- controller.on(TransmuxingEvents.IO_ERROR, onIOError.bind(this));
- controller.on(TransmuxingEvents.DEMUX_ERROR, onDemuxError.bind(this));
- controller.on(TransmuxingEvents.INIT_SEGMENT, onInitSegment.bind(this));
- controller.on(TransmuxingEvents.MEDIA_SEGMENT, onMediaSegment.bind(this));
- controller.on(TransmuxingEvents.LOADING_COMPLETE, onLoadingComplete.bind(this));
- controller.on(TransmuxingEvents.RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));
- controller.on(TransmuxingEvents.MEDIA_INFO, onMediaInfo.bind(this));
- controller.on(TransmuxingEvents.STATISTICS_INFO, onStatisticsInfo.bind(this));
- controller.on(TransmuxingEvents.RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));
- controller.on(OTHER_EVENTS_POLYMER, onOtherEventsPolymer.bind(this));
- break;
- case 'destroy':
- if (controller) {
- controller.destroy();
- controller = null;
- }
- self.postMessage({ msg: 'destroyed' });
- break;
- case 'start':
- controller.start();
- break;
- case 'stop':
- controller.stop();
- break;
- case 'seek':
- controller.seek(e.data.param);
- break;
- case 'pause':
- controller.pause();
- break;
- case 'resume':
- controller.resume();
- break;
- case 'logging_config': {
- let config = e.data.param;
- LoggingControl.applyConfig(config);
-
- if (config.enableCallback === true) {
- LoggingControl.addLogListener(logcatListener);
- } else {
- LoggingControl.removeLogListener(logcatListener);
- }
- break;
- }
- }
- });
-
- function onOtherEventsPolymer(obj) {
- self.postMessage({
- msg: OTHER_EVENTS_POLYMER,
- data: obj,
- });
- }
-
- function onInitSegment(type, initSegment) {
- let obj = {
- msg: TransmuxingEvents.INIT_SEGMENT,
- data: {
- type: type,
- data: initSegment,
- },
- };
- self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer
- }
-
- function onMediaSegment(type, mediaSegment) {
- let obj = {
- msg: TransmuxingEvents.MEDIA_SEGMENT,
- data: {
- type: type,
- data: mediaSegment,
- },
- };
- self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer
- }
-
- function onLoadingComplete(from, to, requestUrl) {
- let obj = {
- msg: TransmuxingEvents.LOADING_COMPLETE,
- data: {
- requestUrl: requestUrl,
- from: from,
- to: to,
- },
- };
- self.postMessage(obj);
- }
-
- function onRecoveredEarlyEof() {
- let obj = {
- msg: TransmuxingEvents.RECOVERED_EARLY_EOF,
- };
- self.postMessage(obj);
- }
-
- function onMediaInfo(mediaInfo) {
- let obj = {
- msg: TransmuxingEvents.MEDIA_INFO,
- data: mediaInfo,
- };
- self.postMessage(obj);
- }
-
- function onStatisticsInfo(statInfo) {
- let obj = {
- msg: TransmuxingEvents.STATISTICS_INFO,
- data: statInfo,
- };
- self.postMessage(obj);
- }
-
- function onIOError(type, info) {
- self.postMessage({
- msg: TransmuxingEvents.IO_ERROR,
- data: {
- type: type,
- info: info,
- },
- });
- }
-
- function onDemuxError(type, info) {
- self.postMessage({
- msg: TransmuxingEvents.DEMUX_ERROR,
- data: {
- type: type,
- info: info,
- },
- });
- }
-
- function onRecommendSeekpoint(milliseconds) {
- self.postMessage({
- msg: TransmuxingEvents.RECOMMEND_SEEKPOINT,
- data: milliseconds,
- });
- }
-
- function onLogcatCallback(type, str) {
- self.postMessage({
- msg: 'logcat_callback',
- data: {
- type: type,
- logcat: str,
- },
- });
- }
-};
-
-export default TransmuxingWorker;
diff --git a/src/flv.js/demux/amf-parser.js b/src/flv.js/demux/amf-parser.js
deleted file mode 100644
index e129141..0000000
--- a/src/flv.js/demux/amf-parser.js
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import decodeUTF8 from '../utils/utf8-conv.js';
-import { IllegalStateException } from '../utils/exception.js';
-
-let le = (function () {
- let buf = new ArrayBuffer(2);
- new DataView(buf).setInt16(0, 256, true); // little-endian write
- return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE
-})();
-
-class AMF {
- static parseScriptData(arrayBuffer, dataOffset, dataSize) {
- let data = {};
-
- try {
- let name = AMF.parseValue(arrayBuffer, dataOffset, dataSize);
- let value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);
-
- data[name.data] = value.data;
- } catch (e) {
- Log.e('AMF', e.toString());
- }
-
- return data;
- }
-
- static parseObject(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 3) {
- throw new IllegalStateException('Data not enough when parse ScriptDataObject');
- }
- let name = AMF.parseString(arrayBuffer, dataOffset, dataSize);
- let value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);
- let isObjectEnd = value.objectEnd;
-
- return {
- data: {
- name: name.data,
- value: value.data,
- },
- size: name.size + value.size,
- objectEnd: isObjectEnd,
- };
- }
-
- static parseVariable(arrayBuffer, dataOffset, dataSize) {
- return AMF.parseObject(arrayBuffer, dataOffset, dataSize);
- }
-
- static parseString(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 2) {
- throw new IllegalStateException('Data not enough when parse String');
- }
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
- let length = v.getUint16(0, !le);
-
- let str;
- if (length > 0) {
- str = decodeUTF8(new Uint8Array(arrayBuffer, dataOffset + 2, length));
- } else {
- str = '';
- }
-
- return {
- data: str,
- size: 2 + length,
- };
- }
-
- static parseLongString(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 4) {
- throw new IllegalStateException('Data not enough when parse LongString');
- }
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
- let length = v.getUint32(0, !le);
-
- let str;
- if (length > 0) {
- str = decodeUTF8(new Uint8Array(arrayBuffer, dataOffset + 4, length));
- } else {
- str = '';
- }
-
- return {
- data: str,
- size: 4 + length,
- };
- }
-
- static parseDate(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 10) {
- throw new IllegalStateException('Data size invalid when parse Date');
- }
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
- let timestamp = v.getFloat64(0, !le);
- let localTimeOffset = v.getInt16(8, !le);
- timestamp += localTimeOffset * 60 * 1000; // get UTC time
-
- return {
- data: new Date(timestamp),
- size: 8 + 2,
- };
- }
-
- static parseValue(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 1) {
- throw new IllegalStateException('Data not enough when parse Value');
- }
-
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
-
- let offset = 1;
- let type = v.getUint8(0);
- let value;
- let objectEnd = false;
-
- try {
- switch (type) {
- case 0: // Number(Double) type
- value = v.getFloat64(1, !le);
- offset += 8;
- break;
- case 1: {
- // Boolean type
- let b = v.getUint8(1);
- value = b ? true : false;
- offset += 1;
- break;
- }
- case 2: {
- // String type
- let amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
- value = amfstr.data;
- offset += amfstr.size;
- break;
- }
- case 3: {
- // Object(s) type
- value = {};
- let terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd
- if ((v.getUint32(dataSize - 4, !le) & 0x00ffffff) === 9) {
- terminal = 3;
- }
- while (offset < dataSize - 4) {
- // 4 === type(UI8) + ScriptDataObjectEnd(UI24)
- let amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);
- if (amfobj.objectEnd) break;
- value[amfobj.data.name] = amfobj.data.value;
- offset += amfobj.size;
- }
- if (offset <= dataSize - 3) {
- let marker = v.getUint32(offset - 1, !le) & 0x00ffffff;
- if (marker === 9) {
- offset += 3;
- }
- }
- break;
- }
- case 8: {
- // ECMA array type (Mixed array)
- value = {};
- offset += 4; // ECMAArrayLength(UI32)
- let terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd
- if ((v.getUint32(dataSize - 4, !le) & 0x00ffffff) === 9) {
- terminal = 3;
- }
- while (offset < dataSize - 8) {
- // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)
- let amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);
- if (amfvar.objectEnd) break;
- value[amfvar.data.name] = amfvar.data.value;
- offset += amfvar.size;
- }
- if (offset <= dataSize - 3) {
- let marker = v.getUint32(offset - 1, !le) & 0x00ffffff;
- if (marker === 9) {
- offset += 3;
- }
- }
- break;
- }
- case 9: // ScriptDataObjectEnd
- value = undefined;
- offset = 1;
- objectEnd = true;
- break;
- case 10: {
- // Strict array type
- // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf
- value = [];
- let strictArrayLength = v.getUint32(1, !le);
- offset += 4;
- for (let i = 0; i < strictArrayLength; i++) {
- let val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);
- value.push(val.data);
- offset += val.size;
- }
- break;
- }
- case 11: {
- // Date type
- let date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);
- value = date.data;
- offset += date.size;
- break;
- }
- case 12: {
- // Long string type
- let amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
- value = amfLongStr.data;
- offset += amfLongStr.size;
- break;
- }
- default:
- // ignore and skip
- offset = dataSize;
- Log.w('AMF', 'Unsupported AMF value type ' + type);
- }
- } catch (e) {
- Log.e('AMF', e.toString());
- }
-
- return {
- data: value,
- size: offset,
- objectEnd: objectEnd,
- };
- }
-}
-
-export default AMF;
diff --git a/src/flv.js/demux/demux-errors.js b/src/flv.js/demux/demux-errors.js
deleted file mode 100644
index 12cfd68..0000000
--- a/src/flv.js/demux/demux-errors.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const DemuxErrors = {
- OK: 'OK',
- FORMAT_ERROR: 'FormatError',
- FORMAT_UNSUPPORTED: 'FormatUnsupported',
- CODEC_UNSUPPORTED: 'CodecUnsupported',
-};
-
-export default DemuxErrors;
diff --git a/src/flv.js/demux/exp-golomb.js b/src/flv.js/demux/exp-golomb.js
deleted file mode 100644
index c27719b..0000000
--- a/src/flv.js/demux/exp-golomb.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { IllegalStateException, InvalidArgumentException } from '../utils/exception.js';
-
-// Exponential-Golomb buffer decoder
-class ExpGolomb {
- constructor(uint8array) {
- this.TAG = 'ExpGolomb';
-
- this._buffer = uint8array;
- this._buffer_index = 0;
- this._total_bytes = uint8array.byteLength;
- this._total_bits = uint8array.byteLength * 8;
- this._current_word = 0;
- this._current_word_bits_left = 0;
- }
-
- destroy() {
- this._buffer = null;
- }
-
- _fillCurrentWord() {
- let buffer_bytes_left = this._total_bytes - this._buffer_index;
- if (buffer_bytes_left <= 0)
- throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');
-
- let bytes_read = Math.min(4, buffer_bytes_left);
- let word = new Uint8Array(4);
- word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));
- this._current_word = new DataView(word.buffer).getUint32(0, false);
-
- this._buffer_index += bytes_read;
- this._current_word_bits_left = bytes_read * 8;
- }
-
- readBits(bits) {
- if (bits > 32) throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');
-
- if (bits <= this._current_word_bits_left) {
- let result = this._current_word >>> (32 - bits);
- this._current_word <<= bits;
- this._current_word_bits_left -= bits;
- return result;
- }
-
- let result = this._current_word_bits_left ? this._current_word : 0;
- result = result >>> (32 - this._current_word_bits_left);
- let bits_need_left = bits - this._current_word_bits_left;
-
- this._fillCurrentWord();
- let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);
-
- let result2 = this._current_word >>> (32 - bits_read_next);
- this._current_word <<= bits_read_next;
- this._current_word_bits_left -= bits_read_next;
-
- result = (result << bits_read_next) | result2;
- return result;
- }
-
- readBool() {
- return this.readBits(1) === 1;
- }
-
- readByte() {
- return this.readBits(8);
- }
-
- _skipLeadingZero() {
- let zero_count;
- for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {
- if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {
- this._current_word <<= zero_count;
- this._current_word_bits_left -= zero_count;
- return zero_count;
- }
- }
- this._fillCurrentWord();
- return zero_count + this._skipLeadingZero();
- }
-
- readUEG() {
- // unsigned exponential golomb
- let leading_zeros = this._skipLeadingZero();
- return this.readBits(leading_zeros + 1) - 1;
- }
-
- readSEG() {
- // signed exponential golomb
- let value = this.readUEG();
- if (value & 0x01) {
- return (value + 1) >>> 1;
- } else {
- return -1 * (value >>> 1);
- }
- }
-}
-
-export default ExpGolomb;
diff --git a/src/flv.js/demux/flv-demuxer.js b/src/flv.js/demux/flv-demuxer.js
deleted file mode 100644
index b76a21a..0000000
--- a/src/flv.js/demux/flv-demuxer.js
+++ /dev/null
@@ -1,1202 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import AMF from './amf-parser.js';
-import SPSParser from './sps-parser.js';
-import DemuxErrors from './demux-errors.js';
-import MediaInfo from '../core/media-info.js';
-import { IllegalStateException } from '../utils/exception.js';
-import PlayerEvents from '../player/player-events.js';
-import Utils from '../utils/utils.js';
-import Browser from '../utils/browser.js';
-
-function Swap16(src) {
- return ((src >>> 8) & 0xff) | ((src & 0xff) << 8);
-}
-
-function Swap32(src) {
- return (
- ((src & 0xff000000) >>> 24) |
- ((src & 0x00ff0000) >>> 8) |
- ((src & 0x0000ff00) << 8) |
- ((src & 0x000000ff) << 24)
- );
-}
-
-function ReadBig32(array, index) {
- return (array[index] << 24) | (array[index + 1] << 16) | (array[index + 2] << 8) | array[index + 3];
-}
-
-class FLVDemuxer {
- constructor(probeData, config) {
- this.TAG = 'FLVDemuxer';
-
- this._config = config;
-
- this._onError = null;
- this._onMediaInfo = null;
- this._onTrackMetadata = null;
- this._onDataAvailable = null;
- this._onFlvFrameDecoded = null;
- this._onCtsWarning = null;
- this._onFLVDataAbnormal = null;
-
- this._dataOffset = probeData.dataOffset;
- this._firstParse = true;
- this._dispatch = false;
-
- this._hasAudio = probeData.hasAudioTrack;
- this._hasVideo = probeData.hasVideoTrack;
-
- this._hasAudioFlagOverrided = false;
- this._hasVideoFlagOverrided = false;
-
- this._audioInitialMetadataDispatched = false;
- this._videoInitialMetadataDispatched = false;
-
- this._ctsWarning = false;
- this._flvDataAbnormal = false;
- this._hasKeyframe = false;
-
- this._mediaInfo = new MediaInfo();
- this._mediaInfo.hasAudio = this._hasAudio;
- this._mediaInfo.hasVideo = this._hasVideo;
- this._metadata = null;
- this._audioMetadata = null;
- this._videoMetadata = null;
-
- this._naluLengthSize = 4;
- this._timestampBase = 0; // int32, in milliseconds
- this._timescale = 1000;
- this._duration = 0; // int32, in milliseconds
- this._durationOverrided = false;
- this._referenceFrameRate = {
- fixed: true,
- fps: 23.976,
- fps_num: 23976,
- fps_den: 1000,
- };
-
- this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];
-
- this._mpegSamplingRates = [
- 96000,
- 88200,
- 64000,
- 48000,
- 44100,
- 32000,
- 24000,
- 22050,
- 16000,
- 12000,
- 11025,
- 8000,
- 7350,
- ];
-
- this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];
- this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];
- this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];
-
- this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];
- this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];
- this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];
-
- this._videoTrack = { type: 'video', id: 1, sequenceNumber: 0, samples: [], length: 0 };
- this._audioTrack = { type: 'audio', id: 2, sequenceNumber: 0, samples: [], length: 0 };
-
- this._littleEndian = (function () {
- let buf = new ArrayBuffer(2);
- new DataView(buf).setInt16(0, 256, true); // little-endian write
- return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE
- })();
- }
-
- destroy() {
- this._mediaInfo = null;
- this._metadata = null;
- this._audioMetadata = null;
- this._videoMetadata = null;
- this._videoTrack = null;
- this._audioTrack = null;
-
- this._onError = null;
- this._onMediaInfo = null;
- this._onTrackMetadata = null;
- this._onDataAvailable = null;
- this._onFlvFrameDecoded = null;
- this._onCtsWarning = null;
- this._onFLVDataAbnormal = null;
-
- this._ctsWarning = false;
- this._flvDataAbnormal = false;
- this._hasKeyframe = false;
- }
-
- static probe(buffer) {
- let data = new Uint8Array(buffer);
- let mismatch = { match: false };
-
- if (data[0] !== 0x46 || data[1] !== 0x4c || data[2] !== 0x56 || data[3] !== 0x01) {
- return mismatch;
- }
-
- let hasAudio = (data[4] & 4) >>> 2 !== 0;
- let hasVideo = (data[4] & 1) !== 0;
-
- let offset = ReadBig32(data, 5);
-
- if (offset < 9) {
- return mismatch;
- }
-
- return {
- match: true,
- consumed: offset,
- dataOffset: offset,
- hasAudioTrack: hasAudio,
- hasVideoTrack: hasVideo,
- };
- }
-
- bindDataSource(loader) {
- loader.onDataArrival = this.parseChunks.bind(this);
- return this;
- }
-
- // prototype: function(type: string, metadata: any): void
- get onTrackMetadata() {
- return this._onTrackMetadata;
- }
-
- set onTrackMetadata(callback) {
- this._onTrackMetadata = callback;
- }
-
- // prototype: function(mediaInfo: MediaInfo): void
- get onMediaInfo() {
- return this._onMediaInfo;
- }
-
- set onMediaInfo(callback) {
- this._onMediaInfo = callback;
- }
-
- // prototype: function(type: number, info: string): void
- get onError() {
- return this._onError;
- }
-
- set onError(callback) {
- this._onError = callback;
- }
-
- // prototype: function(videoTrack: any, audioTrack: any): void
- get onDataAvailable() {
- return this._onDataAvailable;
- }
-
- set onDataAvailable(callback) {
- this._onDataAvailable = callback;
- }
-
- get onFlvFrameDecoded() {
- return this._onFlvFrameDecoded;
- }
-
- set onFlvFrameDecoded(callback) {
- this._onFlvFrameDecoded = callback;
- }
-
- get onCtsWarning() {
- return this._onCtsWarning;
- }
-
- set onCtsWarning(callback) {
- this._onCtsWarning = callback;
- }
-
- get onFLVDataAbnormal() {
- return this._onFLVDataAbnormal;
- }
-
- set onFLVDataAbnormal(callback) {
- this._onFLVDataAbnormal = callback;
- }
-
- // timestamp base for output samples, must be in milliseconds
- get timestampBase() {
- return this._timestampBase;
- }
-
- set timestampBase(base) {
- this._timestampBase = base;
- }
-
- get overridedDuration() {
- return this._duration;
- }
-
- // Force-override media duration. Must be in milliseconds, int32
- set overridedDuration(duration) {
- this._durationOverrided = true;
- this._duration = duration;
- this._mediaInfo.duration = duration;
- }
-
- // Force-override audio track present flag, boolean
- set overridedHasAudio(hasAudio) {
- this._hasAudioFlagOverrided = true;
- this._hasAudio = hasAudio;
- this._mediaInfo.hasAudio = hasAudio;
- }
-
- // Force-override video track present flag, boolean
- set overridedHasVideo(hasVideo) {
- this._hasVideoFlagOverrided = true;
- this._hasVideo = hasVideo;
- this._mediaInfo.hasVideo = hasVideo;
- }
-
- resetMediaInfo() {
- this._mediaInfo = new MediaInfo();
- }
-
- _isInitialMetadataDispatched() {
- if (this._hasAudio && this._hasVideo) {
- // both audio & video
- return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;
- }
- if (this._hasAudio && !this._hasVideo) {
- // audio only
- return this._audioInitialMetadataDispatched;
- }
- if (!this._hasAudio && this._hasVideo) {
- // video only
- return this._videoInitialMetadataDispatched;
- }
- return false;
- }
-
- // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;
- parseChunks(chunk, byteStart) {
- if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {
- throw new IllegalStateException(
- 'Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified',
- );
- }
-
- let offset = 0;
- let le = this._littleEndian;
-
- if (byteStart === 0) {
- // buffer with FLV header
- if (chunk.byteLength > 13) {
- let probeData = FLVDemuxer.probe(chunk);
- offset = probeData.dataOffset;
- } else {
- return 0;
- }
- }
-
- if (this._firstParse) {
- // handle PreviousTagSize0 before Tag1
- this._firstParse = false;
- if (byteStart + offset !== this._dataOffset) {
- Log.w(this.TAG, 'First time parsing but chunk byteStart invalid!');
- }
-
- let v = new DataView(chunk, offset);
- let prevTagSize0 = v.getUint32(0, !le);
- if (prevTagSize0 !== 0) {
- Log.w(this.TAG, 'PrevTagSize0 !== 0 !!!');
- }
- offset += 4;
- }
-
- while (offset < chunk.byteLength) {
- this._dispatch = true;
-
- let v = new DataView(chunk, offset);
-
- if (offset + 11 + 4 > chunk.byteLength) {
- // data not enough for parsing an flv tag
- break;
- }
-
- let tagType = v.getUint8(0);
- let dataSize = v.getUint32(0, !le) & 0x00ffffff;
-
- if (offset + 11 + dataSize + 4 > chunk.byteLength) {
- // data not enough for parsing actual data body
- break;
- }
-
- if (tagType !== 8 && tagType !== 9 && tagType !== 18) {
- Log.w(this.TAG, `Unsupported tag type ${tagType}, skipped`);
- // consume the whole tag (skip it)
- offset += 11 + dataSize + 4;
- continue;
- }
-
- let ts2 = v.getUint8(4);
- let ts1 = v.getUint8(5);
- let ts0 = v.getUint8(6);
- let ts3 = v.getUint8(7);
-
- let timestamp = ts0 | (ts1 << 8) | (ts2 << 16) | (ts3 << 24);
-
- let streamId = v.getUint32(7, !le) & 0x00ffffff;
- if (streamId !== 0) {
- Log.w(this.TAG, 'Meet tag which has StreamID != 0!');
- }
-
- let dataOffset = offset + 11;
-
- switch (tagType) {
- case 8: // Audio
- this._parseAudioData(chunk, dataOffset, dataSize, timestamp);
- break;
- case 9: // Video
- this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);
- break;
- case 18: // ScriptDataObject
- this._parseScriptData(chunk, dataOffset, dataSize);
- break;
- }
-
- let prevTagSize = v.getUint32(11 + dataSize, !le);
- if (prevTagSize !== 11 + dataSize) {
- Log.w(this.TAG, `Invalid PrevTagSize ${prevTagSize}`);
- }
-
- offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize
- }
-
- // dispatch parsed frames to consumer (typically, the remuxer)
- if (this._isInitialMetadataDispatched()) {
- if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
- this._onDataAvailable(this._audioTrack, this._videoTrack);
- }
- }
-
- return offset; // consumed bytes, just equals latest offset index
- }
-
- _parseScriptData(arrayBuffer, dataOffset, dataSize) {
- let scriptData = AMF.parseScriptData(arrayBuffer, dataOffset, dataSize);
-
- if (scriptData.hasOwnProperty('onMetaData')) {
- if (scriptData.onMetaData == null || typeof scriptData.onMetaData !== 'object') {
- Log.w(this.TAG, 'Invalid onMetaData structure!');
- return;
- }
- if (this._metadata) {
- Log.w(this.TAG, 'Found another onMetaData tag!');
- }
- this._metadata = scriptData;
- let onMetaData = this._metadata.onMetaData;
-
- if (typeof onMetaData.hasAudio === 'boolean') {
- // hasAudio
- if (this._hasAudioFlagOverrided === false) {
- this._hasAudio = onMetaData.hasAudio;
- this._mediaInfo.hasAudio = this._hasAudio;
- }
- }
- if (typeof onMetaData.hasVideo === 'boolean') {
- // hasVideo
- if (this._hasVideoFlagOverrided === false) {
- this._hasVideo = onMetaData.hasVideo;
- this._mediaInfo.hasVideo = this._hasVideo;
- }
- }
- if (typeof onMetaData.audiodatarate === 'number') {
- // audiodatarate
- this._mediaInfo.audioDataRate = onMetaData.audiodatarate;
- }
- if (typeof onMetaData.videodatarate === 'number') {
- // videodatarate
- this._mediaInfo.videoDataRate = onMetaData.videodatarate;
- }
- if (typeof onMetaData.width === 'number') {
- // width
- this._mediaInfo.width = onMetaData.width;
- }
- if (typeof onMetaData.height === 'number') {
- // height
- this._mediaInfo.height = onMetaData.height;
- }
- if (typeof onMetaData.duration === 'number') {
- // duration
- if (!this._durationOverrided) {
- let duration = Math.floor(onMetaData.duration * this._timescale);
- this._duration = duration;
- this._mediaInfo.duration = duration;
- }
- } else {
- this._mediaInfo.duration = 0;
- }
- if (typeof onMetaData.framerate === 'number') {
- // framerate
- let fps_num = Math.floor(onMetaData.framerate * 1000);
- if (fps_num > 0) {
- let fps = fps_num / 1000;
- this._referenceFrameRate.fixed = true;
- this._referenceFrameRate.fps = fps;
- this._referenceFrameRate.fps_num = fps_num;
- this._referenceFrameRate.fps_den = 1000;
- this._mediaInfo.fps = fps;
- }
- }
- if (typeof onMetaData.keyframes === 'object') {
- // keyframes
- this._mediaInfo.hasKeyframesIndex = true;
- let keyframes = onMetaData.keyframes;
- this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);
- onMetaData.keyframes = null; // keyframes has been extracted, remove it
- } else {
- this._mediaInfo.hasKeyframesIndex = false;
- }
- this._dispatch = false;
- this._mediaInfo.metadata = onMetaData;
- Log.v(this.TAG, 'Parsed onMetaData');
- if (this._mediaInfo.isComplete()) {
- this._onMediaInfo(this._mediaInfo);
- }
- }
- }
-
- _parseKeyframesIndex(keyframes) {
- let times = [];
- let filepositions = [];
-
- // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)
- for (let i = 1; i < keyframes.times.length; i++) {
- let time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);
- times.push(time);
- filepositions.push(keyframes.filepositions[i]);
- }
-
- return {
- times: times,
- filepositions: filepositions,
- };
- }
-
- _parseAudioData(arrayBuffer, dataOffset, dataSize, tagTimestamp) {
- if (dataSize <= 1) {
- Log.w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');
- return;
- }
-
- if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {
- // If hasAudio: false indicated explicitly in MediaDataSource,
- // Ignore all the audio packets
- return;
- }
-
- let le = this._littleEndian;
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
-
- let soundSpec = v.getUint8(0);
-
- let soundFormat = soundSpec >>> 4;
- if (soundFormat !== 2 && soundFormat !== 10) {
- // MP3 or AAC
- this._onError(DemuxErrors.CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);
- return;
- }
-
- let soundRate = 0;
- let soundRateIndex = (soundSpec & 12) >>> 2;
- if (soundRateIndex >= 0 && soundRateIndex <= 4) {
- soundRate = this._flvSoundRateTable[soundRateIndex];
- } else {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);
- return;
- }
-
- let soundSize = (soundSpec & 2) >>> 1; // unused
- let soundType = soundSpec & 1;
-
- let meta = this._audioMetadata;
- let track = this._audioTrack;
-
- if (!meta) {
- if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {
- this._hasAudio = true;
- this._mediaInfo.hasAudio = true;
- }
-
- // initial metadata
- meta = this._audioMetadata = {};
- meta.type = 'audio';
- meta.id = track.id;
- meta.timescale = this._timescale;
- meta.duration = this._duration;
- meta.audioSampleRate = soundRate;
- meta.channelCount = soundType === 0 ? 1 : 2;
- }
-
- if (soundFormat === 10) {
- // AAC
- let aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);
- if (aacData == undefined) {
- return;
- }
-
- if (aacData.packetType === 0) {
- // AAC sequence header (AudioSpecificConfig)
- if (meta.config) {
- Log.w(this.TAG, 'Found another AudioSpecificConfig!');
- }
- let misc = aacData.data;
- meta.audioSampleRate = misc.samplingRate;
- meta.channelCount = misc.channelCount;
- meta.codec = misc.codec;
- meta.originalCodec = misc.originalCodec;
- meta.config = misc.config;
- // The decode result of an aac sample is 1024 PCM samples
- meta.refSampleDuration = (1024 / meta.audioSampleRate) * meta.timescale;
- Log.v(this.TAG, 'Parsed AudioSpecificConfig');
-
- if (this._isInitialMetadataDispatched()) {
- // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer
- if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
- this._onDataAvailable(this._audioTrack, this._videoTrack);
- }
- } else {
- this._audioInitialMetadataDispatched = true;
- }
- // then notify new metadata
- this._dispatch = false;
- this._onTrackMetadata('audio', meta);
-
- let mi = this._mediaInfo;
- mi.audioCodec = meta.originalCodec;
- mi.audioSampleRate = meta.audioSampleRate;
- mi.audioChannelCount = meta.channelCount;
- if (mi.hasVideo) {
- if (mi.videoCodec != null) {
- mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
- }
- } else {
- mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"';
- }
- if (mi.isComplete()) {
- this._onMediaInfo(mi);
- }
- } else if (aacData.packetType === 1) {
- // AAC raw frame data
- let dts = this._timestampBase + tagTimestamp;
- let aacSample = { unit: aacData.data, dts: dts, pts: dts };
- track.samples.push(aacSample);
- track.length += aacData.data.length;
- } else {
- Log.e(this.TAG, `Flv: Unsupported AAC data type ${aacData.packetType}`);
- }
- } else if (soundFormat === 2) {
- // MP3
- if (!meta.codec) {
- // We need metadata for mp3 audio track, extract info from frame header
- let misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);
- if (misc == undefined) {
- return;
- }
- meta.audioSampleRate = misc.samplingRate;
- meta.channelCount = misc.channelCount;
- meta.codec = misc.codec;
- meta.originalCodec = misc.originalCodec;
- // The decode result of an mp3 sample is 1152 PCM samples
- meta.refSampleDuration = (1152 / meta.audioSampleRate) * meta.timescale;
- Log.v(this.TAG, 'Parsed MPEG Audio Frame Header');
-
- this._audioInitialMetadataDispatched = true;
- this._onTrackMetadata('audio', meta);
-
- let mi = this._mediaInfo;
- mi.audioCodec = meta.codec;
- mi.audioSampleRate = meta.audioSampleRate;
- mi.audioChannelCount = meta.channelCount;
- mi.audioDataRate = misc.bitRate;
- if (mi.hasVideo) {
- if (mi.videoCodec != null) {
- mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
- }
- } else {
- mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"';
- }
- if (mi.isComplete()) {
- this._onMediaInfo(mi);
- }
- }
-
- // This packet is always a valid audio packet, extract it
- let data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);
- if (data == undefined) {
- return;
- }
- let dts = this._timestampBase + tagTimestamp;
- let mp3Sample = { unit: data, dts: dts, pts: dts };
- track.samples.push(mp3Sample);
- track.length += data.length;
- }
-
- if (this._onFlvFrameDecoded) {
- this._onFlvFrameDecoded(PlayerEvents.AUDIO_FRAME_DECODED, Date.now());
- }
- }
-
- _parseAACAudioData(arrayBuffer, dataOffset, dataSize) {
- if (dataSize <= 1) {
- Log.w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');
- return;
- }
-
- let result = {};
- let array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
-
- result.packetType = array[0];
-
- if (array[0] === 0) {
- result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);
- } else {
- result.data = array.subarray(1);
- }
-
- return result;
- }
-
- _parseAACAudioSpecificConfig(arrayBuffer, dataOffset, dataSize) {
- let array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
- let config = null;
-
- /* Audio Object Type:
- 0: Null
- 1: AAC Main
- 2: AAC LC
- 3: AAC SSR (Scalable Sample Rate)
- 4: AAC LTP (Long Term Prediction)
- 5: HE-AAC / SBR (Spectral Band Replication)
- 6: AAC Scalable
- */
-
- let audioObjectType = 0;
- let originalAudioObjectType = 0;
- let audioExtensionObjectType = null;
- let samplingIndex = 0;
- let extensionSamplingIndex = null;
-
- // 5 bits
- audioObjectType = originalAudioObjectType = array[0] >>> 3;
- // 4 bits
- samplingIndex = ((array[0] & 0x07) << 1) | (array[1] >>> 7);
- if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');
- return;
- }
-
- let samplingFrequence = this._mpegSamplingRates[samplingIndex];
-
- // 4 bits
- let channelConfig = (array[1] & 0x78) >>> 3;
- if (channelConfig < 0 || channelConfig >= 8) {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: AAC invalid channel configuration');
- return;
- }
-
- if (audioObjectType === 5) {
- // HE-AAC?
- // 4 bits
- extensionSamplingIndex = ((array[1] & 0x07) << 1) | (array[2] >>> 7);
- // 5 bits
- audioExtensionObjectType = (array[2] & 0x7c) >>> 2;
- }
-
- // workarounds for various browsers
- let userAgent = self.navigator.userAgent.toLowerCase();
-
- if (userAgent.indexOf('firefox') !== -1) {
- // firefox: use SBR (HE-AAC) if freq less than 24kHz
- if (samplingIndex >= 6) {
- audioObjectType = 5;
- config = new Array(4);
- extensionSamplingIndex = samplingIndex - 3;
- } else {
- // use LC-AAC
- audioObjectType = 2;
- config = new Array(2);
- extensionSamplingIndex = samplingIndex;
- }
- } else if (userAgent.indexOf('android') !== -1) {
- // android: always use LC-AAC
- audioObjectType = 2;
- config = new Array(2);
- extensionSamplingIndex = samplingIndex;
- } else {
- // for other browsers, e.g. chrome...
- // Always use HE-AAC to make it easier to switch aac codec profile
- audioObjectType = 5;
- extensionSamplingIndex = samplingIndex;
- config = new Array(4);
-
- if (samplingIndex >= 6) {
- extensionSamplingIndex = samplingIndex - 3;
- } else if (channelConfig === 1) {
- // Mono channel
- audioObjectType = 2;
- config = new Array(2);
- extensionSamplingIndex = samplingIndex;
- }
- }
-
- config[0] = audioObjectType << 3;
- config[0] |= (samplingIndex & 0x0f) >>> 1;
- config[1] = (samplingIndex & 0x0f) << 7;
- config[1] |= (channelConfig & 0x0f) << 3;
- if (audioObjectType === 5) {
- config[1] |= (extensionSamplingIndex & 0x0f) >>> 1;
- config[2] = (extensionSamplingIndex & 0x01) << 7;
- // extended audio object type: force to 2 (LC-AAC)
- config[2] |= 2 << 2;
- config[3] = 0;
- }
-
- return {
- config: config,
- samplingRate: samplingFrequence,
- channelCount: channelConfig,
- codec: 'mp4a.40.' + audioObjectType,
- originalCodec: 'mp4a.40.' + originalAudioObjectType,
- };
- }
-
- _parseMP3AudioData(arrayBuffer, dataOffset, dataSize, requestHeader) {
- if (dataSize < 4) {
- Log.w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');
- return;
- }
-
- let le = this._littleEndian;
- let array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
- let result = null;
-
- if (requestHeader) {
- if (array[0] !== 0xff) {
- return;
- }
- let ver = (array[1] >>> 3) & 0x03;
- let layer = (array[1] & 0x06) >> 1;
-
- let bitrate_index = (array[2] & 0xf0) >>> 4;
- let sampling_freq_index = (array[2] & 0x0c) >>> 2;
-
- let channel_mode = (array[3] >>> 6) & 0x03;
- let channel_count = channel_mode !== 3 ? 2 : 1;
-
- let sample_rate = 0;
- let bit_rate = 0;
- let object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types
-
- let codec = 'mp3';
-
- switch (ver) {
- case 0: // MPEG 2.5
- sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];
- break;
- case 2: // MPEG 2
- sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];
- break;
- case 3: // MPEG 1
- sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];
- break;
- }
-
- switch (layer) {
- case 1: // Layer 3
- object_type = 34;
- if (bitrate_index < this._mpegAudioL3BitRateTable.length) {
- bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];
- }
- break;
- case 2: // Layer 2
- object_type = 33;
- if (bitrate_index < this._mpegAudioL2BitRateTable.length) {
- bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];
- }
- break;
- case 3: // Layer 1
- object_type = 32;
- if (bitrate_index < this._mpegAudioL1BitRateTable.length) {
- bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];
- }
- break;
- }
-
- result = {
- bitRate: bit_rate,
- samplingRate: sample_rate,
- channelCount: channel_count,
- codec: codec,
- originalCodec: codec,
- };
- } else {
- result = array;
- }
-
- return result;
- }
-
- _parseVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {
- if (dataSize <= 1) {
- Log.w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');
- return;
- }
-
- if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {
- // If hasVideo: false indicated explicitly in MediaDataSource,
- // Ignore all the video packets
- return;
- }
-
- let spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0];
-
- let frameType = (spec & 240) >>> 4;
- let codecId = spec & 15;
-
- if (codecId !== 7) {
- this._onError(DemuxErrors.CODEC_UNSUPPORTED, `Flv: Unsupported codec in video frame: ${codecId}`);
- return;
- }
-
- this._parseAVCVideoPacket(arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);
-
- if (this._onFlvFrameDecoded) {
- this._onFlvFrameDecoded(PlayerEvents.VIDEO_FRAME_DECODED, Date.now());
- }
- }
-
- _parseAVCVideoPacket(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {
- if (dataSize < 4) {
- Log.w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');
- return;
- }
-
- let le = this._littleEndian;
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
-
- let packetType = v.getUint8(0);
- let cts_unsigned = v.getUint32(0, !le) & 0x00ffffff;
- let cts = (cts_unsigned << 8) >> 8; // convert to 24-bit signed int
- //cts warning
- if (this._ctsWarning === false && (cts > 500 || cts < 0)) {
- if (this._onCtsWarning) {
- this._ctsWarning = true;
- let params = { cts: cts, dts: this.timestampBase + tagTimestamp };
- this._onCtsWarning(PlayerEvents.CTS_WARNING, params);
- }
- }
-
- if (packetType === 0) {
- // AVCDecoderConfigurationRecord
- this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);
- } else if (packetType === 1) {
- // One or more Nalus
- this._parseAVCVideoData(
- arrayBuffer,
- dataOffset + 4,
- dataSize - 4,
- tagTimestamp,
- tagPosition,
- frameType,
- cts,
- );
- } else if (packetType === 2) {
- // empty, AVC end of sequence
- } else {
- this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Invalid video packet type ${packetType}`);
- return;
- }
- }
-
- _parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {
- if (dataSize < 7) {
- Log.w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');
- return;
- }
-
- let meta = this._videoMetadata;
- let track = this._videoTrack;
- let le = this._littleEndian;
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
-
- if (!meta) {
- if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {
- this._hasVideo = true;
- this._mediaInfo.hasVideo = true;
- }
-
- meta = this._videoMetadata = {};
- meta.type = 'video';
- meta.id = track.id;
- meta.timescale = this._timescale;
- meta.duration = this._duration;
- } else {
- if (typeof meta.avcc !== 'undefined') {
- Log.w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');
- }
- }
-
- let version = v.getUint8(0); // configurationVersion
- let avcProfile = v.getUint8(1); // avcProfileIndication
- let profileCompatibility = v.getUint8(2); // profile_compatibility
- let avcLevel = v.getUint8(3); // AVCLevelIndication
-
- if (version !== 1 || avcProfile === 0) {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');
- return;
- }
-
- this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne
- // if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) { // holy shit!!!
- // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize - 1}`);
- // return;
- // }
-
- let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets
- if (spsCount === 0) {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');
- return;
- } else if (spsCount > 1) {
- Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);
- }
-
- let offset = 6;
-
- for (let i = 0; i < spsCount; i++) {
- let len = v.getUint16(offset, !le); // sequenceParameterSetLength
- offset += 2;
-
- if (len === 0) {
- continue;
- }
-
- // Notice: Nalu without startcode header (00 00 00 01)
- let sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);
- offset += len;
-
- let config = SPSParser.parseSPS(sps);
- if (i !== 0) {
- // ignore other sps's config
- continue;
- }
-
- meta.codecWidth = config.codec_size.width;
- meta.codecHeight = config.codec_size.height;
- meta.presentWidth = config.present_size.width;
- meta.presentHeight = config.present_size.height;
-
- meta.profile = config.profile_string;
- meta.level = config.level_string;
- meta.bitDepth = config.bit_depth;
- meta.chromaFormat = config.chroma_format;
- meta.sarRatio = config.sar_ratio;
- meta.frameRate = config.frame_rate;
-
- if (
- config.frame_rate.fixed === false ||
- config.frame_rate.fps_num === 0 ||
- config.frame_rate.fps_den === 0
- ) {
- meta.frameRate = this._referenceFrameRate;
- }
-
- let fps_den = meta.frameRate.fps_den;
- let fps_num = meta.frameRate.fps_num;
- meta.refSampleDuration = meta.timescale * (fps_den / fps_num);
-
- let codecArray = sps.subarray(1, 4);
- let codecString = 'avc1.';
- for (let j = 0; j < 3; j++) {
- let h = codecArray[j].toString(16);
- if (h.length < 2) {
- h = '0' + h;
- }
- codecString += h;
- }
- meta.codec = codecString;
-
- let mi = this._mediaInfo;
- mi.width = meta.codecWidth;
- mi.height = meta.codecHeight;
- mi.fps = meta.frameRate.fps;
- mi.profile = meta.profile;
- mi.level = meta.level;
- mi.chromaFormat = config.chroma_format_string;
- mi.sarNum = meta.sarRatio.width;
- mi.sarDen = meta.sarRatio.height;
- mi.videoCodec = codecString;
-
- if (mi.hasAudio) {
- if (mi.audioCodec != null) {
- mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
- }
- } else {
- mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + '"';
- }
- if (mi.isComplete()) {
- this._onMediaInfo(mi);
- }
- }
-
- let ppsCount = v.getUint8(offset); // numOfPictureParameterSets
- if (ppsCount === 0) {
- this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');
- return;
- } else if (ppsCount > 1) {
- Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);
- }
-
- offset++;
-
- for (let i = 0; i < ppsCount; i++) {
- let len = v.getUint16(offset, !le); // pictureParameterSetLength
- offset += 2;
-
- if (len === 0) {
- continue;
- }
-
- // pps is useless for extracting video information
- offset += len;
- }
-
- meta.avcc = new Uint8Array(dataSize);
- meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);
- Log.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');
-
- if (this._isInitialMetadataDispatched()) {
- // flush parsed frames
- if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
- this._onDataAvailable(this._audioTrack, this._videoTrack);
- }
- } else {
- this._videoInitialMetadataDispatched = true;
- }
- // notify new metadata
- this._dispatch = false;
- this._onTrackMetadata('video', meta);
- }
-
- _parseAVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {
- let le = this._littleEndian;
- let v = new DataView(arrayBuffer, dataOffset, dataSize);
-
- let units = [],
- length = 0;
-
- let offset = 0;
- const lengthSize = this._naluLengthSize;
- let dts = this._timestampBase + tagTimestamp;
- let keyframe = frameType === 1; // from FLV Frame Type constants
-
- while (offset < dataSize) {
- if (offset + 4 >= dataSize) {
- Log.w(this.TAG, `Malformed Nalu near timestamp ${dts}, offset = ${offset}, dataSize = ${dataSize}`);
- break; // data not enough for next Nalu
- }
- // Nalu with length-header (AVC1)
- let naluSize = v.getUint32(offset, !le); // Big-Endian read
- if (lengthSize < 4) {
- naluSize >>>= 8 * (4 - lengthSize);
- }
- if (naluSize > dataSize - lengthSize) {
- Log.w(this.TAG, `Malformed Nalus near timestamp ${dts}, NaluSize > DataSize!`);
- return;
- }
-
- let unitType = v.getUint8(offset + lengthSize) & 0x1f;
-
- if (unitType === 5) {
- // IDR
- keyframe = true;
- }
-
- let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);
- // workaround for safari if NaluLengthSizeMinusOne less than 4
- if (Browser.safari && lengthSize < 4) {
- const naluSizeComplement = new Uint8Array(4 - lengthSize);
- data = Utils.concatUint8Array(naluSizeComplement, data);
- }
- let unit = { type: unitType, data: data };
- units.push(unit);
- length += data.byteLength;
-
- offset += lengthSize + naluSize;
- }
-
- if (units.length) {
- let track = this._videoTrack;
- let avcSample = {
- units: units,
- length: length,
- isKeyframe: keyframe,
- dts: dts,
- cts: cts,
- pts: dts + cts,
- };
- if (keyframe) {
- avcSample.fileposition = tagPosition;
- }
- track.samples.push(avcSample);
- track.length += length;
-
- if (!this._flvDataAbnormal && this._onFLVDataAbnormal) {
- if (!this._hasKeyframe && frameType === 1) {
- for (let i = 0; i < units.length; i++) {
- if (units[i].type === 5) {
- break;
- }
- if (i === units.length - 1) {
- this._flvDataAbnormal = true;
- let params = { type: 1, dts: dts };
- this._onFLVDataAbnormal(PlayerEvents.FLV_DATA_ABNORMAL, params);
- }
- }
- } else if (frameType === 2 && units.length > 1) {
- for (let j = 0; j < units.length; j++) {
- if (units[j].type === 5) {
- this._flvDataAbnormal = true;
- let params = { type: 2, dts: dts };
- this._onFLVDataAbnormal(PlayerEvents.FLV_DATA_ABNORMAL, params);
- break;
- }
- }
- }
- }
- if (keyframe) {
- this._hasKeyframe = true;
- }
- }
- }
-}
-
-export default FLVDemuxer;
diff --git a/src/flv.js/demux/sps-parser.js b/src/flv.js/demux/sps-parser.js
deleted file mode 100644
index 5ef506d..0000000
--- a/src/flv.js/demux/sps-parser.js
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import ExpGolomb from './exp-golomb.js';
-
-class SPSParser {
- static _ebsp2rbsp(uint8array) {
- let src = uint8array;
- let src_length = src.byteLength;
- let dst = new Uint8Array(src_length);
- let dst_idx = 0;
-
- for (let i = 0; i < src_length; i++) {
- if (i >= 2) {
- // Unescape: Skip 0x03 after 00 00
- if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {
- continue;
- }
- }
- dst[dst_idx] = src[i];
- dst_idx++;
- }
-
- return new Uint8Array(dst.buffer, 0, dst_idx);
- }
-
- static parseSPS(uint8array) {
- let rbsp = SPSParser._ebsp2rbsp(uint8array);
- let gb = new ExpGolomb(rbsp);
-
- gb.readByte();
- let profile_idc = gb.readByte(); // profile_idc
- gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]
- let level_idc = gb.readByte(); // level_idc
- gb.readUEG(); // seq_parameter_set_id
-
- let profile_string = SPSParser.getProfileString(profile_idc);
- let level_string = SPSParser.getLevelString(level_idc);
- let chroma_format_idc = 1;
- let chroma_format = 420;
- let chroma_format_table = [0, 420, 422, 444];
- let bit_depth = 8;
-
- if (
- profile_idc === 100 ||
- profile_idc === 110 ||
- profile_idc === 122 ||
- profile_idc === 244 ||
- profile_idc === 44 ||
- profile_idc === 83 ||
- profile_idc === 86 ||
- profile_idc === 118 ||
- profile_idc === 128 ||
- profile_idc === 138 ||
- profile_idc === 144
- ) {
- chroma_format_idc = gb.readUEG();
- if (chroma_format_idc === 3) {
- gb.readBits(1); // separate_colour_plane_flag
- }
- if (chroma_format_idc <= 3) {
- chroma_format = chroma_format_table[chroma_format_idc];
- }
-
- bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8
- gb.readUEG(); // bit_depth_chroma_minus8
- gb.readBits(1); // qpprime_y_zero_transform_bypass_flag
- if (gb.readBool()) {
- // seq_scaling_matrix_present_flag
- let scaling_list_count = chroma_format_idc !== 3 ? 8 : 12;
- for (let i = 0; i < scaling_list_count; i++) {
- if (gb.readBool()) {
- // seq_scaling_list_present_flag
- if (i < 6) {
- SPSParser._skipScalingList(gb, 16);
- } else {
- SPSParser._skipScalingList(gb, 64);
- }
- }
- }
- }
- }
- gb.readUEG(); // log2_max_frame_num_minus4
- let pic_order_cnt_type = gb.readUEG();
- if (pic_order_cnt_type === 0) {
- gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4
- } else if (pic_order_cnt_type === 1) {
- gb.readBits(1); // delta_pic_order_always_zero_flag
- gb.readSEG(); // offset_for_non_ref_pic
- gb.readSEG(); // offset_for_top_to_bottom_field
- let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();
- for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {
- gb.readSEG(); // offset_for_ref_frame
- }
- }
- gb.readUEG(); // max_num_ref_frames
- gb.readBits(1); // gaps_in_frame_num_value_allowed_flag
-
- let pic_width_in_mbs_minus1 = gb.readUEG();
- let pic_height_in_map_units_minus1 = gb.readUEG();
-
- let frame_mbs_only_flag = gb.readBits(1);
- if (frame_mbs_only_flag === 0) {
- gb.readBits(1); // mb_adaptive_frame_field_flag
- }
- gb.readBits(1); // direct_8x8_inference_flag
-
- let frame_crop_left_offset = 0;
- let frame_crop_right_offset = 0;
- let frame_crop_top_offset = 0;
- let frame_crop_bottom_offset = 0;
-
- let frame_cropping_flag = gb.readBool();
- if (frame_cropping_flag) {
- frame_crop_left_offset = gb.readUEG();
- frame_crop_right_offset = gb.readUEG();
- frame_crop_top_offset = gb.readUEG();
- frame_crop_bottom_offset = gb.readUEG();
- }
-
- let sar_width = 1,
- sar_height = 1;
- let fps = 0,
- fps_fixed = true,
- fps_num = 0,
- fps_den = 0;
-
- let vui_parameters_present_flag = gb.readBool();
- if (vui_parameters_present_flag) {
- if (gb.readBool()) {
- // aspect_ratio_info_present_flag
- let aspect_ratio_idc = gb.readByte();
- let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];
- let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];
-
- if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {
- sar_width = sar_w_table[aspect_ratio_idc - 1];
- sar_height = sar_h_table[aspect_ratio_idc - 1];
- } else if (aspect_ratio_idc === 255) {
- sar_width = (gb.readByte() << 8) | gb.readByte();
- sar_height = (gb.readByte() << 8) | gb.readByte();
- }
- }
-
- if (gb.readBool()) {
- // overscan_info_present_flag
- gb.readBool(); // overscan_appropriate_flag
- }
- if (gb.readBool()) {
- // video_signal_type_present_flag
- gb.readBits(4); // video_format & video_full_range_flag
- if (gb.readBool()) {
- // colour_description_present_flag
- gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients
- }
- }
- if (gb.readBool()) {
- // chroma_loc_info_present_flag
- gb.readUEG(); // chroma_sample_loc_type_top_field
- gb.readUEG(); // chroma_sample_loc_type_bottom_field
- }
- if (gb.readBool()) {
- // timing_info_present_flag
- let num_units_in_tick = gb.readBits(32);
- let time_scale = gb.readBits(32);
- fps_fixed = gb.readBool(); // fixed_frame_rate_flag
-
- fps_num = time_scale;
- fps_den = num_units_in_tick * 2;
- fps = fps_num / fps_den;
- }
- }
-
- let sarScale = 1;
- if (sar_width !== 1 || sar_height !== 1) {
- sarScale = sar_width / sar_height;
- }
-
- let crop_unit_x = 0,
- crop_unit_y = 0;
- if (chroma_format_idc === 0) {
- crop_unit_x = 1;
- crop_unit_y = 2 - frame_mbs_only_flag;
- } else {
- let sub_wc = chroma_format_idc === 3 ? 1 : 2;
- let sub_hc = chroma_format_idc === 1 ? 2 : 1;
- crop_unit_x = sub_wc;
- crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);
- }
-
- let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;
- let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);
-
- codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;
- codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;
-
- let present_width = Math.ceil(codec_width * sarScale);
-
- gb.destroy();
- gb = null;
-
- return {
- profile_string: profile_string, // baseline, high, high10, ...
- level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...
- bit_depth: bit_depth, // 8bit, 10bit, ...
- chroma_format: chroma_format, // 4:2:0, 4:2:2, ...
- chroma_format_string: SPSParser.getChromaFormatString(chroma_format),
-
- frame_rate: {
- fixed: fps_fixed,
- fps: fps,
- fps_den: fps_den,
- fps_num: fps_num,
- },
-
- sar_ratio: {
- width: sar_width,
- height: sar_height,
- },
-
- codec_size: {
- width: codec_width,
- height: codec_height,
- },
-
- present_size: {
- width: present_width,
- height: codec_height,
- },
- };
- }
-
- static _skipScalingList(gb, count) {
- let last_scale = 8,
- next_scale = 8;
- let delta_scale = 0;
- for (let i = 0; i < count; i++) {
- if (next_scale !== 0) {
- delta_scale = gb.readSEG();
- next_scale = (last_scale + delta_scale + 256) % 256;
- }
- last_scale = next_scale === 0 ? last_scale : next_scale;
- }
- }
-
- static getProfileString(profile_idc) {
- switch (profile_idc) {
- case 66:
- return 'Baseline';
- case 77:
- return 'Main';
- case 88:
- return 'Extended';
- case 100:
- return 'High';
- case 110:
- return 'High10';
- case 122:
- return 'High422';
- case 244:
- return 'High444';
- default:
- return 'Unknown';
- }
- }
-
- static getLevelString(level_idc) {
- return (level_idc / 10).toFixed(1);
- }
-
- static getChromaFormatString(chroma) {
- switch (chroma) {
- case 420:
- return '4:2:0';
- case 422:
- return '4:2:2';
- case 444:
- return '4:4:4';
- default:
- return 'Unknown';
- }
- }
-}
-
-export default SPSParser;
diff --git a/src/flv.js/index.d.ts b/src/flv.js/index.d.ts
deleted file mode 100644
index 18f19f9..0000000
--- a/src/flv.js/index.d.ts
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// flv.js TypeScript definition file
-
-declare namespace flvjs {
- interface MediaSegment {
- duration: number;
- filesize?: number;
- url: string;
- }
-
- interface MediaDataSource {
- type: string;
- isLive?: boolean;
- cors?: boolean;
- withCredentials?: boolean;
-
- hasAudio?: boolean;
- hasVideo?: boolean;
-
- duration?: number;
- filesize?: number;
- url?: string;
-
- segments?: MediaSegment[];
- }
-
- interface Config {
- /**
- * @desc Enable separated thread for transmuxing (unstable for now)
- * @defaultvalue false
- */
- enableWorker?: boolean;
- /**
- * @desc Enable IO stash buffer. Set to false if you need realtime (minimal latency) for live stream
- * playback, but may stalled if there's network jittering.
- * @defaultvalue true
- */
- enableStashBuffer?: boolean;
- /**
- * @desc Indicates IO stash buffer initial size. Default is `384KB`. Indicate a suitable size can
- * improve video load/seek time.
- */
- stashInitialSize?: number;
-
- /**
- * @desc Same to `isLive` in **MediaDataSource**, ignored if has been set in MediaDataSource structure.
- * @defaultvalue false
- */
- isLive?: boolean;
-
- /**
- * @desc Abort the http connection if there's enough data for playback.
- * @defaultvalue true
- */
- lazyLoad?: boolean;
- /**
- * @desc Indicates how many seconds of data to be kept for `lazyLoad`.
- * @defaultvalue 3 * 60
- */
- lazyLoadMaxDuration?: number;
- /**
- * @desc Indicates the `lazyLoad` recover time boundary in seconds.
- * @defaultvalue 30
- */
- lazyLoadRecoverDuration?: number;
- /**
- * @desc Do load after MediaSource `sourceopen` event triggered. On Chrome, tabs which
- * be opened in background may not trigger `sourceopen` event until switched to that tab.
- * @defaultvalue true
- */
- deferLoadAfterSourceOpen?: boolean;
-
- /**
- * @desc Do auto cleanup for SourceBuffer
- * @defaultvalue false (from docs)
- */
- autoCleanupSourceBuffer?: boolean;
- /**
- * @desc When backward buffer duration exceeded this value (in seconds), do auto cleanup for SourceBuffer
- * @defaultvalue 3 * 60
- */
- autoCleanupMaxBackwardDuration?: number;
- /**
- * @desc Indicates the duration in seconds to reserve for backward buffer when doing auto cleanup.
- * @defaultvalue 2 * 60
- */
- autoCleanupMinBackwardDuration?: number;
-
- /**
- * @defaultvalue 600
- */
- statisticsInfoReportInterval?: number;
-
- /**
- * @desc Fill silent audio frames to avoid a/v unsync when detect large audio timestamp gap.
- * @defaultvalue true
- */
- fixAudioTimestampGap?: boolean;
-
- /**
- * @desc Accurate seek to any frame, not limited to video IDR frame, but may a bit slower.
- * Available on Chrome > 50, FireFox and Safari.
- * @defaultvalue false
- */
- accurateSeek?: boolean;
- /**
- * @desc 'range' use range request to seek, or 'param' add params into url to indicate request range.
- * @defaultvalue 'range'
- */
- seekType?: 'range' | 'param' | 'custom';
- /**
- * @desc Indicates seek start parameter name for seekType = 'param'
- * @defaultvalue 'bstart'
- */
- seekParamStart?: string;
- /**
- * @desc Indicates seek end parameter name for seekType = 'param'
- * @defaultvalue 'bend'
- */
- seekParamEnd?: string;
- /**
- * @desc Send Range: bytes=0- for first time load if use Range seek
- * @defaultvalue false
- */
- rangeLoadZeroStart?: boolean;
- /**
- * @desc Indicates a custom seek handler
- * @desc Should implement `SeekHandler` interface
- */
- customSeekHandler?: CustomSeekHandlerConstructor;
- /**
- * @desc Reuse 301/302 redirected url for subsequence request like seek, reconnect, etc.
- * @defaultvalue false
- */
- reuseRedirectedURL?: boolean;
- /**
- * @desc Indicates the Referrer Policy when using FetchStreamLoader
- * @defaultvalue 'no-referrer-when-downgrade' (from docs)
- */
- referrerPolicy?: ReferrerPolicy;
- /**
- * @desc Indicates additional headers that will be added to request
- */
- headers?: {
- [k: string]: string
- }
- /**
- * @desc Should implement `BaseLoader` interface
- */
- customLoader?: CustomLoaderConstructor;
- }
-
- interface CustomSeekHandlerConstructor {
- new(): SeekHandler;
- }
-
- interface SeekHandler {
- getConfig(sourceURL: string, range: Range): SeekConfig;
- removeURLParameters(url: string): string;
- }
-
- interface SeekConfig {
- url: string;
- headers: Headers | object;
- }
-
- interface BaseLoaderConstructor {
- new(typeName: string): BaseLoader;
- }
-
- interface BaseLoader {
- _status: number;
- _needStash: boolean;
-
- destroy(): void;
- isWorking(): boolean;
- readonly type: string;
- readonly status: number;
- readonly needStashBuffer: boolean;
- onContentLengthKnown: (contentLength: number) => void;
- onURLRedirect: (redirectedURL: string) => void;
- onDataArrival: (chunk: ArrayBuffer, byteStart: number, receivedLength?: number) => void;
- onError: (errorType: LoaderErrors, errorInfo: LoaderErrorMessage) => void;
- onComplete: (rangeFrom: number, rangeTo: number) => void;
- open(dataSource: MediaSegment, range: Range): void;
- abort(): void;
- }
-
- interface CustomLoaderConstructor {
- new(seekHandler: SeekHandler, config: Config): BaseLoader;
- }
-
- interface Range {
- from: number;
- to: number;
- }
-
- interface LoaderStatus {
- readonly kIdle: 0;
- readonly kConnecting: 1;
- readonly kBuffering: 2;
- readonly kError: 3;
- readonly kComplete: 4;
- }
-
- interface LoaderErrors {
- readonly OK: 'OK';
- readonly EXCEPTION: 'Exception';
- readonly HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid';
- readonly CONNECTING_TIMEOUT: 'ConnectingTimeout';
- readonly EARLY_EOF: 'EarlyEof';
- readonly UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof';
- }
-
- interface LoaderErrorMessage {
- code: number;
- msg: string;
- }
-
- interface FeatureList {
- mseFlvPlayback: boolean;
- mseLiveFlvPlayback: boolean;
- networkStreamIO: boolean;
- networkLoaderName: string;
- nativeMP4H264Playback: boolean;
- nativeWebmVP8Playback: boolean;
- nativeWebmVP9Playback: boolean;
- }
-
- interface PlayerConstructor {
- new(mediaDataSource: MediaDataSource, config?: Config): Player;
- }
-
- interface Player {
- destroy(): void;
- on(event: string, listener: (...args: any[]) => void): void;
- off(event: string, listener: (...args: any[]) => void): void;
- attachMediaElement(mediaElement: HTMLMediaElement): void;
- detachMediaElement(): void;
- load(): void;
- unload(): void;
- play(): Promise | void;
- pause(): void;
- seek(offset: number): void;
- type: 'NativePlayer' | 'FlvPlayer';
- buffered: TimeRanges;
- duration: number;
- volume: number;
- muted: boolean;
- currentTime: number;
- /**
- * @deprecated FlvPlayer/NativePlayer have its own `mediaInfo` field.
- * @desc Keep it for backwards compatibility
- * @since 1.4
- */
- mediaInfo: NativePlayerMediaInfo | FlvPlayerMediaInfo;
- /**
- * @deprecated FlvPlayer/NativePlayer have its own `statisticsInfo` field.
- * @desc Keep it for backwards compatibility
- * @since 1.4
- */
- statisticsInfo: NativePlayerStatisticsInfo | FlvPlayerStatisticsInfo;
-
- createdTime: number;
- one(event: string, listener: (...args: any[]) => void): void;
- _transmuxer: {
- _controller: {
- _ioctl: {
- _speedSampler: {
- averageKBps: number;
- lastSecondKBps: number;
- }
- }
- }
- };
- _emitter: {
- removeAllListeners: (v: string) => void;
- }
- }
-
- interface NativePlayerStatisticsInfo {
- playerType: 'NativePlayer';
- url: string;
- redirectedURL?: string;
- decodedFrames?: number;
- droppedFrames?: number;
- }
-
- interface FlvPlayerReportStatisticsInfo {
- url: string;
- hasRedirect: boolean;
- redirectedURL?: string;
- speed: number; // KB/s
- loaderType: string;
- currentSegmentIndex: number;
- totalSegmentCount: number;
- }
-
- interface FlvPlayerStatisticsInfo extends Partial {
- playerType: 'FlvPlayer';
- redirectedURL?: string;
- decodedFrames?: number;
- droppedFrames?: number;
- }
-
- interface NativePlayerMediaInfo {
- mimeType: string;
- duration?: number;
- width?: number;
- height?: number;
- }
-
- interface FlvPlayerMediaInfo extends NativePlayerMediaInfo {
- audioCodec?: string;
- videoCodec?: string;
- audioDataRate?: number;
- videoDataRate?: number;
- hasAudio?: boolean;
- hasVideo?: boolean;
- chromaFormat?: string;
- fps?: number;
-
- [k: string]: any;
- }
-
- interface FlvPlayer extends Player {
- mediaInfo: FlvPlayerMediaInfo;
- statisticsInfo: FlvPlayerStatisticsInfo;
- }
-
- interface NativePlayer extends Player {
- mediaInfo: NativePlayerMediaInfo;
- statisticsInfo: NativePlayerStatisticsInfo;
- }
-
- interface LoggingControlConfig {
- forceGlobalTag: boolean;
- globalTag: string;
- enableAll: boolean;
- enableDebug: boolean;
- enableVerbose: boolean;
- enableInfo: boolean;
- enableWarn: boolean;
- enableError: boolean;
- }
-
- interface LoggingControl extends LoggingControlConfig {
- getConfig(): LoggingControlConfig;
- applyConfig(config: Partial): void;
- addLogListener(listener: (...args: any[]) => void): void;
- removeLogListener(listener: (...args: any[]) => void): void;
- }
-
- interface Events {
- ERROR: string;
- LOADING_COMPLETE: string;
- RECOVERED_EARLY_EOF: string;
- MEDIA_INFO: string;
- METADATA_ARRIVED: string;
- SCRIPTDATA_ARRIVED: string;
- STATISTICS_INFO: string;
-
- HTTP_REQUEST_ENDED: string;
- P2P_REQUEST_ENDED: string;
- HTTP_HEADER_RECEIVED: string;
- AUDIO_FRAME_DECODED: string;
- VIDEO_FRAME_DECODED: string;
- CTS_WARNING: string;
- FLV_DATA_ABNORMAL: string;
- LOADING_STARTED: string;
- }
-
- interface ErrorTypes {
- NETWORK_ERROR: string;
- MEDIA_ERROR: string;
- OTHER_ERROR: string;
- }
-
- interface ErrorDetails {
- NETWORK_EXCEPTION: string;
- NETWORK_STATUS_CODE_INVALID: string;
- NETWORK_TIMEOUT: string;
- NETWORK_UNRECOVERABLE_EARLY_EOF: string;
-
- MEDIA_MSE_ERROR: string;
-
- MEDIA_FORMAT_ERROR: string;
- MEDIA_FORMAT_UNSUPPORTED: string;
- MEDIA_CODEC_UNSUPPORTED: string;
-
- ABNORMAL_SEGMENT_BYTELENGTH: string;
- }
-}
-
-declare var flvjs: {
- createPlayer(mediaDataSource: flvjs.MediaDataSource, config?: flvjs.Config): flvjs.Player;
- isSupported(): boolean;
- getFeatureList(): flvjs.FeatureList;
-
- /**
- * @deprecated Use `FlvJs.BaseLoaderConstructor` instead.
- * Because it's not available on `flvjs` variable.
- * @desc implement interface `BaseLoader`
- * @since 1.4
- */
- BaseLoader: flvjs.BaseLoaderConstructor;
- /**
- * @deprecated Use `FlvJs.BaseLoaderConstructor` instead.
- * Because it's not available on `flvjs` variable.
- * @since 1.4
- */
- LoaderStatus: flvjs.LoaderStatus;
- /**
- * @deprecated Use `FlvJs.BaseLoaderConstructor` instead.
- * Because it's not available on `flvjs` variable.
- * @since 1.4
- */
- LoaderErrors: flvjs.LoaderErrors;
-
- readonly version: string;
-
- readonly Events: Readonly;
- readonly ErrorTypes: Readonly;
- readonly ErrorDetails: Readonly;
-
- readonly FlvPlayer: flvjs.PlayerConstructor;
- readonly NativePlayer: flvjs.PlayerConstructor;
- readonly LoggingControl: flvjs.LoggingControl;
-};
-
-export default flvjs;
\ No newline at end of file
diff --git a/src/flv.js/index.js b/src/flv.js/index.js
deleted file mode 100644
index 9f520da..0000000
--- a/src/flv.js/index.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Polyfill from './utils/polyfill.js';
-import Features from './core/features.js';
-import FlvPlayer from './player/flv-player.js';
-import NativePlayer from './player/native-player.js';
-import PlayerEvents from './player/player-events.js';
-import { ErrorTypes, ErrorDetails } from './player/player-errors.js';
-import LoggingControl from './utils/logging-control.js';
-import { InvalidArgumentException } from './utils/exception.js';
-
-// here are all the interfaces
-
-// install polyfills
-Polyfill.install();
-
-// factory method
-function createPlayer(mediaDataSource, optionalConfig) {
- let mds = mediaDataSource;
- if (mds == null || typeof mds !== 'object') {
- throw new InvalidArgumentException('MediaDataSource must be an javascript object!');
- }
-
- if (!mds.hasOwnProperty('type')) {
- throw new InvalidArgumentException('MediaDataSource must has type field to indicate video file type!');
- }
-
- switch (mds.type) {
- case 'flv':
- return new FlvPlayer(mds, optionalConfig);
- default:
- return new NativePlayer(mds, optionalConfig);
- }
-}
-
-// feature detection
-function isSupported() {
- return Features.supportMSEH264Playback();
-}
-
-function getFeatureList() {
- return Features.getFeatureList();
-}
-
-// interfaces
-let flvjs = {};
-
-flvjs.createPlayer = createPlayer;
-flvjs.isSupported = isSupported;
-flvjs.getFeatureList = getFeatureList;
-
-flvjs.Events = PlayerEvents;
-flvjs.ErrorTypes = ErrorTypes;
-flvjs.ErrorDetails = ErrorDetails;
-
-flvjs.FlvPlayer = FlvPlayer;
-flvjs.NativePlayer = NativePlayer;
-flvjs.LoggingControl = LoggingControl;
-
-Object.defineProperty(flvjs, 'version', {
- enumerable: true,
- get: function () {
- // replaced by browserify-versionify transform
- return '__VERSION__';
- },
-});
-
-export default flvjs;
diff --git a/src/flv.js/io/fetch-stream-loader.js b/src/flv.js/io/fetch-stream-loader.js
deleted file mode 100644
index e1753e1..0000000
--- a/src/flv.js/io/fetch-stream-loader.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import Browser from '../utils/browser.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-
-let urlIndex = 0;
-
-/* fetch + stream IO loader. Currently working on chrome 43+.
- * fetch provides a better alternative http API to XMLHttpRequest
- *
- * fetch spec https://fetch.spec.whatwg.org/
- * stream spec https://streams.spec.whatwg.org/
- */
-class FetchStreamLoader extends BaseLoader {
- static isSupported() {
- try {
- // fetch + stream is broken on Microsoft Edge. Disable before build 15048.
- // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/
- // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.
- let isWorkWellEdge = Browser.msedge && Browser.version.minor >= 15048;
- let browserNotBlacklisted = Browser.msedge ? isWorkWellEdge : true;
- return self.fetch && self.ReadableStream && browserNotBlacklisted;
- } catch (e) {
- return false;
- }
- }
-
- constructor(seekHandler, config) {
- super('fetch-stream-loader');
- this.TAG = 'FetchStreamLoader';
-
- this._seekHandler = seekHandler;
- this._config = config;
- this._needStash = true;
-
- this._requestAbort = false;
- this._contentLength = null;
- this._receivedLength = 0;
- }
-
- destroy() {
- if (this.isWorking()) {
- this.abort();
- }
- super.destroy();
- }
-
- open(dataSource, range, remainingAttempts = 3) {
- this._dataSource = dataSource;
- this._range = range;
-
- let sourceURL = dataSource.url;
-
- // 使用备线
- if (dataSource.backupURL && dataSource.backupURL.length > 0 && urlIndex) {
- const index = urlIndex % (dataSource.backupURL.length + 1);
- if (index !== 0) {
- sourceURL = dataSource.backupURL[index - 1];
- }
- }
-
- if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
- sourceURL = dataSource.redirectedURL;
- }
-
- let seekConfig = this._seekHandler.getConfig(sourceURL, range);
-
- let headers = new self.Headers();
-
- if (typeof seekConfig.headers === 'object') {
- let configHeaders = seekConfig.headers;
- for (let key in configHeaders) {
- if (configHeaders.hasOwnProperty(key)) {
- headers.append(key, configHeaders[key]);
- }
- }
- }
-
- let params = {
- method: 'GET',
- headers: headers,
- mode: 'cors',
- cache: 'default',
- // The default policy of Fetch API in the whatwg standard
- // Safari incorrectly indicates 'no-referrer' as default policy, fuck it
- referrerPolicy: 'no-referrer-when-downgrade',
- };
-
- // cors is enabled by default
- if (dataSource.cors === false) {
- // no-cors means 'disregard cors policy', which can only be used in ServiceWorker
- params.mode = 'same-origin';
- }
-
- // withCredentials is disabled by default
- if (dataSource.withCredentials) {
- params.credentials = 'include';
- }
-
- // referrerPolicy from config
- if (dataSource.referrerPolicy) {
- params.referrerPolicy = dataSource.referrerPolicy;
- }
-
- this.status = LoaderStatus.kConnecting;
- self.fetch(seekConfig.url, params)
- .then((res) => {
- if (this._requestAbort) {
- this._requestAbort = false;
- return;
- }
- if (this.onHeaderReceived) {
- this.onHeaderReceived(res.headers);
- }
- if (res.ok && res.status >= 200 && res.status <= 299) {
- if (res.url !== seekConfig.url) {
- if (this._onURLRedirect) {
- let redirectedURL = this._seekHandler.removeURLParameters(res.url);
- this._onURLRedirect(redirectedURL);
- }
- }
-
- let lengthHeader = res.headers.get('Content-Length');
- if (lengthHeader != null) {
- this._contentLength = parseInt(lengthHeader);
- if (this._contentLength !== 0) {
- if (this._onContentLengthKnown) {
- this._onContentLengthKnown(this._contentLength);
- }
- }
- }
-
- return this._pump.call(this, res.body.getReader());
- } else {
- if (remainingAttempts > 0) {
- urlIndex++;
- this.open(dataSource, range, remainingAttempts - 1);
- } else {
- this.status = LoaderStatus.kError;
- if (this._onError) {
- this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, {
- code: res.status,
- msg: res.statusText,
- });
- } else {
- throw new RuntimeException(
- 'FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText,
- );
- }
- }
- }
- })
- .catch((e) => {
- if (remainingAttempts > 0) {
- urlIndex++;
- this.open(dataSource, range, remainingAttempts - 1);
- } else {
- this.status = LoaderStatus.kError;
- if (this._onError) {
- this._onError(LoaderErrors.EXCEPTION, { code: -1, msg: e.message });
- } else {
- throw e;
- }
- }
- });
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
-
- abort() {
- this._requestAbort = true;
- this.status = LoaderStatus.kComplete;
- }
-
- _pump(reader) {
- // ReadableStreamReader
- return reader
- .read()
- .then((result) => {
- if (result.done) {
- // First check received length
- if (this._contentLength !== null && this._receivedLength < this._contentLength) {
- // Report Early-EOF
- this.status = LoaderStatus.kError;
- let type = LoaderErrors.EARLY_EOF;
- let info = { code: -1, msg: 'Fetch stream meet Early-EOF' };
- if (this._onError) {
- this._onError(type, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- } else {
- // OK. Download complete
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
- } else {
- if (this._requestAbort === true) {
- this._requestAbort = false;
- return reader.cancel();
- }
-
- this.status = LoaderStatus.kBuffering;
-
- let chunk = result.value.buffer;
- let byteStart = this._range.from + this._receivedLength;
- this._receivedLength += chunk.byteLength;
-
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength);
- }
-
- this._pump(reader);
- }
- })
- .catch((e) => {
- if (e.code === 11 && Browser.msedge) {
- // InvalidStateError on Microsoft Edge
- // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call
- // Ignore the unknown exception.
- // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/
- return;
- }
-
- this.status = LoaderStatus.kError;
- let type = 0;
- let info = null;
-
- if (
- (e.code === 19 || e.message === 'network error') && // NETWORK_ERR
- (this._contentLength === null ||
- (this._contentLength !== null && this._receivedLength < this._contentLength))
- ) {
- type = LoaderErrors.EARLY_EOF;
- info = { code: e.code, msg: 'Fetch stream meet Early-EOF' };
- } else {
- type = LoaderErrors.EXCEPTION;
- info = { code: e.code, msg: e.message };
- }
-
- if (this._onError) {
- this._onError(type, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- });
- }
-}
-
-export default FetchStreamLoader;
diff --git a/src/flv.js/io/io-controller.js b/src/flv.js/io/io-controller.js
deleted file mode 100644
index a46bf12..0000000
--- a/src/flv.js/io/io-controller.js
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import SpeedSampler from './speed-sampler.js';
-import { LoaderStatus, LoaderErrors, LoaderEvents } from './loader.js';
-import FetchStreamLoader from './fetch-stream-loader.js';
-import MozChunkedLoader from './xhr-moz-chunked-loader.js';
-// import MSStreamLoader from './xhr-msstream-loader.js';
-import RangeLoader from './xhr-range-loader.js';
-import YFLoader from './yf-loader.js';
-import XYVODLoader from './xyvod-loader';
-import WebSocketLoader from './websocket-loader.js';
-import RangeSeekHandler from './range-seek-handler.js';
-import ParamSeekHandler from './param-seek-handler.js';
-import { RuntimeException, IllegalStateException, InvalidArgumentException } from '../utils/exception.js';
-import PlayerEvents, { OTHER_EVENTS_POLYMER } from '../player/player-events.js';
-
-/**
- * DataSource: {
- * url: string,
- * filesize: number,
- * cors: boolean,
- * withCredentials: boolean
- * }
- *
- */
-
-// Manage IO Loaders
-class IOController {
- constructor(dataSource, config, extraData, mediaElement, bNewSlice) {
- this.TAG = 'IOController';
-
- this._config = config;
- this._extraData = extraData;
- this._mediaElement = mediaElement;
- this._emitter = new EventEmitter();
-
- this._stashInitialSize = 1024 * 384; // default initial size: 384KB
- if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {
- // apply from config
- this._stashInitialSize = config.stashInitialSize;
- }
-
- this._stashUsed = 0;
- this._stashSize = this._stashInitialSize;
- this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB
- this._stashBuffer = new ArrayBuffer(this._bufferSize);
- this._stashByteStart = 0;
- this._enableStash = true;
- if (config.enableStashBuffer === false) {
- this._enableStash = false;
- }
-
- this._loader = null;
- this._loaderClass = null;
- this._seekHandler = null;
-
- this._dataSource = dataSource;
- this._isWebSocketURL = /wss?:\/\/(.+?)/.test(dataSource.url);
- this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;
- this._totalLength = this._refTotalLength;
- this._fullRequestFlag = false;
- this._currentRange = null;
- this._redirectedURL = null;
-
- this._speedNormalized = 0;
- this._speedSampler = new SpeedSampler();
- this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];
-
- this._isEarlyEofReconnecting = false;
-
- this._paused = false;
- this._resumeFrom = 0;
- this._requestStartTime = null;
-
- this._onDataArrival = null;
- this._onSeeked = null;
- this._onError = null;
- this._onComplete = null;
- this._onRedirect = null;
- this._onRecoveredEarlyEof = null;
- this._bNewSlice = bNewSlice;
-
- this._selectSeekHandler();
- this._selectLoader();
- this._createLoader(bNewSlice);
- this._onPerRequestReceivedBytesEvent();
- }
-
- destroy() {
- if (this._loader.isWorking()) {
- this._loader.abort();
- }
- this._loader.destroy();
- this._loader = null;
- this._loaderClass = null;
- this._backupLoaderClass = null;
- this._dataSource = null;
- this._stashBuffer = null;
- this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;
- this._currentRange = null;
-
- this._isEarlyEofReconnecting = false;
-
- this._onDataArrival = null;
- this._onSeeked = null;
- this._onError = null;
- this._onComplete = null;
- this._onRedirect = null;
- this._onRecoveredEarlyEof = null;
-
- this._requestStartTime = null;
- this._emitter.removeAllListeners();
- this._emitter = null;
- this._extraData = null;
- this._speedSampler.destroy();
- this._speedSampler = null;
- }
-
- isWorking() {
- return this._loader && this._loader.isWorking() && !this._paused;
- }
-
- isPaused() {
- return this._paused;
- }
-
- get status() {
- return this._loader.status;
- }
-
- get extraData() {
- return this._extraData;
- }
-
- set extraData(data) {
- this._extraData = data;
- }
-
- // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number
- get onDataArrival() {
- return this._onDataArrival;
- }
-
- set onDataArrival(callback) {
- this._onDataArrival = callback;
- }
-
- get onSeeked() {
- return this._onSeeked;
- }
-
- set onSeeked(callback) {
- this._onSeeked = callback;
- }
-
- // prototype: function onError(type: number, info: {code: number, msg: string}): void
- get onError() {
- return this._onError;
- }
-
- set onError(callback) {
- this._onError = callback;
- }
-
- get onComplete() {
- return this._onComplete;
- }
-
- set onComplete(callback) {
- this._onComplete = callback;
- }
-
- get onRedirect() {
- return this._onRedirect;
- }
-
- set onRedirect(callback) {
- this._onRedirect = callback;
- }
-
- get onRecoveredEarlyEof() {
- return this._onRecoveredEarlyEof;
- }
-
- set onRecoveredEarlyEof(callback) {
- this._onRecoveredEarlyEof = callback;
- }
-
- get currentURL() {
- return this._dataSource.url;
- }
-
- get hasRedirect() {
- return this._redirectedURL != null || this._dataSource.redirectedURL != undefined;
- }
-
- get currentRedirectedURL() {
- return this._redirectedURL || this._dataSource.redirectedURL;
- }
-
- // in KB/s
- get currentSpeed() {
- if (this._loaderClass === RangeLoader) {
- // SpeedSampler is inaccuracy if loader is RangeLoader
- return this._loader.currentSpeed;
- }
- return this._speedSampler.lastSecondKBps;
- }
-
- get loaderType() {
- return this._loader.type;
- }
-
- _selectSeekHandler() {
- let config = this._config;
-
- if (config.seekType === 'range') {
- this._seekHandler = new RangeSeekHandler(this._config.rangeLoadZeroStart);
- } else if (config.seekType === 'param') {
- let paramStart = config.seekParamStart || 'bstart';
- let paramEnd = config.seekParamEnd || 'bend';
-
- this._seekHandler = new ParamSeekHandler(paramStart, paramEnd);
- } else if (config.seekType === 'custom') {
- if (typeof config.customSeekHandler !== 'function') {
- throw new InvalidArgumentException(
- 'Custom seekType specified in config but invalid customSeekHandler!',
- );
- }
- this._seekHandler = new config.customSeekHandler();
- } else {
- throw new InvalidArgumentException(`Invalid seekType in config: ${config.seekType}`);
- }
- }
-
- _selectLoader() {
- this._loaderClass = null;
- this._config.p2pType = window['__FLV_P2P_TYPE__'];
- if (this._config.p2pType) {
- switch (this._config.p2pType) {
- case 'yf-eg':
- this._loaderClass = YFLoader;
- break;
- case 'xl-eg':
- this._loaderClass = XYVODLoader;
- break;
- default:
- break;
- }
- if (this._loaderClass !== null && FetchStreamLoader.isSupported()) {
- this._backupLoaderClass = FetchStreamLoader;
- return;
- }
- }
- if (this._isWebSocketURL) {
- this._loaderClass = WebSocketLoader;
- } else if (FetchStreamLoader.isSupported()) {
- this._loaderClass = FetchStreamLoader;
- } else if (MozChunkedLoader.isSupported()) {
- this._loaderClass = MozChunkedLoader;
- } else if (RangeLoader.isSupported()) {
- this._loaderClass = RangeLoader;
- } else {
- throw new RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");
- }
- }
-
- _createLoader(bNewSlice) {
- this._loader = new this._loaderClass(this._seekHandler, this._config, this._mediaElement, bNewSlice);
- if (this._loader.needStashBuffer === false) {
- this._enableStash = false;
- }
- if (this.loaderType == 'yf-loader' || this.loaderType == 'xyvod-loader') {
- let backupLoader = new this._backupLoaderClass(
- this._seekHandler,
- this._config,
- this._mediaElement,
- bNewSlice,
- );
- backupLoader.onHeaderReceived = this._onHeaderReceived.bind(this);
- backupLoader.onContentLengthKnown = this._onContentLengthKnown.bind(this);
- backupLoader.onURLRedirect = this._onURLRedirect.bind(this);
- backupLoader.onError = this._onLoaderError.bind(this);
- this._loader.setBackupLoader(backupLoader);
- }
- this._loader.onHeaderReceived = this._onHeaderReceived.bind(this);
- this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);
- this._loader.onURLRedirect = this._onURLRedirect.bind(this);
- this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);
- this._loader.onStarted = this._onLoaderStarted.bind(this);
- this._loader.onComplete = this._onLoaderComplete.bind(this);
- this._loader.onError = this._onLoaderError.bind(this);
- this._loader.onNeedStashBuffer = this._onNeedStashBuffer.bind(this);
- this._loader.on(LoaderEvents.STATUS_CHANGE, this._onLoaderStatusChange.bind(this));
- }
-
- _onPerRequestReceivedBytesEvent() {
- this._speedSampler.on(PlayerEvents.HTTP_REQUEST_ENDED, (totalBytes) => {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: PlayerEvents.HTTP_REQUEST_ENDED,
- eventParams: [totalBytes, this._dataSource.url],
- });
- });
- this._speedSampler.on(PlayerEvents.P2P_REQUEST_ENDED, (cdnLoadedBytes, p2pLoadedBytes, backupLoadedBytes) => {
- // Log.w(this.TAG, `Load Info: cdnLoadedBytes=${cdnLoadedBytes}, p2pLoadedBytes=${p2pLoadedBytes}`);
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: PlayerEvents.P2P_REQUEST_ENDED,
- eventParams: [
- cdnLoadedBytes,
- p2pLoadedBytes,
- backupLoadedBytes,
- this._dataSource.url,
- this._config.p2pType,
- ],
- });
- });
- }
-
- open(optionalFrom) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: PlayerEvents.CREATE_LOADER,
- eventParams: [this.loaderType],
- });
- this._currentRange = { from: 0, to: -1 };
- if (optionalFrom) {
- this._currentRange.from = optionalFrom;
- }
-
- if (!optionalFrom) {
- this._fullRequestFlag = true;
- }
-
- this._updateLoaderStashSize();
- this._loader.open(this._dataSource, Object.assign({}, this._currentRange));
- }
-
- abort() {
- this._loader.abort();
-
- if (this._paused) {
- this._paused = false;
- this._resumeFrom = 0;
- }
- }
-
- pause() {
- if (this.isWorking()) {
- this._loader.abort();
-
- if (this._stashUsed !== 0) {
- this._resumeFrom = this._stashByteStart;
- this._currentRange.to = this._stashByteStart - 1;
- } else {
- this._resumeFrom = this._currentRange.to + 1;
- }
- this._stashUsed = 0;
- this._stashByteStart = 0;
- this._paused = true;
- }
- }
-
- resume() {
- if (this._paused) {
- this._paused = false;
- let bytes = this._resumeFrom;
- this._resumeFrom = 0;
- this._internalSeek(bytes, true, true);
- }
- }
-
- seek(bytes) {
- this._paused = false;
- this._stashUsed = 0;
- this._stashByteStart = 0;
- this._internalSeek(bytes, true);
- }
-
- /**
- * When seeking request is from media seeking, unconsumed stash data should be dropped
- * However, stash data shouldn't be dropped if seeking requested from http reconnection
- *
- * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer
- */
- _internalSeek(bytes, dropUnconsumed, resume) {
- if (this._loader.isWorking()) {
- this._loader.abort();
- }
-
- // dispatch & flush stash buffer before seek
- this._flushStashBuffer(dropUnconsumed);
-
- let requestRange = { from: bytes, to: -1 };
- this._currentRange = { from: requestRange.from, to: -1 };
-
- if (resume && this.loaderType === 'yf-loader' && this._loader.useP2pIO()) {
- this._loader.resume(requestRange);
- if (this._onSeeked) {
- this._onSeeked();
- }
- return;
- }
- // p2p
- let noResource = resume && this._loader.noResource ? true : false;
-
- this._loader.destroy();
- this._loader = null;
-
- this._stashSize = this._stashInitialSize;
- this._selectLoader();
- this._createLoader();
-
- this._updateLoaderStashSize();
- if (noResource && this._loader.noResource !== undefined) {
- this._loader.noResource = true;
- }
-
- this._loader.open(this._dataSource, requestRange);
-
- if (this._onSeeked) {
- this._onSeeked();
- }
- }
-
- updateUrl(url) {
- if (!url || typeof url !== 'string' || url.length === 0) {
- throw new InvalidArgumentException('Url must be a non-empty string!');
- }
-
- this._dataSource.url = url;
-
- // TODO: replace with new url
- }
-
- _expandBuffer(expectedBytes) {
- let bufferNewSize = this._stashSize;
- while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {
- bufferNewSize *= 2;
- }
-
- bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB
- if (bufferNewSize === this._bufferSize) {
- return;
- }
-
- let newBuffer = new ArrayBuffer(bufferNewSize);
-
- if (this._stashUsed > 0) {
- // copy existing data into new buffer
- let stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);
- let stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);
- stashNewArray.set(stashOldArray, 0);
- }
-
- this._stashBuffer = newBuffer;
- this._bufferSize = bufferNewSize;
- }
-
- _normalizeSpeed(input) {
- let list = this._speedNormalizeList;
- let last = list.length - 1;
- let mid = 0;
- let lbound = 0;
- let ubound = last;
-
- if (input < list[0]) {
- return list[0];
- }
-
- // binary search
- while (lbound <= ubound) {
- mid = lbound + Math.floor((ubound - lbound) / 2);
- if (mid === last || (input >= list[mid] && input < list[mid + 1])) {
- return list[mid];
- } else if (list[mid] < input) {
- lbound = mid + 1;
- } else {
- ubound = mid - 1;
- }
- }
- }
-
- _adjustStashSize(normalized) {
- let stashSizeKB = 0;
-
- if (this._config.isLive) {
- // live stream: always use single normalized speed for size of stashSizeKB
- stashSizeKB = normalized;
- } else {
- if (normalized < 512) {
- stashSizeKB = normalized;
- } else if (normalized >= 512 && normalized <= 1024) {
- stashSizeKB = Math.floor(normalized * 1.5);
- } else {
- stashSizeKB = normalized * 2;
- }
- }
-
- if (this.loaderType === 'yf-loader') {
- let timeRange = this._mediaElement.buffered;
- if (timeRange.length < 1 || timeRange.end(0) - this._mediaElement.currentTime <= 10) {
- if (stashSizeKB > 512) {
- stashSizeKB = 512;
- }
- }
- if (stashSizeKB > 2048) {
- stashSizeKB = 2048;
- }
- }
-
- if (stashSizeKB > 8192) {
- stashSizeKB = 8192;
- }
-
- let bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB
- if (this._bufferSize < bufferSize) {
- this._expandBuffer(bufferSize);
- }
- this._stashSize = stashSizeKB * 1024;
- //Log.w(this.TAG, `adjust stash size, new size: ${this._stashSize}`);
- this._updateLoaderStashSize();
- }
-
- _dispatchChunks(chunks, byteStart) {
- this._currentRange.to = byteStart + chunks.byteLength - 1;
- return this._onDataArrival(chunks, byteStart);
- }
-
- _onURLRedirect(redirectedURL) {
- this._redirectedURL = redirectedURL;
- if (this._onRedirect) {
- this._onRedirect(redirectedURL);
- }
- }
-
- _onHeaderReceived(headers) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: PlayerEvents.HTTP_HEADER_RECEIVED,
- eventParams: [Date.now() - this._requestStartTime, this._dataSource.url, headers],
- });
- }
-
- _onContentLengthKnown(contentLength) {
- if (contentLength && this._fullRequestFlag) {
- this._totalLength = contentLength;
- this._fullRequestFlag = false;
- }
- }
-
- _onLoaderChunkArrival(chunk, byteStart, receivedLength, p2pLoadInfo) {
- if (!this._onDataArrival) {
- throw new IllegalStateException('IOController: No existing consumer (onDataArrival) callback!');
- }
- if (this._paused) {
- return;
- }
- if (this._isEarlyEofReconnecting) {
- // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback
- this._isEarlyEofReconnecting = false;
- if (this._onRecoveredEarlyEof) {
- this._onRecoveredEarlyEof();
- }
- }
-
- this._speedSampler.addBytes(chunk.byteLength, p2pLoadInfo);
-
- // adjust stash buffer size according to network speed dynamically
- let KBps = this._speedSampler.lastSecondKBps;
- if (KBps !== 0) {
- let normalized = this._normalizeSpeed(KBps);
- if (this._speedNormalized !== normalized) {
- this._speedNormalized = normalized;
- this._adjustStashSize(normalized);
- }
- }
-
- if (!this._enableStash) {
- // disable stash
- if (this._stashUsed === 0) {
- // dispatch chunk directly to consumer;
- // check ret value (consumed bytes) and stash unconsumed to stashBuffer
- let consumed = this._dispatchChunks(chunk, byteStart);
- if (consumed < chunk.byteLength) {
- // unconsumed data remain.
- let remain = chunk.byteLength - consumed;
- if (remain > this._bufferSize) {
- this._expandBuffer(remain);
- }
- let stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- stashArray.set(new Uint8Array(chunk, consumed), 0);
- this._stashUsed += remain;
- this._stashByteStart = byteStart + consumed;
- }
- } else {
- // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.
- if (this._stashUsed + chunk.byteLength > this._bufferSize) {
- this._expandBuffer(this._stashUsed + chunk.byteLength);
- }
- let stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- stashArray.set(new Uint8Array(chunk), this._stashUsed);
- this._stashUsed += chunk.byteLength;
- let consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);
- if (consumed < this._stashUsed && consumed > 0) {
- // unconsumed data remain
- let remainArray = new Uint8Array(this._stashBuffer, consumed);
- stashArray.set(remainArray, 0);
- }
- this._stashUsed -= consumed;
- this._stashByteStart += consumed;
- }
- } else {
- // enable stash
- if (this._stashUsed === 0 && this._stashByteStart === 0) {
- // seeked? or init chunk?
- // This is the first chunk after seek action
- this._stashByteStart = byteStart;
- }
- if (this._stashUsed + chunk.byteLength <= this._stashSize) {
- // just stash
- let stashArray = new Uint8Array(this._stashBuffer, 0, this._stashSize);
- stashArray.set(new Uint8Array(chunk), this._stashUsed);
- this._stashUsed += chunk.byteLength;
- } else {
- // stashUsed + chunkSize > stashSize, size limit exceeded
- let stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- if (this._stashUsed > 0) {
- // There're stash datas in buffer
- // dispatch the whole stashBuffer, and stash remain data
- // then append chunk to stashBuffer (stash)
- let buffer = this._stashBuffer.slice(0, this._stashUsed);
- let consumed = this._dispatchChunks(buffer, this._stashByteStart);
- if (consumed < buffer.byteLength) {
- if (consumed > 0) {
- let remainArray = new Uint8Array(buffer, consumed);
- stashArray.set(remainArray, 0);
- this._stashUsed = remainArray.byteLength;
- this._stashByteStart += consumed;
- }
- } else {
- this._stashUsed = 0;
- this._stashByteStart += consumed;
- }
- if (this._stashUsed + chunk.byteLength > this._bufferSize) {
- this._expandBuffer(this._stashUsed + chunk.byteLength);
- stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- }
- stashArray.set(new Uint8Array(chunk), this._stashUsed);
- this._stashUsed += chunk.byteLength;
- } else {
- // stash buffer empty, but chunkSize > stashSize (oh, holy shit)
- // dispatch chunk directly and stash remain data
- let consumed = this._dispatchChunks(chunk, byteStart);
- if (consumed < chunk.byteLength) {
- let remain = chunk.byteLength - consumed;
- if (remain > this._bufferSize) {
- this._expandBuffer(remain);
- stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- }
- stashArray.set(new Uint8Array(chunk, consumed), 0);
- this._stashUsed += remain;
- this._stashByteStart = byteStart + consumed;
- }
- }
- }
- }
- }
-
- _flushStashBuffer(dropUnconsumed) {
- if (this._stashUsed > 0) {
- let buffer = this._stashBuffer.slice(0, this._stashUsed);
- let consumed = this._dispatchChunks(buffer, this._stashByteStart);
- let remain = buffer.byteLength - consumed;
-
- if (consumed < buffer.byteLength) {
- if (dropUnconsumed) {
- Log.w(this.TAG, `${remain} bytes unconsumed data remain when flush buffer, dropped`);
- } else {
- if (consumed > 0) {
- let stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
- let remainArray = new Uint8Array(buffer, consumed);
- stashArray.set(remainArray, 0);
- this._stashUsed = remainArray.byteLength;
- this._stashByteStart += consumed;
- }
- return 0;
- }
- }
- this._stashUsed = 0;
- this._stashByteStart = 0;
- return remain;
- }
- return 0;
- }
-
- _onLoaderStarted(timestamp) {
- this._emitter.emit(OTHER_EVENTS_POLYMER, {
- eventName: PlayerEvents.LOADING_STARTED,
- eventParams: [timestamp],
- });
- }
-
- _onLoaderComplete(from, to) {
- // Force-flush stash buffer, and drop unconsumed data
- this._flushStashBuffer(true);
-
- if (this._onComplete) {
- this._onComplete(this._extraData, from, to, this._dataSource && this._dataSource.url);
- }
- }
-
- _onLoaderError(type, data) {
- Log.e(this.TAG, `Loader error, code = ${data.code}, msg = ${data.msg}`);
-
- this._flushStashBuffer(false);
-
- if (this._isEarlyEofReconnecting) {
- // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer
- this._isEarlyEofReconnecting = false;
- type = LoaderErrors.UNRECOVERABLE_EARLY_EOF;
- }
-
- switch (type) {
- case LoaderErrors.EARLY_EOF: {
- if (!this._config.isLive) {
- // Do internal http reconnect if not live stream
- if (this._totalLength) {
- let nextFrom = this._currentRange.to + 1;
- if (nextFrom < this._totalLength) {
- Log.w(this.TAG, 'Connection lost, trying reconnect...');
- this._isEarlyEofReconnecting = true;
- this._internalSeek(nextFrom, false);
- }
- return;
- }
- // else: We don't know totalLength, throw UnrecoverableEarlyEof
- }
- // live stream: throw UnrecoverableEarlyEof error to upper-layer
- type = LoaderErrors.UNRECOVERABLE_EARLY_EOF;
- break;
- }
- case LoaderErrors.UNRECOVERABLE_EARLY_EOF:
- case LoaderErrors.CONNECTING_TIMEOUT:
- case LoaderErrors.HTTP_STATUS_CODE_INVALID:
- case LoaderErrors.EXCEPTION:
- break;
- }
-
- if (this._onError) {
- this._onError(type, data);
- } else {
- throw new RuntimeException('IOException: ' + data.msg);
- }
- }
-
- _onLoaderStatusChange(prevStatus, status) {
- if (status === LoaderStatus.kError || status === LoaderStatus.kComplete) {
- this._speedSampler.reset();
- }
- if (status === LoaderStatus.kConnecting) {
- this._requestStartTime = Date.now();
- }
- }
-
- _onNeedStashBuffer(bNeed) {
- this._enableStash = bNeed;
- }
-
- _updateLoaderStashSize() {
- if (this._loader && this._loader.setStashSize) {
- this._loader.setStashSize(this._stashSize);
- }
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-}
-
-export default IOController;
diff --git a/src/flv.js/io/loader.js b/src/flv.js/io/loader.js
deleted file mode 100644
index fca0aed..0000000
--- a/src/flv.js/io/loader.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import { NotImplementedException } from '../utils/exception.js';
-
-export const LoaderStatus = {
- kIdle: 0,
- kConnecting: 1,
- kBuffering: 2,
- kError: 3,
- kComplete: 4,
-};
-
-export const LoaderErrors = {
- OK: 'OK',
- EXCEPTION: 'Exception',
- HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',
- CONNECTING_TIMEOUT: 'ConnectingTimeout',
- EARLY_EOF: 'EarlyEof',
- UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof',
-};
-
-export const LoaderEvents = {
- STATUS_CHANGE: 'StatusChange',
-};
-
-/* Loader has callbacks which have following prototypes:
- * function onContentLengthKnown(contentLength: number): void
- * function onURLRedirect(url: string): void
- * function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void
- * function onError(errorType: number, errorInfo: {code: number, msg: string}): void
- * function onComplete(rangeFrom: number, rangeTo: number): void
- */
-export class BaseLoader {
- constructor(typeName) {
- this._type = typeName || 'undefined';
- /** @private */
- this._status = LoaderStatus.kIdle;
- this._needStash = false;
- // callbacks
- this._onHeaderReceived = null;
- this._onContentLengthKnown = null;
- this._onURLRedirect = null;
- this._onDataArrival = null;
- this._onError = null;
- this._onStarted = null;
- this._onComplete = null;
- this._emitter = new EventEmitter();
- }
-
- destroy() {
- this.status = LoaderStatus.kIdle;
- this._onHeaderReceived = null;
- this._onContentLengthKnown = null;
- this._onURLRedirect = null;
- this._onDataArrival = null;
- this._onError = null;
- this._onStarted = null;
- this._onComplete = null;
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- isWorking() {
- return this.status === LoaderStatus.kConnecting || this.status === LoaderStatus.kBuffering;
- }
-
- get type() {
- return this._type;
- }
-
- get status() {
- return this._status;
- }
-
- set status(val) {
- if (this._status !== val) {
- if (this._emitter) {
- this._emitter.emit(LoaderEvents.STATUS_CHANGE, this._status, (this._status = val));
- } else {
- // The `_status` maybe set to a certain kind of status after invoking `destroy` function.
- // In this case, setting `_status` should be ignore because instance has been destroyed.
- this._status = val;
- Log.w('StatusChange', 'Status has been set, but instance had been destroyed');
- }
- }
- }
-
- get needStashBuffer() {
- return this._needStash;
- }
-
- get onHeaderReceived() {
- return this._onHeaderReceived;
- }
-
- set onHeaderReceived(callback) {
- this._onHeaderReceived = callback;
- }
-
- get onContentLengthKnown() {
- return this._onContentLengthKnown;
- }
-
- set onContentLengthKnown(callback) {
- this._onContentLengthKnown = callback;
- }
-
- get onURLRedirect() {
- return this._onURLRedirect;
- }
-
- set onURLRedirect(callback) {
- this._onURLRedirect = callback;
- }
-
- get onDataArrival() {
- return this._onDataArrival;
- }
-
- set onDataArrival(callback) {
- this._onDataArrival = callback;
- }
-
- get onError() {
- return this._onError;
- }
-
- set onError(callback) {
- this._onError = callback;
- }
-
- get onStarted() {
- return this._onStarted;
- }
-
- set onStarted(callback) {
- this._onStarted = callback;
- }
-
- get onComplete() {
- return this._onComplete;
- }
-
- set onComplete(callback) {
- this._onComplete = callback;
- }
-
- // pure virtual
- open(dataSource, range) {
- throw new NotImplementedException('Unimplemented abstract function!');
- }
-
- abort() {
- throw new NotImplementedException('Unimplemented abstract function!');
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-}
diff --git a/src/flv.js/io/param-seek-handler.js b/src/flv.js/io/param-seek-handler.js
deleted file mode 100644
index 8d45478..0000000
--- a/src/flv.js/io/param-seek-handler.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class ParamSeekHandler {
- constructor(paramStart, paramEnd) {
- this._startName = paramStart;
- this._endName = paramEnd;
- }
-
- getConfig(baseUrl, range) {
- let url = baseUrl;
-
- if (range.from !== 0 || range.to !== -1) {
- let needAnd = true;
- if (url.indexOf('?') === -1) {
- url += '?';
- needAnd = false;
- }
-
- if (needAnd) {
- url += '&';
- }
-
- url += `${this._startName}=${range.from.toString()}`;
-
- if (range.to !== -1) {
- url += `&${this._endName}=${range.to.toString()}`;
- }
- }
-
- return {
- url: url,
- headers: {},
- };
- }
-
- removeURLParameters(seekedURL) {
- let baseURL = seekedURL.split('?')[0];
- let params = undefined;
-
- let queryIndex = seekedURL.indexOf('?');
- if (queryIndex !== -1) {
- params = seekedURL.substring(queryIndex + 1);
- }
-
- let resultParams = '';
-
- if (params != undefined && params.length > 0) {
- let pairs = params.split('&');
-
- for (let i = 0; i < pairs.length; i++) {
- let pair = pairs[i].split('=');
- let requireAnd = i > 0;
-
- if (pair[0] !== this._startName && pair[0] !== this._endName) {
- if (requireAnd) {
- resultParams += '&';
- }
- resultParams += pairs[i];
- }
- }
- }
-
- return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams;
- }
-}
-
-export default ParamSeekHandler;
diff --git a/src/flv.js/io/range-seek-handler.js b/src/flv.js/io/range-seek-handler.js
deleted file mode 100644
index 407d190..0000000
--- a/src/flv.js/io/range-seek-handler.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class RangeSeekHandler {
- constructor(zeroStart) {
- this._zeroStart = zeroStart || false;
- }
-
- getConfig(url, range) {
- let headers = {};
-
- if (range.from !== 0 || range.to !== -1) {
- let param;
- if (range.to !== -1) {
- param = `bytes=${range.from.toString()}-${range.to.toString()}`;
- } else {
- param = `bytes=${range.from.toString()}-`;
- }
- headers['Range'] = param;
- } else if (this._zeroStart) {
- headers['Range'] = 'bytes=0-';
- }
-
- return {
- url: url,
- headers: headers,
- };
- }
-
- removeURLParameters(seekedURL) {
- return seekedURL;
- }
-}
-
-export default RangeSeekHandler;
diff --git a/src/flv.js/io/speed-sampler.js b/src/flv.js/io/speed-sampler.js
deleted file mode 100644
index ffedc3d..0000000
--- a/src/flv.js/io/speed-sampler.js
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import PlayerEvents from '../player/player-events.js';
-
-// Utility class to calculate realtime network I/O speed
-class SpeedSampler {
- constructor() {
- // milliseconds
- this._firstCheckpoint = 0;
- this._lastCheckpoint = 0;
- this._intervalBytes = 0;
- this._totalBytes = 0;
- this._p2pLoadedBytes = 0;
- this._CDNLoadedBytes = 0;
- this._backupLoaderLoadedBytes = 0;
- this._lastSecondBytes = 0;
- this._emitter = new EventEmitter();
-
- // compatibility detection
- if (self.performance && self.performance.now) {
- this._now = self.performance.now.bind(self.performance);
- } else {
- this._now = Date.now;
- }
- }
-
- destroy() {
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- reset() {
- this._emitter.emit(PlayerEvents.HTTP_REQUEST_ENDED, this._totalBytes);
- if (this._CDNLoadedBytes + this._p2pLoadedBytes + this._backupLoaderLoadedBytes > 0)
- this._emitter.emit(
- PlayerEvents.P2P_REQUEST_ENDED,
- this._CDNLoadedBytes,
- this._p2pLoadedBytes,
- this._backupLoaderLoadedBytes,
- );
- this._firstCheckpoint = this._lastCheckpoint = 0;
- this._totalBytes = this._intervalBytes = 0;
- this._lastSecondBytes = 0;
- this._p2pLoadedBytes = 0;
- this._CDNLoadedBytes = 0;
- this._backupLoaderLoadedBytes = 0;
- }
-
- addBytes(bytes, p2pLoadInfo) {
- if (this._firstCheckpoint === 0) {
- this._firstCheckpoint = this._now();
- this._lastCheckpoint = this._firstCheckpoint;
- this._intervalBytes += bytes;
- this._totalBytes += bytes;
- } else if (this._now() - this._lastCheckpoint < 1000) {
- this._intervalBytes += bytes;
- this._totalBytes += bytes;
- } else {
- // duration >= 1000
- this._lastSecondBytes = this._intervalBytes;
- this._intervalBytes = bytes;
- this._totalBytes += bytes;
- this._lastCheckpoint = this._now();
- }
- if (p2pLoadInfo) {
- this._CDNLoadedBytes += p2pLoadInfo.cdn ? p2pLoadInfo.cdn : 0;
- this._p2pLoadedBytes += p2pLoadInfo.p2p ? p2pLoadInfo.p2p : 0;
- this._backupLoaderLoadedBytes += p2pLoadInfo.backup ? p2pLoadInfo.backup : 0;
- }
- }
-
- get currentKBps() {
- this.addBytes(0);
-
- let durationSeconds = (this._now() - this._lastCheckpoint) / 1000;
- if (durationSeconds == 0) durationSeconds = 1;
- return this._intervalBytes / durationSeconds / 1024;
- }
-
- get lastSecondKBps() {
- this.addBytes(0);
-
- if (this._lastSecondBytes !== 0) {
- return this._lastSecondBytes / 1024;
- } else {
- // lastSecondBytes === 0
- if (this._now() - this._lastCheckpoint >= 500) {
- // if time interval since last checkpoint has exceeded 500ms
- // the speed is nearly accurate
- return this.currentKBps;
- } else {
- // We don't know
- return 0;
- }
- }
- }
-
- get averageKBps() {
- let durationSeconds = (this._now() - this._firstCheckpoint) / 1000;
- return this._totalBytes / durationSeconds / 1024;
- }
-
- on(event, listener) {
- this._emitter.addListener(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-}
-
-export default SpeedSampler;
diff --git a/src/flv.js/io/websocket-loader.js b/src/flv.js/io/websocket-loader.js
deleted file mode 100644
index 185b0cb..0000000
--- a/src/flv.js/io/websocket-loader.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-
-// For FLV over WebSocket live stream
-class WebSocketLoader extends BaseLoader {
- static isSupported() {
- try {
- return typeof self.WebSocket !== 'undefined';
- } catch (e) {
- return false;
- }
- }
-
- constructor() {
- super('websocket-loader');
- this.TAG = 'WebSocketLoader';
-
- this._needStash = true;
-
- this._ws = null;
- this._requestAbort = false;
- this._receivedLength = 0;
- }
-
- destroy() {
- if (this._ws) {
- this.abort();
- }
- super.destroy();
- }
-
- open(dataSource) {
- try {
- let ws = (this._ws = new self.WebSocket(dataSource.url));
- ws.binaryType = 'arraybuffer';
- ws.onopen = this._onWebSocketOpen.bind(this);
- ws.onclose = this._onWebSocketClose.bind(this);
- ws.onmessage = this._onWebSocketMessage.bind(this);
- ws.onerror = this._onWebSocketError.bind(this);
-
- this.status = LoaderStatus.kConnecting;
- } catch (e) {
- this.status = LoaderStatus.kError;
-
- let info = { code: e.code, msg: e.message };
-
- if (this._onError) {
- this._onError(LoaderErrors.EXCEPTION, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
-
- abort() {
- let ws = this._ws;
- if (ws && (ws.readyState === 0 || ws.readyState === 1)) {
- // CONNECTING || OPEN
- this._requestAbort = true;
- ws.close();
- }
-
- this._ws = null;
- this.status = LoaderStatus.kComplete;
- }
-
- _onWebSocketOpen(e) {
- this.status = LoaderStatus.kBuffering;
- }
-
- _onWebSocketClose(e) {
- if (this._requestAbort === true) {
- this._requestAbort = false;
- return;
- }
-
- this.status = LoaderStatus.kComplete;
-
- if (this._onComplete) {
- this._onComplete(0, this._receivedLength - 1);
- }
- }
-
- _onWebSocketMessage(e) {
- if (e.data instanceof ArrayBuffer) {
- this._dispatchArrayBuffer(e.data);
- } else if (e.data instanceof Blob) {
- let reader = new FileReader();
- reader.onload = () => {
- this._dispatchArrayBuffer(reader.result);
- };
- reader.readAsArrayBuffer(e.data);
- } else {
- this.status = LoaderStatus.kError;
- let info = { code: -1, msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name };
-
- if (this._onError) {
- this._onError(LoaderErrors.EXCEPTION, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
- }
-
- _dispatchArrayBuffer(arraybuffer) {
- let chunk = arraybuffer;
- let byteStart = this._receivedLength;
- this._receivedLength += chunk.byteLength;
-
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength);
- }
- }
-
- _onWebSocketError(e) {
- this.status = LoaderStatus.kError;
-
- let info = {
- code: e.code,
- msg: e.message,
- };
-
- if (this._onError) {
- this._onError(LoaderErrors.EXCEPTION, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
-}
-
-export default WebSocketLoader;
diff --git a/src/flv.js/io/xhr-moz-chunked-loader.js b/src/flv.js/io/xhr-moz-chunked-loader.js
deleted file mode 100644
index fb6185e..0000000
--- a/src/flv.js/io/xhr-moz-chunked-loader.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-
-// For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`
-class MozChunkedLoader extends BaseLoader {
- static isSupported() {
- try {
- let xhr = new XMLHttpRequest();
- // Firefox 37- requires .open() to be called before setting responseType
- xhr.open('GET', 'https://example.com', true);
- xhr.responseType = 'moz-chunked-arraybuffer';
- return xhr.responseType === 'moz-chunked-arraybuffer';
- } catch (e) {
- Log.w('MozChunkedLoader', e.message);
- return false;
- }
- }
-
- constructor(seekHandler, config) {
- super('xhr-moz-chunked-loader');
- this.TAG = 'MozChunkedLoader';
-
- this._seekHandler = seekHandler;
- this._config = config;
- this._needStash = true;
-
- this._xhr = null;
- this._requestAbort = false;
- this._contentLength = null;
- this._receivedLength = 0;
- }
-
- destroy() {
- if (this.isWorking()) {
- this.abort();
- }
- if (this._xhr) {
- this._xhr.onreadystatechange = null;
- this._xhr.onprogress = null;
- this._xhr.onloadend = null;
- this._xhr.onerror = null;
- this._xhr = null;
- }
- super.destroy();
- }
-
- open(dataSource, range) {
- this._dataSource = dataSource;
- this._range = range;
-
- let sourceURL = dataSource.url;
- if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
- sourceURL = dataSource.redirectedURL;
- }
-
- let seekConfig = this._seekHandler.getConfig(sourceURL, range);
- this._requestURL = seekConfig.url;
-
- let xhr = (this._xhr = new XMLHttpRequest());
- xhr.open('GET', seekConfig.url, true);
- xhr.responseType = 'moz-chunked-arraybuffer';
- xhr.onreadystatechange = this._onReadyStateChange.bind(this);
- xhr.onprogress = this._onProgress.bind(this);
- xhr.onloadend = this._onLoadEnd.bind(this);
- xhr.onerror = this._onXhrError.bind(this);
-
- // cors is auto detected and enabled by xhr
-
- // withCredentials is disabled by default
- if (dataSource.withCredentials && xhr['withCredentials']) {
- xhr.withCredentials = true;
- }
-
- if (typeof seekConfig.headers === 'object') {
- let headers = seekConfig.headers;
-
- for (let key in headers) {
- if (headers.hasOwnProperty(key)) {
- xhr.setRequestHeader(key, headers[key]);
- }
- }
- }
-
- this.status = LoaderStatus.kConnecting;
- xhr.send();
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
-
- abort() {
- this._requestAbort = true;
- if (this._xhr) {
- this._xhr.abort();
- }
- this.status = LoaderStatus.kComplete;
- }
-
- _onReadyStateChange(e) {
- let xhr = e.target;
-
- if (xhr.readyState === 2) {
- // HEADERS_RECEIVED
- if (this.onHeaderReceived) {
- this.onHeaderReceived(xhr.getAllResponseHeaders());
- }
- if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {
- if (this._onURLRedirect) {
- let redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
- this._onURLRedirect(redirectedURL);
- }
- }
-
- if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {
- this.status = LoaderStatus.kError;
- if (this._onError) {
- this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText });
- } else {
- throw new RuntimeException(
- 'MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText,
- );
- }
- } else {
- this.status = LoaderStatus.kBuffering;
- }
- }
- }
-
- _onProgress(e) {
- if (this.status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
-
- if (this._contentLength === null) {
- if (e.total !== null && e.total !== 0) {
- this._contentLength = e.total;
- if (this._onContentLengthKnown) {
- this._onContentLengthKnown(this._contentLength);
- }
- }
- }
-
- let chunk = e.target.response;
- let byteStart = this._range.from + this._receivedLength;
- this._receivedLength += chunk.byteLength;
-
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength);
- }
- }
-
- _onLoadEnd(e) {
- if (this._requestAbort === true) {
- this._requestAbort = false;
- return;
- } else if (this.status === LoaderStatus.kError) {
- return;
- }
-
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
-
- _onXhrError(e) {
- this.status = LoaderStatus.kError;
- let type = 0;
- let info = null;
-
- if (this._contentLength && e.loaded < this._contentLength) {
- type = LoaderErrors.EARLY_EOF;
- info = { code: -1, msg: 'Moz-Chunked stream meet Early-Eof' };
- } else {
- type = LoaderErrors.EXCEPTION;
- info = { code: -1, msg: e.constructor.name + ' ' + e.type };
- }
-
- if (this._onError) {
- this._onError(type, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
-}
-
-export default MozChunkedLoader;
diff --git a/src/flv.js/io/xhr-range-loader.js b/src/flv.js/io/xhr-range-loader.js
deleted file mode 100644
index 6c0dd7d..0000000
--- a/src/flv.js/io/xhr-range-loader.js
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import SpeedSampler from './speed-sampler.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-
-// Universal IO Loader, implemented by adding Range header in xhr's request header
-class RangeLoader extends BaseLoader {
- static isSupported() {
- try {
- let xhr = new XMLHttpRequest();
- xhr.open('GET', 'https://example.com', true);
- xhr.responseType = 'arraybuffer';
- return xhr.responseType === 'arraybuffer';
- } catch (e) {
- Log.w('RangeLoader', e.message);
- return false;
- }
- }
-
- constructor(seekHandler, config) {
- super('xhr-range-loader');
- this.TAG = 'RangeLoader';
-
- this._seekHandler = seekHandler;
- this._config = config;
- this._needStash = false;
-
- this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192];
- this._currentChunkSizeKB = 384;
- this._currentSpeedNormalized = 0;
- this._zeroSpeedChunkCount = 0;
-
- this._xhr = null;
- this._speedSampler = new SpeedSampler();
-
- this._requestAbort = false;
- this._waitForTotalLength = false;
- this._totalLengthReceived = false;
-
- this._currentRequestURL = null;
- this._currentRedirectedURL = null;
- this._currentRequestRange = null;
- this._totalLength = null; // size of the entire file
- this._contentLength = null; // Content-Length of entire request range
- this._receivedLength = 0; // total received bytes
- this._lastTimeLoaded = 0; // received bytes of current request sub-range
- }
-
- destroy() {
- if (this.isWorking()) {
- this.abort();
- }
- if (this._xhr) {
- this._xhr.onreadystatechange = null;
- this._xhr.onprogress = null;
- this._xhr.onload = null;
- this._xhr.onerror = null;
- this._xhr = null;
- }
- super.destroy();
- this._speedSampler.destroy();
- }
-
- get currentSpeed() {
- return this._speedSampler.lastSecondKBps;
- }
-
- open(dataSource, range) {
- this._dataSource = dataSource;
- this._range = range;
- this.status = LoaderStatus.kConnecting;
-
- let useRefTotalLength = false;
- if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {
- useRefTotalLength = true;
- this._totalLength = this._dataSource.filesize;
- }
-
- if (!this._totalLengthReceived && !useRefTotalLength) {
- // We need total filesize
- this._waitForTotalLength = true;
- this._internalOpen(this._dataSource, { from: 0, to: -1 });
- } else {
- // We have filesize, start loading
- this._openSubRange();
- }
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
-
- _openSubRange() {
- let chunkSize = this._currentChunkSizeKB * 1024;
-
- let from = this._range.from + this._receivedLength;
- let to = from + chunkSize;
-
- if (this._contentLength != null) {
- if (to - this._range.from >= this._contentLength) {
- to = this._range.from + this._contentLength - 1;
- }
- }
-
- this._currentRequestRange = { from, to };
- this._internalOpen(this._dataSource, this._currentRequestRange);
- }
-
- _internalOpen(dataSource, range) {
- this._lastTimeLoaded = 0;
-
- let sourceURL = dataSource.url;
- if (this._config.reuseRedirectedURL) {
- if (this._currentRedirectedURL != undefined) {
- sourceURL = this._currentRedirectedURL;
- } else if (dataSource.redirectedURL != undefined) {
- sourceURL = dataSource.redirectedURL;
- }
- }
-
- let seekConfig = this._seekHandler.getConfig(sourceURL, range);
- this._currentRequestURL = seekConfig.url;
-
- let xhr = (this._xhr = new XMLHttpRequest());
- xhr.open('GET', seekConfig.url, true);
- xhr.responseType = 'arraybuffer';
- xhr.onreadystatechange = this._onReadyStateChange.bind(this);
- xhr.onprogress = this._onProgress.bind(this);
- xhr.onload = this._onLoad.bind(this);
- xhr.onerror = this._onXhrError.bind(this);
-
- if (dataSource.withCredentials && xhr['withCredentials']) {
- xhr.withCredentials = true;
- }
-
- if (typeof seekConfig.headers === 'object') {
- let headers = seekConfig.headers;
-
- for (let key in headers) {
- if (headers.hasOwnProperty(key)) {
- xhr.setRequestHeader(key, headers[key]);
- }
- }
- }
-
- xhr.send();
- }
-
- abort() {
- this._requestAbort = true;
- this._internalAbort();
- this.status = LoaderStatus.kComplete;
- }
-
- _internalAbort() {
- if (this._xhr) {
- this._xhr.onreadystatechange = null;
- this._xhr.onprogress = null;
- this._xhr.onload = null;
- this._xhr.onerror = null;
- this._xhr.abort();
- this._xhr = null;
- }
- }
-
- _onReadyStateChange(e) {
- let xhr = e.target;
-
- if (xhr.readyState === 2) {
- // HEADERS_RECEIVED
- if (this.onHeaderReceived) {
- this.onHeaderReceived(xhr.getAllResponseHeaders());
- }
- if (xhr.responseURL != undefined) {
- // if the browser support this property
- let redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
- if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {
- this._currentRedirectedURL = redirectedURL;
- if (this._onURLRedirect) {
- this._onURLRedirect(redirectedURL);
- }
- }
- }
-
- if (xhr.status >= 200 && xhr.status <= 299) {
- if (this._waitForTotalLength) {
- return;
- }
- this.status = LoaderStatus.kBuffering;
- } else {
- this.status = LoaderStatus.kError;
- if (this._onError) {
- this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText });
- } else {
- throw new RuntimeException('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
- }
- }
- }
- }
-
- _onProgress(e) {
- if (this.status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
-
- if (this._contentLength === null) {
- let openNextRange = false;
-
- if (this._waitForTotalLength) {
- this._waitForTotalLength = false;
- this._totalLengthReceived = true;
- openNextRange = true;
-
- let total = e.total;
- this._internalAbort();
- if ((total != null) & (total !== 0)) {
- this._totalLength = total;
- }
- }
-
- // calculate currrent request range's contentLength
- if (this._range.to === -1) {
- this._contentLength = this._totalLength - this._range.from;
- } else {
- // to !== -1
- this._contentLength = this._range.to - this._range.from + 1;
- }
-
- if (openNextRange) {
- this._openSubRange();
- return;
- }
- if (this._onContentLengthKnown) {
- this._onContentLengthKnown(this._contentLength);
- }
- }
-
- let delta = e.loaded - this._lastTimeLoaded;
- this._lastTimeLoaded = e.loaded;
- this._speedSampler.addBytes(delta);
- }
-
- _normalizeSpeed(input) {
- let list = this._chunkSizeKBList;
- let last = list.length - 1;
- let mid = 0;
- let lbound = 0;
- let ubound = last;
-
- if (input < list[0]) {
- return list[0];
- }
-
- while (lbound <= ubound) {
- mid = lbound + Math.floor((ubound - lbound) / 2);
- if (mid === last || (input >= list[mid] && input < list[mid + 1])) {
- return list[mid];
- } else if (list[mid] < input) {
- lbound = mid + 1;
- } else {
- ubound = mid - 1;
- }
- }
- }
-
- _onLoad(e) {
- if (this.status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
-
- if (this._waitForTotalLength) {
- this._waitForTotalLength = false;
- return;
- }
-
- this._lastTimeLoaded = 0;
- let KBps = this._speedSampler.lastSecondKBps;
- if (KBps === 0) {
- this._zeroSpeedChunkCount++;
- if (this._zeroSpeedChunkCount >= 3) {
- // Try get currentKBps after 3 chunks
- KBps = this._speedSampler.currentKBps;
- }
- }
-
- if (KBps !== 0) {
- let normalized = this._normalizeSpeed(KBps);
- if (this._currentSpeedNormalized !== normalized) {
- this._currentSpeedNormalized = normalized;
- this._currentChunkSizeKB = normalized;
- }
- }
-
- let chunk = e.target.response;
- let byteStart = this._range.from + this._receivedLength;
- this._receivedLength += chunk.byteLength;
-
- let reportComplete = false;
-
- if (this._contentLength != null && this._receivedLength < this._contentLength) {
- // continue load next chunk
- this._openSubRange();
- } else {
- reportComplete = true;
- }
-
- // dispatch received chunk
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength);
- }
-
- if (reportComplete) {
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
- }
-
- _onXhrError(e) {
- this.status = LoaderStatus.kError;
- let type = 0;
- let info = null;
-
- if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) {
- type = LoaderErrors.EARLY_EOF;
- info = { code: -1, msg: 'RangeLoader meet Early-Eof' };
- } else {
- type = LoaderErrors.EXCEPTION;
- info = { code: -1, msg: e.constructor.name + ' ' + e.type };
- }
-
- if (this._onError) {
- this._onError(type, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
-}
-
-export default RangeLoader;
diff --git a/src/flv.js/io/xyvod-loader.js b/src/flv.js/io/xyvod-loader.js
deleted file mode 100644
index e89c732..0000000
--- a/src/flv.js/io/xyvod-loader.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2017 Shenzhen Onething Technologies Co., Ltd. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-
-class XYVODLoader extends BaseLoader {
- static isSupported() {
- try {
- // fetch + stream is broken on Microsoft Edge. Disable before build 15048.
- // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/
- // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.
- let isWorkWellEdge = Browser.msedge && Browser.version.minor >= 15048;
- let browserNotBlacklisted = Browser.msedge ? isWorkWellEdge : true;
- return self.fetch && self.ReadableStream && browserNotBlacklisted;
- } catch (e) {
- return false;
- }
- }
-
- constructor(seekHandler, config, mediaElement) {
- super('xyvod-loader');
-
- //console.log('---player constructor');
- this.TAG = 'XLLoader';
- this._seekHandler = seekHandler;
- this._config = config;
- this._needStash = true;
- this._mediaElement = mediaElement;
- this._dataSource = null;
-
- this._receivedLength = 0;
-
- this._xyvod = null;
- this._loadInfo = { cdnBytes: 0, p2pBytes: 0 };
- this._backupLoader = null;
- }
-
- setBackupLoader(backupLoader) {
- this._backupLoader = backupLoader;
- this._backupLoader.onComplete = this._onBackupLoaderComplete.bind(this);
- this._backupLoader.onDataArrival = this._onBackupLoaderLoad.bind(this);
- }
-
- destroy() {
- this.abort();
- // console.log('---player destroy');
- this._mediaElement = null;
- this._destroyP2pIO();
- this._dataSource = null;
- if (this._backupLoader) {
- this._backupLoader.destroy();
- this._backupLoader = null;
- }
- this._loadInfo = { cdnBytes: 0, p2pBytes: 0 };
- super.destroy();
- }
-
- open(dataSource, range) {
- // console.log('---player open');
- this._range = range;
- this._receivedLength = 0;
- this.status = LoaderStatus.kConnecting;
- this._dataSource = dataSource;
-
- if (window.xyflv) {
- let { XYVOD, XYVODEvent } = window.xyflv;
- if (this._xyvod === null) {
- // console.log('---before new XYVOD');
- this._xyvod = new XYVOD({
- url: dataSource.url,
- media: this._mediaElement,
- });
- this._xyvod.on(XYVODEvent.DATA, ({ buffer, offset }) => {
- this._receivedLength += buffer.byteLength;
- let loadinfo = this._xyvod.info;
- if (this._onDataArrival) {
- // console.log('---arrival, offset:', offset);
- this._onDataArrival(buffer, offset, this._receivedLength, {
- cdn: loadinfo.cdnBytes - this._loadInfo.cdnBytes,
- p2p: loadinfo.p2pBytes - this._loadInfo.p2pBytes,
- });
- this._loadInfo = loadinfo;
- }
- });
- this._xyvod.on(XYVODEvent.END, () => {
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- });
- this._xyvod.on(XYVODEvent.ERROR, (error) => {
- this._onLoaderError();
- });
- }
- try {
- this._xyvod.open(this._range.from);
- } catch (err) {
- Log.e(this.TAG, `xyvod-loader error:${err}`);
- this._backupLoader.open(dataSource, range);
- }
- this.status = LoaderStatus.kBuffering;
- } else {
- this._backupLoader.open(dataSource, range);
- }
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
-
- abort() {
- if (this.isWorking()) {
- if (this._xyvod) this._xyvod.close();
- this._backupLoader.abort();
- this.status = LoaderStatus.kComplete;
- }
- }
-
- _onBackupLoaderLoad(chunk, byteStart, receivedLength) {
- this._receivedLength += chunk.byteLength;
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength, { backup: chunk.byteLength });
- }
- }
-
- _onBackupLoaderComplete(from, to) {
- if (this._status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
- if (this._range && this._status != LoaderStatus.kComplete) {
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
- }
-
- _onLoaderError(e) {
- Log.w(this.TAG, 'XYIOError: code-' + String(e));
- this._switchIO();
- }
-
- _switchIO() {
- this._destroyP2pIO();
- if (this.onNeedStashBuffer) {
- this.onNeedStashBuffer(this._backupLoader.needStashBuffer);
- }
- let backupRange = Object.assign({}, this._range);
- backupRange.from = this._range.from + this._receivedLength;
- this._backupLoader.open(this._dataSource, backupRange);
- }
-
- _destroyP2pIO() {
- if (this._xyvod) {
- this._xyvod.dispose();
- this._xyvod = null;
- }
- }
-}
-
-export default XYVODLoader;
diff --git a/src/flv.js/io/yf-loader.js b/src/flv.js/io/yf-loader.js
deleted file mode 100644
index d530dce..0000000
--- a/src/flv.js/io/yf-loader.js
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import { BaseLoader, LoaderStatus, LoaderErrors } from './loader.js';
-import { RuntimeException } from '../utils/exception.js';
-// Quick Fix
-// Be Careful: We don't provide any node.js modules
-// You MUST install these modules manually
-import { Buffer } from 'buffer';
-//import YFCloudIO from '@bilibili-player/component.yfcloudio';
-
-// For FLV over WebSocket live stream
-class YFLoader extends BaseLoader {
- static isSupported() {
- return true;
- }
-
- constructor(seekHandler, config, mediaElement, bNewSlice) {
- super('yf-loader');
- this.TAG = 'YFLoader';
- this._requestAbort = false;
- this._receivedLength = 0;
- this._needStash = false;
- this._p2pIO = null;
- this._dataSource = null;
- this._mediaElement = mediaElement;
- this._bNewSlice = bNewSlice ? bNewSlice : false;
- this._loadInfo = { cdnloaded: 0, scdnloaded: 0 };
- this._stashSize = 0;
- this._backupLoader = null;
- this._noResource = false;
- }
-
- setBackupLoader(backupLoader) {
- this._backupLoader = backupLoader;
- this._backupLoader.onComplete = this._onBackupLoaderComplete.bind(this);
- this._backupLoader.onDataArrival = this._onBackupLoaderLoad.bind(this);
- }
-
- destroy() {
- this.abort();
- this._destroyP2pIO();
- this._backupLoader.destroy();
- this._backupLoader = null;
- this._dataSource = null;
- this._mediaElement = null;
- this._loadInfo = { cdnloaded: 0, scdnloaded: 0 };
- this._stashSize = 0;
- this._noResource = false;
- this._bNewSlice = false;
- super.destroy();
- }
-
- open(dataSource, range) {
- this._dataSource = dataSource;
- try {
- this._range = range;
- // seek
- if (this._p2pIO) {
- this._destroyP2pIO();
- }
- if (window.YFCloudIO && !this._noResource) {
- this._createP2pIO();
- //this._p2pConfig.domain = dataSource.url.match(/\/?([a-zA-Z0-9.-]+)\//)[1];
- this._p2pConfig.domain = 'upos-hz-mirrorks3u.acgvideo.com';
- this._p2pIO.init(this._mediaElement, dataSource.url, this._p2pConfig);
- this._p2pIO.load(range, this._bNewSlice, this._stashSize);
- } else {
- if (this.onNeedStashBuffer) {
- this.onNeedStashBuffer(this._backupLoader.needStashBuffer);
- }
- this._backupLoader.open(this._dataSource, range);
- }
- this.status = LoaderStatus.kConnecting;
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- } catch (e) {
- this.status = LoaderStatus.kError;
- let info = { code: e.code, msg: e.message };
- if (this._onError) {
- this._onError(LoaderErrors.EXCEPTION, info);
- } else {
- throw new RuntimeException(info.msg);
- }
- }
- }
-
- abort() {
- let p2pIO = this._p2pIO;
- if (p2pIO && this._requestAbort == false) {
- // CONNECTING
- p2pIO.pause();
- }
- this._backupLoader.abort();
- this._requestAbort = true;
- // this._loadInfo = { cdnloaded: 0, scdnloaded: 0 };
- this.status = LoaderStatus.kComplete;
- }
-
- resume(range) {
- if (this._p2pIO) {
- this._requestAbort = false;
- this._p2pIO.seek(range);
- this.status = LoaderStatus.kConnecting;
- if (this.onStarted) {
- this.onStarted(Date.now());
- }
- }
- }
-
- setStashSize(stashSize) {
- if (this._stashSize === stashSize) {
- return;
- }
- this._stashSize = stashSize;
- if (this._p2pIO) {
- this._p2pIO.setThreshold(this._stashSize);
- }
- }
-
- get noResource() {
- return this._noResource;
- }
-
- set noResource(noResource) {
- this._noResource = noResource;
- }
-
- useP2pIO() {
- return this._p2pIO != null;
- }
-
- _switchIO() {
- this._destroyP2pIO();
- if (this.onNeedStashBuffer) {
- this.onNeedStashBuffer(this._backupLoader.needStashBuffer);
- }
- let backupRange = Object.assign({}, this._range);
- backupRange.from = this._range.from + this._receivedLength;
- this._backupLoader.open(this._dataSource, backupRange);
- }
-
- _createP2pIO() {
- // Log.w(this.TAG, 'create p2pio');
- let YFCloudIO = window.YFCloudIO;
- this._p2pIO = new YFCloudIO();
- this._p2pIO.onLoadError = this._onLoaderError.bind(this);
- this._p2pIO.onDataArrive = this._onLoad.bind(this);
- this._p2pIO.onIOComplete = this._onLoaderComplete.bind(this);
- this._p2pIO.noResources = this._onNoResources.bind(this);
- if (this.onURLRedirect) {
- this._p2pIO.onURLRedirect = this.onURLRedirect.bind(this);
- }
- this._p2pConfig = {
- limitBufferLength: 150,
- taccesskey: 'b0c2a0fef8cf47608ec06008e089b87f3d4a965b',
- tokenid: 'b048975020d226f7bb64eff579a5751f6738367c',
- };
- if (this.onNeedStashBuffer) {
- this.onNeedStashBuffer(false);
- }
- }
-
- _destroyP2pIO() {
- if (this._p2pIO) {
- // Log.w(this.TAG, 'destroy p2pio');
- this._p2pIO.pause();
- this._p2pIO.destroy();
- this._p2pIO = null;
- this._p2pConfig = null;
- }
- }
-
- _onLoad(chunk, byteStart) {
- if (this._status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
- if (this._p2pIO == null) {
- return;
- }
- let data = Buffer.from(chunk).buffer;
- this._receivedLength += data.byteLength;
- let loadinfo = this._p2pIO.loadedInfo();
- //Log.v(this.TAG, 'Load Info:' + JSON.stringify(loadinfo));
- if (this._onDataArrival) {
- this._onDataArrival(data, byteStart, this._receivedLength, {
- cdn: loadinfo.cdnloaded - this._loadInfo.cdnloaded,
- p2p: loadinfo.scdnloaded - this._loadInfo.scdnloaded,
- backup: 0,
- });
- this._loadInfo = loadinfo;
- }
- if (this._noResource && !this._bNewSlice) {
- this._switchIO();
- } else if (this._bNewSlice === true) {
- this._bNewSlice = false;
- }
- }
-
- _onBackupLoaderLoad(chunk, byteStart, receivedLength) {
- this._receivedLength += chunk.byteLength;
- if (this._onDataArrival) {
- this._onDataArrival(chunk, byteStart, this._receivedLength, { cdn: 0, p2p: 0, backup: chunk.byteLength });
- }
- }
-
- _onLoaderComplete() {
- if (this._status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
- if (this._range && this._status != LoaderStatus.kComplete) {
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
- }
-
- _onBackupLoaderComplete(from, to) {
- if (this._status === LoaderStatus.kError) {
- // Ignore error response
- return;
- }
- if (this._range && this._status != LoaderStatus.kComplete) {
- this.status = LoaderStatus.kComplete;
- if (this._onComplete) {
- this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
- }
- }
- }
-
- _onLoaderError(e) {
- Log.w(this.TAG, 'YFIOError: code-' + String(e));
- this._switchIO();
- }
-
- _onNoResources() {
- this._noResource = true;
- }
-}
-
-export default YFLoader;
diff --git a/src/flv.js/player/flv-player.js b/src/flv.js/player/flv-player.js
deleted file mode 100644
index 110f86f..0000000
--- a/src/flv.js/player/flv-player.js
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from '../utils/logger.js';
-import Browser from '../utils/browser.js';
-import PlayerEvents, { OTHER_EVENTS_POLYMER } from './player-events.js';
-import Transmuxer from '../core/transmuxer.js';
-import TransmuxingEvents from '../core/transmuxing-events.js';
-import MSEController from '../core/mse-controller.js';
-import MSEEvents from '../core/mse-events.js';
-import { ErrorTypes, ErrorDetails } from './player-errors.js';
-import { createDefaultConfig } from '../config.js';
-import { InvalidArgumentException, IllegalStateException } from '../utils/exception.js';
-
-class FlvPlayer {
- constructor(mediaDataSource, config) {
- this.TAG = 'FlvPlayer';
- this._type = 'FlvPlayer';
- this._emitter = new EventEmitter();
- this._createdTime = Date.now();
-
- this._config = createDefaultConfig();
- if (typeof config === 'object') {
- Object.assign(this._config, config);
- }
-
- if (mediaDataSource.type.toLowerCase() !== 'flv') {
- throw new InvalidArgumentException('FlvPlayer requires an flv MediaDataSource input!');
- }
-
- if (mediaDataSource.isLive === true) {
- this._config.isLive = true;
- }
-
- this.e = {
- onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
- onvSeeking: this._onvSeeking.bind(this),
- onvCanPlay: this._onvCanPlay.bind(this),
- onvStalled: this._onvStalled.bind(this),
- onvProgress: this._onvProgress.bind(this),
- };
-
- if (self.performance && self.performance.now) {
- this._now = self.performance.now.bind(self.performance);
- } else {
- this._now = Date.now;
- }
-
- this._pendingSeekTime = null; // in seconds
- this._requestSetTime = false;
- this._seekpointRecord = null;
- this._progressChecker = null;
-
- this._mediaDataSource = mediaDataSource;
- this._mediaElement = null;
- this._msectl = null;
- this._transmuxer = null;
-
- this._mseSourceOpened = false;
- this._hasPendingLoad = false;
- this._receivedCanPlay = false;
-
- this._mediaInfo = null;
- this._statisticsInfo = null;
- let chromeNeedIDRFix =
- Browser.chrome &&
- (Browser.version.major < 50 || (Browser.version.major === 50 && Browser.version.build < 2661));
- this._alwaysSeekKeyframe = chromeNeedIDRFix || Browser.msedge || Browser.msie ? true : false;
-
- if (this._alwaysSeekKeyframe) {
- this._config.accurateSeek = false;
- }
- delete window['__FLV_P2P_TYPE__'];
- }
-
- destroy() {
- if (this._progressChecker != null) {
- window.clearInterval(this._progressChecker);
- this._progressChecker = null;
- }
- if (this._transmuxer) {
- this.unload();
- }
- if (this._mediaElement) {
- this.detachMediaElement();
- }
- this.e = null;
- this._mediaDataSource = null;
-
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- on(event, listener) {
- if (event === PlayerEvents.MEDIA_INFO) {
- if (this._mediaInfo != null) {
- Promise.resolve().then(() => {
- this._emitter.emit(PlayerEvents.MEDIA_INFO, this.mediaInfo);
- });
- }
- } else if (event === PlayerEvents.STATISTICS_INFO) {
- if (this._statisticsInfo != null) {
- Promise.resolve().then(() => {
- this._emitter.emit(PlayerEvents.STATISTICS_INFO, this.statisticsInfo);
- });
- }
- }
- this._emitter.addListener(event, listener);
- }
-
- one(event, listener) {
- this._emitter.once(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-
- attachMediaElement(mediaElement) {
- this._mediaElement = mediaElement;
- mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
- mediaElement.addEventListener('seeking', this.e.onvSeeking);
- mediaElement.addEventListener('canplay', this.e.onvCanPlay);
- mediaElement.addEventListener('stalled', this.e.onvStalled);
- mediaElement.addEventListener('progress', this.e.onvProgress);
-
- this._msectl = new MSEController(this._config);
-
- this._msectl.on(MSEEvents.UPDATE_END, this._onmseUpdateEnd.bind(this));
- this._msectl.on(MSEEvents.BUFFER_FULL, this._onmseBufferFull.bind(this));
- this._msectl.on(MSEEvents.SOURCE_OPEN, () => {
- this._mseSourceOpened = true;
- if (this._hasPendingLoad) {
- this._hasPendingLoad = false;
- this.load();
- }
- });
- this._msectl.on(MSEEvents.ERROR, (info) => {
- this._emitter.emit(PlayerEvents.ERROR, ErrorTypes.MEDIA_ERROR, ErrorDetails.MEDIA_MSE_ERROR, info);
- });
-
- this._msectl.attachMediaElement(mediaElement);
-
- if (this._pendingSeekTime != null) {
- try {
- mediaElement.currentTime = this._pendingSeekTime;
- this._pendingSeekTime = null;
- } catch (e) {
- // IE11 may throw InvalidStateError if readyState === 0
- // We can defer set currentTime operation after loadedmetadata
- }
- }
- }
-
- detachMediaElement() {
- if (this._mediaElement) {
- this._msectl.detachMediaElement();
- this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
- this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);
- this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
- this._mediaElement.removeEventListener('stalled', this.e.onvStalled);
- this._mediaElement.removeEventListener('progress', this.e.onvProgress);
- this._mediaElement = null;
- }
- if (this._msectl) {
- this._msectl.destroy();
- this._msectl = null;
- }
- }
-
- load() {
- if (!this._mediaElement) {
- throw new IllegalStateException('HTMLMediaElement must be attached before load()!');
- }
- if (this._transmuxer) {
- throw new IllegalStateException('FlvPlayer.load() has been called, please call unload() first!');
- }
- if (this._hasPendingLoad) {
- return;
- }
-
- if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {
- this._hasPendingLoad = true;
- return;
- }
-
- if (this._mediaElement.readyState > 0) {
- this._requestSetTime = true;
- // IE11 may throw InvalidStateError if readyState === 0
- this._mediaElement.currentTime = 0;
- }
-
- this._transmuxer = new Transmuxer(this._mediaDataSource, this._config, this._mediaElement);
-
- this._transmuxer.on(TransmuxingEvents.INIT_SEGMENT, (type, is) => {
- this._msectl.appendInitSegment(is);
- });
- this._transmuxer.on(TransmuxingEvents.MEDIA_SEGMENT, (type, ms) => {
- this._msectl.appendMediaSegment(ms);
- // lazyLoad check
- if (this._config.lazyLoad && !this._config.isLive) {
- let currentTime = this._mediaElement.currentTime;
- if (ms.info.endDts >= (currentTime + this._config.lazyLoadMaxDuration) * 1000) {
- if (this._progressChecker == null) {
- Log.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
- this._suspendTransmuxer();
- }
- }
- }
- });
- this._transmuxer.on(TransmuxingEvents.LOADING_COMPLETE, (from, to, requestUrl) => {
- this._msectl.endOfStream();
- this._emitter.emit(PlayerEvents.LOADING_COMPLETE, {
- requestUrl: requestUrl,
- metadata: this._mediaInfo ? this._mediaInfo.metadata : null,
- from: from,
- to: to,
- });
- try {
- const metadata = this._mediaInfo.metadata;
- const filesize = metadata.filesize;
- if (filesize && to && filesize !== to + 1) {
- this._emitter.emit(
- PlayerEvents.ERROR,
- ErrorTypes.OTHER_ERROR,
- ErrorDetails.ABNORMAL_SEGMENT_BYTELENGTH,
- { code: -1, msg: 'Abnormal segment bytelength' },
- );
- }
- } catch (e) {
- // do nothing
- }
- });
- this._transmuxer.on(TransmuxingEvents.RECOVERED_EARLY_EOF, () => {
- this._emitter.emit(PlayerEvents.RECOVERED_EARLY_EOF);
- });
- this._transmuxer.on(TransmuxingEvents.IO_ERROR, (detail, info) => {
- this._emitter.emit(PlayerEvents.ERROR, ErrorTypes.NETWORK_ERROR, detail, info);
- });
- this._transmuxer.on(TransmuxingEvents.DEMUX_ERROR, (detail, info) => {
- this._emitter.emit(PlayerEvents.ERROR, ErrorTypes.MEDIA_ERROR, detail, { code: -1, msg: info });
- });
- this._transmuxer.on(TransmuxingEvents.MEDIA_INFO, (mediaInfo) => {
- this._mediaInfo = mediaInfo;
- this._emitter.emit(PlayerEvents.MEDIA_INFO, Object.assign({}, mediaInfo));
- });
- this._transmuxer.on(TransmuxingEvents.STATISTICS_INFO, (statInfo) => {
- this._statisticsInfo = this._fillStatisticsInfo(statInfo);
- this._emitter.emit(PlayerEvents.STATISTICS_INFO, Object.assign({}, this._statisticsInfo));
- });
- this._transmuxer.on(TransmuxingEvents.RECOMMEND_SEEKPOINT, (milliseconds) => {
- if (this._mediaElement && !this._config.accurateSeek) {
- this._requestSetTime = true;
- this._mediaElement.currentTime = milliseconds / 1000;
- }
- });
- this._transmuxer.on(OTHER_EVENTS_POLYMER, (obj) => {
- this._emitter.emit(obj.eventName, ...obj.eventParams);
- });
-
- this._transmuxer.open();
- }
-
- unload() {
- if (this._mediaElement) {
- this._mediaElement.pause();
- }
- if (this._msectl) {
- this._msectl.seek(0);
- }
- if (this._transmuxer) {
- this._transmuxer.close();
- this._transmuxer.destroy();
- this._transmuxer = null;
- }
- }
-
- play() {
- return this._mediaElement.play();
- }
-
- pause() {
- this._mediaElement.pause();
- }
-
- get type() {
- return this._type;
- }
-
- get buffered() {
- return this._mediaElement.buffered;
- }
-
- get duration() {
- return this._mediaElement.duration;
- }
-
- get volume() {
- return this._mediaElement.volume;
- }
-
- set volume(value) {
- this._mediaElement.volume = value;
- }
-
- get muted() {
- return this._mediaElement.muted;
- }
-
- set muted(muted) {
- this._mediaElement.muted = muted;
- }
-
- get currentTime() {
- if (this._mediaElement) {
- return this._mediaElement.currentTime;
- }
- return 0;
- }
-
- set currentTime(seconds) {
- if (this._mediaElement) {
- this._internalSeek(seconds);
- } else {
- this._pendingSeekTime = seconds;
- }
- }
-
- get mediaInfo() {
- return Object.assign({}, this._mediaInfo);
- }
-
- get statisticsInfo() {
- if (this._statisticsInfo == null) {
- this._statisticsInfo = {};
- }
- this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);
- return Object.assign({}, this._statisticsInfo);
- }
-
- get createdTime() {
- return this._createdTime;
- }
-
- setP2pType(type, url) {
- let loaded = false;
- switch (type) {
- case 'yf-eg':
- if (window.YFCloudIO) {
- loaded = true;
- }
- this._config.p2pSdkSrc = url;
- break;
- case 'xl-eg':
- if (window.xyflv) {
- loaded = true;
- }
- this._config.p2pSdkSrc = url;
- break;
- default:
- this._config.p2pSdkSrc = undefined;
- break;
- }
- if (!loaded) {
- if (this._config.p2pSdkSrc) {
- this._loadP2pSdkScripts()
- .then(() => {
- Log.v(this.TAG, 'p2p Sdk Scripts Loaded');
- window['__FLV_P2P_TYPE__'] = type;
- this._config.p2pType = type;
- })
- .catch(() => {
- Log.w(this.TAG, 'load p2p sdk scripts failed');
- });
- }
- } else {
- window['__FLV_P2P_TYPE__'] = type;
- this._config.p2pType = type;
- }
- }
-
- _fillStatisticsInfo(statInfo) {
- statInfo.playerType = this._type;
-
- if (!(this._mediaElement instanceof HTMLVideoElement)) {
- return statInfo;
- }
-
- let hasQualityInfo = true;
- let decoded = 0;
- let dropped = 0;
-
- if (this._mediaElement.getVideoPlaybackQuality) {
- let quality = this._mediaElement.getVideoPlaybackQuality();
- decoded = quality.totalVideoFrames;
- dropped = quality.droppedVideoFrames;
- } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
- decoded = this._mediaElement.webkitDecodedFrameCount;
- dropped = this._mediaElement.webkitDroppedFrameCount;
- } else {
- hasQualityInfo = false;
- }
-
- if (hasQualityInfo) {
- statInfo.decodedFrames = decoded;
- statInfo.droppedFrames = dropped;
- }
-
- return statInfo;
- }
-
- _onmseUpdateEnd() {
- if (!this._config.lazyLoad || this._config.isLive) {
- return;
- }
-
- let buffered = this._mediaElement.buffered;
- let currentTime = this._mediaElement.currentTime;
- let currentRangeStart = 0;
- let currentRangeEnd = 0;
-
- for (let i = 0; i < buffered.length; i++) {
- let start = buffered.start(i);
- let end = buffered.end(i);
- if (start <= currentTime && currentTime < end) {
- currentRangeStart = start;
- currentRangeEnd = end;
- break;
- }
- }
-
- if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {
- Log.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
- this._suspendTransmuxer();
- }
- }
-
- _onmseBufferFull() {
- Log.v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');
- if (this._progressChecker == null) {
- this._suspendTransmuxer();
- }
- }
-
- _suspendTransmuxer() {
- if (this._transmuxer) {
- this._transmuxer.pause();
-
- if (this._progressChecker == null) {
- this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);
- }
- }
- }
-
- _checkProgressAndResume() {
- let currentTime = this._mediaElement.currentTime;
- let buffered = this._mediaElement.buffered;
-
- let needResume = false;
-
- for (let i = 0; i < buffered.length; i++) {
- let from = buffered.start(i);
- let to = buffered.end(i);
- if (currentTime >= from && currentTime < to) {
- if (currentTime >= to - this._config.lazyLoadRecoverDuration) {
- needResume = true;
- }
- break;
- }
- }
-
- if (needResume) {
- window.clearInterval(this._progressChecker);
- this._progressChecker = null;
- if (needResume) {
- Log.v(this.TAG, 'Continue loading from paused position');
- this._transmuxer.resume();
- }
- }
- }
-
- _isTimepointBuffered(seconds) {
- let buffered = this._mediaElement.buffered;
-
- for (let i = 0; i < buffered.length; i++) {
- let from = buffered.start(i);
- let to = buffered.end(i);
- if (seconds >= from && seconds < to) {
- return true;
- }
- }
- return false;
- }
-
- _internalSeek(seconds) {
- let directSeek = this._isTimepointBuffered(seconds);
-
- let directSeekBegin = false;
- let directSeekBeginTime = 0;
-
- if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {
- let videoBeginTime = this._mediaElement.buffered.start(0);
- if ((videoBeginTime < 1.0 && seconds < videoBeginTime) || Browser.safari) {
- directSeekBegin = true;
- // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
- directSeekBeginTime = Browser.safari ? 0.1 : videoBeginTime;
- }
- }
-
- if (directSeekBegin) {
- // seek to video begin, set currentTime directly if beginPTS buffered
- this._requestSetTime = true;
- this._mediaElement.currentTime = directSeekBeginTime;
- } else if (directSeek) {
- // buffered position
- if (!this._alwaysSeekKeyframe) {
- this._requestSetTime = true;
- this._mediaElement.currentTime = seconds;
- } else {
- let idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));
- this._requestSetTime = true;
- if (idr != null) {
- this._mediaElement.currentTime = idr.dts / 1000;
- } else {
- this._mediaElement.currentTime = seconds;
- }
- }
- if (this._progressChecker != null) {
- this._checkProgressAndResume();
- }
- } else {
- if (this._progressChecker != null) {
- window.clearInterval(this._progressChecker);
- this._progressChecker = null;
- }
- this._msectl.seek(seconds);
- this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds
- // no need to set mediaElement.currentTime if non-accurateSeek,
- // just wait for the recommend_seekpoint callback
- if (this._config.accurateSeek) {
- this._requestSetTime = true;
- this._mediaElement.currentTime = seconds;
- }
- }
- }
-
- _checkAndApplyUnbufferedSeekpoint() {
- if (this._seekpointRecord) {
- if (this._seekpointRecord.recordTime <= this._now() - 100) {
- let target = this._mediaElement.currentTime;
- this._seekpointRecord = null;
- if (!this._isTimepointBuffered(target)) {
- if (this._progressChecker != null) {
- window.clearTimeout(this._progressChecker);
- this._progressChecker = null;
- }
- // .currentTime is consists with .buffered timestamp
- // Chrome/Edge use DTS, while FireFox/Safari use PTS
- this._msectl.seek(target);
- this._transmuxer.seek(Math.floor(target * 1000));
- // set currentTime if accurateSeek, or wait for recommend_seekpoint callback
- if (this._config.accurateSeek) {
- this._requestSetTime = true;
- this._mediaElement.currentTime = target;
- }
- }
- } else {
- window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
- }
- }
- }
-
- _checkAndResumeStuckPlayback(stalled) {
- let media = this._mediaElement;
- if (stalled || !this._receivedCanPlay || media.readyState < 2) {
- // HAVE_CURRENT_DATA
- let buffered = media.buffered;
- if (buffered.length > 0 && media.currentTime < buffered.start(0)) {
- Log.w(this.TAG, `Playback seems stuck at ${media.currentTime}, seek to ${buffered.start(0)}`);
- this._requestSetTime = true;
- this._mediaElement.currentTime = buffered.start(0);
- this._mediaElement.removeEventListener('progress', this.e.onvProgress);
- }
- } else {
- // Playback didn't stuck, remove progress event listener
- this._mediaElement.removeEventListener('progress', this.e.onvProgress);
- }
- }
-
- _onvLoadedMetadata(e) {
- if (this._pendingSeekTime != null) {
- this._mediaElement.currentTime = this._pendingSeekTime;
- this._pendingSeekTime = null;
- }
- }
-
- _onvSeeking(e) {
- // handle seeking request from browser's progress bar
- let target = this._mediaElement.currentTime;
- let buffered = this._mediaElement.buffered;
-
- if (this._requestSetTime) {
- this._requestSetTime = false;
- return;
- }
-
- if (target < 1.0 && buffered.length > 0) {
- // seek to video begin, set currentTime directly if beginPTS buffered
- let videoBeginTime = buffered.start(0);
- if ((videoBeginTime < 1.0 && target < videoBeginTime) || Browser.safari) {
- this._requestSetTime = true;
- // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
- this._mediaElement.currentTime = Browser.safari ? 0.1 : videoBeginTime;
- return;
- }
- }
-
- if (this._isTimepointBuffered(target)) {
- if (this._alwaysSeekKeyframe) {
- let idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));
- if (idr != null) {
- this._requestSetTime = true;
- this._mediaElement.currentTime = idr.dts / 1000;
- }
- }
- if (this._progressChecker != null) {
- this._checkProgressAndResume();
- }
- return;
- }
-
- this._seekpointRecord = {
- seekPoint: target,
- recordTime: this._now(),
- };
- window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
- }
-
- _onvCanPlay(e) {
- this._receivedCanPlay = true;
- this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
- }
-
- _onvStalled(e) {
- this._checkAndResumeStuckPlayback(true);
- }
-
- _onvProgress(e) {
- this._checkAndResumeStuckPlayback();
- }
-
- _loadP2pSdkScripts() {
- return new Promise((resolve, reject) => {
- const script = document.createElement('script');
- script.src = this._config.p2pSdkSrc;
- script.onload = () => {
- window.clearTimeout(this._p2pSdkSrcTimer);
- resolve();
- };
- script.onerror = (err) => {
- window.clearTimeout(this._p2pSdkSrcTimer);
- reject();
- };
- document.body.appendChild(script);
- this._p2pSdkSrcTimer = window.setTimeout(() => {
- reject();
- }, 2000);
- });
- }
-}
-
-export default FlvPlayer;
diff --git a/src/flv.js/player/native-player.js b/src/flv.js/player/native-player.js
deleted file mode 100644
index f50f3c4..0000000
--- a/src/flv.js/player/native-player.js
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import PlayerEvents from './player-events.js';
-import { createDefaultConfig } from '../config.js';
-import { InvalidArgumentException, IllegalStateException } from '../utils/exception.js';
-
-// Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src.
-class NativePlayer {
- constructor(mediaDataSource, config) {
- this.TAG = 'NativePlayer';
- this._type = 'NativePlayer';
- this._emitter = new EventEmitter();
- this._createdTime = Date.now();
-
- this._config = createDefaultConfig();
- if (typeof config === 'object') {
- Object.assign(this._config, config);
- }
-
- if (mediaDataSource.type.toLowerCase() === 'flv') {
- throw new InvalidArgumentException("NativePlayer does't support flv MediaDataSource input!");
- }
- if (mediaDataSource.hasOwnProperty('segments')) {
- throw new InvalidArgumentException(
- `NativePlayer(${mediaDataSource.type}) doesn't support multipart playback!`,
- );
- }
-
- this.e = {
- onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
- };
-
- this._pendingSeekTime = null;
- this._statisticsReporter = null;
-
- this._mediaDataSource = mediaDataSource;
- this._mediaElement = null;
- }
-
- destroy() {
- if (this._mediaElement) {
- this.unload();
- this.detachMediaElement();
- }
- this.e = null;
- this._mediaDataSource = null;
- this._emitter.removeAllListeners();
- this._emitter = null;
- }
-
- on(event, listener) {
- if (event === PlayerEvents.MEDIA_INFO) {
- if (this._mediaElement != null && this._mediaElement.readyState !== 0) {
- // HAVE_NOTHING
- Promise.resolve().then(() => {
- this._emitter.emit(PlayerEvents.MEDIA_INFO, this.mediaInfo);
- });
- }
- } else if (event === PlayerEvents.STATISTICS_INFO) {
- if (this._mediaElement != null && this._mediaElement.readyState !== 0) {
- Promise.resolve().then(() => {
- this._emitter.emit(PlayerEvents.STATISTICS_INFO, this.statisticsInfo);
- });
- }
- }
- this._emitter.addListener(event, listener);
- }
-
- one(event, listener) {
- this._emitter.once(event, listener);
- }
-
- off(event, listener) {
- this._emitter.removeListener(event, listener);
- }
-
- attachMediaElement(mediaElement) {
- this._mediaElement = mediaElement;
- mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
-
- if (this._pendingSeekTime != null) {
- try {
- mediaElement.currentTime = this._pendingSeekTime;
- this._pendingSeekTime = null;
- } catch (e) {
- // IE11 may throw InvalidStateError if readyState === 0
- // Defer set currentTime operation after loadedmetadata
- }
- }
- }
-
- detachMediaElement() {
- if (this._mediaElement) {
- this._mediaElement.src = '';
- this._mediaElement.removeAttribute('src');
- this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
- this._mediaElement = null;
- }
- if (this._statisticsReporter != null) {
- window.clearInterval(this._statisticsReporter);
- this._statisticsReporter = null;
- }
- }
-
- load() {
- if (!this._mediaElement) {
- throw new IllegalStateException('HTMLMediaElement must be attached before load()!');
- }
- this._mediaElement.src = this._mediaDataSource.url;
-
- if (this._mediaElement.readyState > 0) {
- this._mediaElement.currentTime = 0;
- }
-
- this._mediaElement.preload = 'auto';
- this._mediaElement.load();
- this._statisticsReporter = window.setInterval(
- this._reportStatisticsInfo.bind(this),
- this._config.statisticsInfoReportInterval,
- );
- }
-
- unload() {
- if (this._mediaElement) {
- this._mediaElement.src = '';
- this._mediaElement.removeAttribute('src');
- }
- if (this._statisticsReporter != null) {
- window.clearInterval(this._statisticsReporter);
- this._statisticsReporter = null;
- }
- }
-
- play() {
- return this._mediaElement.play();
- }
-
- pause() {
- this._mediaElement.pause();
- }
-
- get type() {
- return this._type;
- }
-
- get buffered() {
- return this._mediaElement.buffered;
- }
-
- get duration() {
- return this._mediaElement.duration;
- }
-
- get volume() {
- return this._mediaElement.volume;
- }
-
- set volume(value) {
- this._mediaElement.volume = value;
- }
-
- get muted() {
- return this._mediaElement.muted;
- }
-
- set muted(muted) {
- this._mediaElement.muted = muted;
- }
-
- get currentTime() {
- if (this._mediaElement) {
- return this._mediaElement.currentTime;
- }
- return 0;
- }
-
- set currentTime(seconds) {
- if (this._mediaElement) {
- this._mediaElement.currentTime = seconds;
- } else {
- this._pendingSeekTime = seconds;
- }
- }
-
- get mediaInfo() {
- let mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/';
- let info = {
- mimeType: mediaPrefix + this._mediaDataSource.type,
- };
- if (this._mediaElement) {
- info.duration = Math.floor(this._mediaElement.duration * 1000);
- if (this._mediaElement instanceof HTMLVideoElement) {
- info.width = this._mediaElement.videoWidth;
- info.height = this._mediaElement.videoHeight;
- }
- }
- return info;
- }
-
- get statisticsInfo() {
- let info = {
- playerType: this._type,
- url: this._mediaDataSource.url,
- };
-
- if (!(this._mediaElement instanceof HTMLVideoElement)) {
- return info;
- }
-
- let hasQualityInfo = true;
- let decoded = 0;
- let dropped = 0;
-
- if (this._mediaElement.getVideoPlaybackQuality) {
- let quality = this._mediaElement.getVideoPlaybackQuality();
- decoded = quality.totalVideoFrames;
- dropped = quality.droppedVideoFrames;
- } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
- decoded = this._mediaElement.webkitDecodedFrameCount;
- dropped = this._mediaElement.webkitDroppedFrameCount;
- } else {
- hasQualityInfo = false;
- }
-
- if (hasQualityInfo) {
- info.decodedFrames = decoded;
- info.droppedFrames = dropped;
- }
-
- return info;
- }
-
- get createdTime() {
- return this._createdTime;
- }
-
- _onvLoadedMetadata(e) {
- if (this._pendingSeekTime != null) {
- this._mediaElement.currentTime = this._pendingSeekTime;
- this._pendingSeekTime = null;
- }
- this._emitter.emit(PlayerEvents.MEDIA_INFO, this.mediaInfo);
- }
-
- _reportStatisticsInfo() {
- this._emitter.emit(PlayerEvents.STATISTICS_INFO, this.statisticsInfo);
- }
-}
-
-export default NativePlayer;
diff --git a/src/flv.js/player/player-errors.js b/src/flv.js/player/player-errors.js
deleted file mode 100644
index 79a2d85..0000000
--- a/src/flv.js/player/player-errors.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { LoaderErrors } from '../io/loader.js';
-import DemuxErrors from '../demux/demux-errors.js';
-
-export const ErrorTypes = {
- NETWORK_ERROR: 'NetworkError',
- MEDIA_ERROR: 'MediaError',
- OTHER_ERROR: 'OtherError',
-};
-
-export const ErrorDetails = {
- NETWORK_EXCEPTION: LoaderErrors.EXCEPTION,
- NETWORK_STATUS_CODE_INVALID: LoaderErrors.HTTP_STATUS_CODE_INVALID,
- NETWORK_TIMEOUT: LoaderErrors.CONNECTING_TIMEOUT,
- NETWORK_UNRECOVERABLE_EARLY_EOF: LoaderErrors.UNRECOVERABLE_EARLY_EOF,
-
- MEDIA_MSE_ERROR: 'MediaMSEError',
-
- MEDIA_FORMAT_ERROR: DemuxErrors.FORMAT_ERROR,
- MEDIA_FORMAT_UNSUPPORTED: DemuxErrors.FORMAT_UNSUPPORTED,
- MEDIA_CODEC_UNSUPPORTED: DemuxErrors.CODEC_UNSUPPORTED,
-
- ABNORMAL_SEGMENT_BYTELENGTH: 'AbnormalSegmentBytelength',
-};
diff --git a/src/flv.js/player/player-events.js b/src/flv.js/player/player-events.js
deleted file mode 100644
index f87ea2b..0000000
--- a/src/flv.js/player/player-events.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const PlayerEvents = {
- ERROR: 'error',
- CREATE_LOADER: 'create_loader',
- LOADING_STARTED: 'loading_started',
- LOADING_COMPLETE: 'loading_complete',
- RECOVERED_EARLY_EOF: 'recovered_early_eof',
- MEDIA_INFO: 'media_info',
- STATISTICS_INFO: 'statistics_info',
- HTTP_REQUEST_ENDED: 'http_request_ended',
- P2P_REQUEST_ENDED: 'p2p_request_ended',
- HTTP_HEADER_RECEIVED: 'http_header_received',
- AUDIO_FRAME_DECODED: 'audio_frame_decoded',
- VIDEO_FRAME_DECODED: 'video_frame_decoded',
- CTS_WARNING: 'cts_warning',
- FLV_DATA_ABNORMAL: 'flv_data_abnormal',
-};
-
-/**
- * @desc Internal. Delivery arbitrary events to player.
- */
-export const OTHER_EVENTS_POLYMER = 'other_events_polymer';
-
-export default PlayerEvents;
diff --git a/src/flv.js/remux/aac-silent.js b/src/flv.js/remux/aac-silent.js
deleted file mode 100644
index 21be3d2..0000000
--- a/src/flv.js/remux/aac-silent.js
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class AAC {
- static getSilentFrame(codec, channelCount) {
- if (codec === 'mp4a.40.2') {
- // handle LC-AAC
- if (channelCount === 1) {
- return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);
- } else if (channelCount === 2) {
- return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);
- } else if (channelCount === 3) {
- return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);
- } else if (channelCount === 4) {
- return new Uint8Array([
- 0x00,
- 0xc8,
- 0x00,
- 0x80,
- 0x20,
- 0x84,
- 0x01,
- 0x26,
- 0x40,
- 0x08,
- 0x64,
- 0x00,
- 0x80,
- 0x2c,
- 0x80,
- 0x08,
- 0x02,
- 0x38,
- ]);
- } else if (channelCount === 5) {
- return new Uint8Array([
- 0x00,
- 0xc8,
- 0x00,
- 0x80,
- 0x20,
- 0x84,
- 0x01,
- 0x26,
- 0x40,
- 0x08,
- 0x64,
- 0x00,
- 0x82,
- 0x30,
- 0x04,
- 0x99,
- 0x00,
- 0x21,
- 0x90,
- 0x02,
- 0x38,
- ]);
- } else if (channelCount === 6) {
- return new Uint8Array([
- 0x00,
- 0xc8,
- 0x00,
- 0x80,
- 0x20,
- 0x84,
- 0x01,
- 0x26,
- 0x40,
- 0x08,
- 0x64,
- 0x00,
- 0x82,
- 0x30,
- 0x04,
- 0x99,
- 0x00,
- 0x21,
- 0x90,
- 0x02,
- 0x00,
- 0xb2,
- 0x00,
- 0x20,
- 0x08,
- 0xe0,
- ]);
- }
- } else {
- // handle HE-AAC (mp4a.40.5 / mp4a.40.29)
- if (channelCount === 1) {
- // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
- return new Uint8Array([
- 0x1,
- 0x40,
- 0x22,
- 0x80,
- 0xa3,
- 0x4e,
- 0xe6,
- 0x80,
- 0xba,
- 0x8,
- 0x0,
- 0x0,
- 0x0,
- 0x1c,
- 0x6,
- 0xf1,
- 0xc1,
- 0xa,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5e,
- ]);
- } else if (channelCount === 2) {
- // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
- return new Uint8Array([
- 0x1,
- 0x40,
- 0x22,
- 0x80,
- 0xa3,
- 0x5e,
- 0xe6,
- 0x80,
- 0xba,
- 0x8,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- 0x95,
- 0x0,
- 0x6,
- 0xf1,
- 0xa1,
- 0xa,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5e,
- ]);
- } else if (channelCount === 3) {
- // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
- return new Uint8Array([
- 0x1,
- 0x40,
- 0x22,
- 0x80,
- 0xa3,
- 0x5e,
- 0xe6,
- 0x80,
- 0xba,
- 0x8,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- 0x95,
- 0x0,
- 0x6,
- 0xf1,
- 0xa1,
- 0xa,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5a,
- 0x5e,
- ]);
- }
- }
- return null;
- }
-}
-
-export default AAC;
diff --git a/src/flv.js/remux/mp4-generator.js b/src/flv.js/remux/mp4-generator.js
deleted file mode 100644
index a34b8f3..0000000
--- a/src/flv.js/remux/mp4-generator.js
+++ /dev/null
@@ -1,996 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)
-class MP4 {
- static init() {
- MP4.types = {
- avc1: [],
- avcC: [],
- btrt: [],
- dinf: [],
- dref: [],
- esds: [],
- ftyp: [],
- hdlr: [],
- mdat: [],
- mdhd: [],
- mdia: [],
- mfhd: [],
- minf: [],
- moof: [],
- moov: [],
- mp4a: [],
- mvex: [],
- mvhd: [],
- sdtp: [],
- stbl: [],
- stco: [],
- stsc: [],
- stsd: [],
- stsz: [],
- stts: [],
- tfdt: [],
- tfhd: [],
- traf: [],
- trak: [],
- trun: [],
- trex: [],
- tkhd: [],
- vmhd: [],
- smhd: [],
- '.mp3': [],
- };
-
- for (let name in MP4.types) {
- if (MP4.types.hasOwnProperty(name)) {
- MP4.types[name] = [name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)];
- }
- }
-
- let constants = (MP4.constants = {});
-
- constants.FTYP = new Uint8Array([
- 0x69,
- 0x73,
- 0x6f,
- 0x6d, // major_brand: isom
- 0x0,
- 0x0,
- 0x0,
- 0x1, // minor_version: 0x01
- 0x69,
- 0x73,
- 0x6f,
- 0x6d, // isom
- 0x61,
- 0x76,
- 0x63,
- 0x31, // avc1
- ]);
-
- constants.STSD_PREFIX = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x01, // entry_count
- ]);
-
- constants.STTS = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // entry_count
- ]);
-
- constants.STSC = constants.STCO = constants.STTS;
-
- constants.STSZ = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // sample_size
- 0x00,
- 0x00,
- 0x00,
- 0x00, // sample_count
- ]);
-
- constants.HDLR_VIDEO = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // pre_defined
- 0x76,
- 0x69,
- 0x64,
- 0x65, // handler_type: 'vide'
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 3 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x56,
- 0x69,
- 0x64,
- 0x65,
- 0x6f,
- 0x48,
- 0x61,
- 0x6e,
- 0x64,
- 0x6c,
- 0x65,
- 0x72,
- 0x00, // name: VideoHandler
- ]);
-
- constants.HDLR_AUDIO = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // pre_defined
- 0x73,
- 0x6f,
- 0x75,
- 0x6e, // handler_type: 'soun'
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 3 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x53,
- 0x6f,
- 0x75,
- 0x6e,
- 0x64,
- 0x48,
- 0x61,
- 0x6e,
- 0x64,
- 0x6c,
- 0x65,
- 0x72,
- 0x00, // name: SoundHandler
- ]);
-
- constants.DREF = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x01, // entry_count
- 0x00,
- 0x00,
- 0x00,
- 0x0c, // entry_size
- 0x75,
- 0x72,
- 0x6c,
- 0x20, // type 'url '
- 0x00,
- 0x00,
- 0x00,
- 0x01, // version(0) + flags
- ]);
-
- // Sound media header
- constants.SMHD = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // balance(2) + reserved(2)
- ]);
-
- // video media header
- constants.VMHD = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x01, // version(0) + flags
- 0x00,
- 0x00, // graphicsmode: 2 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00, // opcolor: 3 * 2 bytes
- 0x00,
- 0x00,
- ]);
- }
-
- // Generate a box
- static box(type) {
- let size = 8;
- let result = null;
- let datas = Array.prototype.slice.call(arguments, 1);
- let arrayCount = datas.length;
-
- for (let i = 0; i < arrayCount; i++) {
- size += datas[i].byteLength;
- }
-
- result = new Uint8Array(size);
- result[0] = (size >>> 24) & 0xff; // size
- result[1] = (size >>> 16) & 0xff;
- result[2] = (size >>> 8) & 0xff;
- result[3] = size & 0xff;
-
- result.set(type, 4); // type
-
- let offset = 8;
- for (let i = 0; i < arrayCount; i++) {
- // data body
- result.set(datas[i], offset);
- offset += datas[i].byteLength;
- }
-
- return result;
- }
-
- // emit ftyp & moov
- static generateInitSegment(meta) {
- let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);
- let moov = MP4.moov(meta);
-
- let result = new Uint8Array(ftyp.byteLength + moov.byteLength);
- result.set(ftyp, 0);
- result.set(moov, ftyp.byteLength);
- return result;
- }
-
- // Movie metadata box
- static moov(meta) {
- let mvhd = MP4.mvhd(meta.timescale, meta.duration);
- let trak = MP4.trak(meta);
- let mvex = MP4.mvex(meta);
- return MP4.box(MP4.types.moov, mvhd, trak, mvex);
- }
-
- // Movie header box
- static mvhd(timescale, duration) {
- return MP4.box(
- MP4.types.mvhd,
- new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // creation_time
- 0x00,
- 0x00,
- 0x00,
- 0x00, // modification_time
- (timescale >>> 24) & 0xff, // timescale: 4 bytes
- (timescale >>> 16) & 0xff,
- (timescale >>> 8) & 0xff,
- timescale & 0xff,
- (duration >>> 24) & 0xff, // duration: 4 bytes
- (duration >>> 16) & 0xff,
- (duration >>> 8) & 0xff,
- duration & 0xff,
- 0x00,
- 0x01,
- 0x00,
- 0x00, // Preferred rate: 1.0
- 0x01,
- 0x00,
- 0x00,
- 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 4 + 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00, // ----begin composition matrix----
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x00,
- 0x00,
- 0x00, // ----end composition matrix----
- 0x00,
- 0x00,
- 0x00,
- 0x00, // ----begin pre_defined 6 * 4 bytes----
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00, // ----end pre_defined 6 * 4 bytes----
- 0xff,
- 0xff,
- 0xff,
- 0xff, // next_track_ID
- ]),
- );
- }
-
- // Track box
- static trak(meta) {
- return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));
- }
-
- // Track header box
- static tkhd(meta) {
- let trackId = meta.id,
- duration = meta.duration;
- let width = meta.presentWidth,
- height = meta.presentHeight;
-
- return MP4.box(
- MP4.types.tkhd,
- new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x07, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // creation_time
- 0x00,
- 0x00,
- 0x00,
- 0x00, // modification_time
- (trackId >>> 24) & 0xff, // track_ID: 4 bytes
- (trackId >>> 16) & 0xff,
- (trackId >>> 8) & 0xff,
- trackId & 0xff,
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 4 bytes
- (duration >>> 24) & 0xff, // duration: 4 bytes
- (duration >>> 16) & 0xff,
- (duration >>> 8) & 0xff,
- duration & 0xff,
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 2 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00, // layer(2bytes) + alternate_group(2bytes)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // volume(2bytes) + reserved(2bytes)
- 0x00,
- 0x01,
- 0x00,
- 0x00, // ----begin composition matrix----
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x00,
- 0x00,
- 0x00, // ----end composition matrix----
- (width >>> 8) & 0xff, // width and height
- width & 0xff,
- 0x00,
- 0x00,
- (height >>> 8) & 0xff,
- height & 0xff,
- 0x00,
- 0x00,
- ]),
- );
- }
-
- // Media Box
- static mdia(meta) {
- return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));
- }
-
- // Media header box
- static mdhd(meta) {
- let timescale = meta.timescale;
- let duration = meta.duration;
- return MP4.box(
- MP4.types.mdhd,
- new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- 0x00,
- 0x00,
- 0x00,
- 0x00, // creation_time
- 0x00,
- 0x00,
- 0x00,
- 0x00, // modification_time
- (timescale >>> 24) & 0xff, // timescale: 4 bytes
- (timescale >>> 16) & 0xff,
- (timescale >>> 8) & 0xff,
- timescale & 0xff,
- (duration >>> 24) & 0xff, // duration: 4 bytes
- (duration >>> 16) & 0xff,
- (duration >>> 8) & 0xff,
- duration & 0xff,
- 0x55,
- 0xc4, // language: und (undetermined)
- 0x00,
- 0x00, // pre_defined = 0
- ]),
- );
- }
-
- // Media handler reference box
- static hdlr(meta) {
- let data = null;
- if (meta.type === 'audio') {
- data = MP4.constants.HDLR_AUDIO;
- } else {
- data = MP4.constants.HDLR_VIDEO;
- }
- return MP4.box(MP4.types.hdlr, data);
- }
-
- // Media infomation box
- static minf(meta) {
- let xmhd = null;
- if (meta.type === 'audio') {
- xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);
- } else {
- xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);
- }
- return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));
- }
-
- // Data infomation box
- static dinf() {
- let result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));
- return result;
- }
-
- // Sample table box
- static stbl(meta) {
- let result = MP4.box(
- MP4.types.stbl, // type: stbl
- MP4.stsd(meta), // Sample Description Table
- MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample
- MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk
- MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size
- MP4.box(MP4.types.stco, MP4.constants.STCO), // Chunk offset
- );
- return result;
- }
-
- // Sample description box
- static stsd(meta) {
- if (meta.type === 'audio') {
- if (meta.codec === 'mp3') {
- return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));
- }
- // else: aac -> mp4a
- return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));
- } else {
- return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));
- }
- }
-
- static mp3(meta) {
- let channelCount = meta.channelCount;
- let sampleRate = meta.audioSampleRate;
-
- let data = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved(4)
- 0x00,
- 0x00,
- 0x00,
- 0x01, // reserved(2) + data_reference_index(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 2 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- channelCount, // channelCount(2)
- 0x00,
- 0x10, // sampleSize(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved(4)
- (sampleRate >>> 8) & 0xff, // Audio sample rate
- sampleRate & 0xff,
- 0x00,
- 0x00,
- ]);
-
- return MP4.box(MP4.types['.mp3'], data);
- }
-
- static mp4a(meta) {
- let channelCount = meta.channelCount;
- let sampleRate = meta.audioSampleRate;
-
- let data = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved(4)
- 0x00,
- 0x00,
- 0x00,
- 0x01, // reserved(2) + data_reference_index(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 2 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- channelCount, // channelCount(2)
- 0x00,
- 0x10, // sampleSize(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved(4)
- (sampleRate >>> 8) & 0xff, // Audio sample rate
- sampleRate & 0xff,
- 0x00,
- 0x00,
- ]);
-
- return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));
- }
-
- static esds(meta) {
- let config = meta.config || [];
- let configSize = config.length;
- let data = new Uint8Array(
- [
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version 0 + flags
-
- 0x03, // descriptor_type
- 0x17 + configSize, // length3
- 0x00,
- 0x01, // es_id
- 0x00, // stream_priority
-
- 0x04, // descriptor_type
- 0x0f + configSize, // length
- 0x40, // codec: mpeg4_audio
- 0x15, // stream_type: Audio
- 0x00,
- 0x00,
- 0x00, // buffer_size
- 0x00,
- 0x00,
- 0x00,
- 0x00, // maxBitrate
- 0x00,
- 0x00,
- 0x00,
- 0x00, // avgBitrate
-
- 0x05, // descriptor_type
- ]
- .concat([configSize])
- .concat(config)
- .concat([
- 0x06,
- 0x01,
- 0x02, // GASpecificConfig
- ]),
- );
- return MP4.box(MP4.types.esds, data);
- }
-
- static avc1(meta) {
- let avcc = meta.avcc;
- let width = meta.codecWidth,
- height = meta.codecHeight;
-
- let data = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved(4)
- 0x00,
- 0x00,
- 0x00,
- 0x01, // reserved(2) + data_reference_index(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // pre_defined(2) + reserved(2)
- 0x00,
- 0x00,
- 0x00,
- 0x00, // pre_defined: 3 * 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- (width >>> 8) & 0xff, // width: 2 bytes
- width & 0xff,
- (height >>> 8) & 0xff, // height: 2 bytes
- height & 0xff,
- 0x00,
- 0x48,
- 0x00,
- 0x00, // horizresolution: 4 bytes
- 0x00,
- 0x48,
- 0x00,
- 0x00, // vertresolution: 4 bytes
- 0x00,
- 0x00,
- 0x00,
- 0x00, // reserved: 4 bytes
- 0x00,
- 0x01, // frame_count
- 0x0a, // strlen
- 0x78,
- 0x71,
- 0x71,
- 0x2f, // compressorname: 32 bytes
- 0x66,
- 0x6c,
- 0x76,
- 0x2e,
- 0x6a,
- 0x73,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x18, // depth
- 0xff,
- 0xff, // pre_defined = -1
- ]);
- return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));
- }
-
- // Movie Extends box
- static mvex(meta) {
- return MP4.box(MP4.types.mvex, MP4.trex(meta));
- }
-
- // Track Extends box
- static trex(meta) {
- let trackId = meta.id;
- let data = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) + flags
- (trackId >>> 24) & 0xff, // track_ID
- (trackId >>> 16) & 0xff,
- (trackId >>> 8) & 0xff,
- trackId & 0xff,
- 0x00,
- 0x00,
- 0x00,
- 0x01, // default_sample_description_index
- 0x00,
- 0x00,
- 0x00,
- 0x00, // default_sample_duration
- 0x00,
- 0x00,
- 0x00,
- 0x00, // default_sample_size
- 0x00,
- 0x01,
- 0x00,
- 0x01, // default_sample_flags
- ]);
- return MP4.box(MP4.types.trex, data);
- }
-
- // Movie fragment box
- static moof(track, baseMediaDecodeTime) {
- return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));
- }
-
- static mfhd(sequenceNumber) {
- let data = new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- (sequenceNumber >>> 24) & 0xff, // sequence_number: int32
- (sequenceNumber >>> 16) & 0xff,
- (sequenceNumber >>> 8) & 0xff,
- sequenceNumber & 0xff,
- ]);
- return MP4.box(MP4.types.mfhd, data);
- }
-
- // Track fragment box
- static traf(track, baseMediaDecodeTime) {
- let trackId = track.id;
-
- // Track fragment header box
- let tfhd = MP4.box(
- MP4.types.tfhd,
- new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) & flags
- (trackId >>> 24) & 0xff, // track_ID
- (trackId >>> 16) & 0xff,
- (trackId >>> 8) & 0xff,
- trackId & 0xff,
- ]),
- );
- // Track Fragment Decode Time
- let tfdt = MP4.box(
- MP4.types.tfdt,
- new Uint8Array([
- 0x00,
- 0x00,
- 0x00,
- 0x00, // version(0) & flags
- (baseMediaDecodeTime >>> 24) & 0xff, // baseMediaDecodeTime: int32
- (baseMediaDecodeTime >>> 16) & 0xff,
- (baseMediaDecodeTime >>> 8) & 0xff,
- baseMediaDecodeTime & 0xff,
- ]),
- );
- let sdtp = MP4.sdtp(track);
- let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);
-
- return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);
- }
-
- // Sample Dependency Type box
- static sdtp(track) {
- let samples = track.samples || [];
- let sampleCount = samples.length;
- let data = new Uint8Array(4 + sampleCount);
- // 0~4 bytes: version(0) & flags
- for (let i = 0; i < sampleCount; i++) {
- let flags = samples[i].flags;
- data[i + 4] =
- (flags.isLeading << 6) | // is_leading: 2 (bit)
- (flags.dependsOn << 4) | // sample_depends_on
- (flags.isDependedOn << 2) | // sample_is_depended_on
- flags.hasRedundancy; // sample_has_redundancy
- }
- return MP4.box(MP4.types.sdtp, data);
- }
-
- // Track fragment run box
- static trun(track, offset) {
- let samples = track.samples || [];
- let sampleCount = samples.length;
- let dataSize = 12 + 16 * sampleCount;
- let data = new Uint8Array(dataSize);
- offset += 8 + dataSize;
-
- data.set(
- [
- 0x00,
- 0x00,
- 0x0f,
- 0x01, // version(0) & flags
- (sampleCount >>> 24) & 0xff, // sample_count
- (sampleCount >>> 16) & 0xff,
- (sampleCount >>> 8) & 0xff,
- sampleCount & 0xff,
- (offset >>> 24) & 0xff, // data_offset
- (offset >>> 16) & 0xff,
- (offset >>> 8) & 0xff,
- offset & 0xff,
- ],
- 0,
- );
-
- for (let i = 0; i < sampleCount; i++) {
- let duration = samples[i].duration;
- let size = samples[i].size;
- let flags = samples[i].flags;
- let cts = samples[i].cts;
- data.set(
- [
- (duration >>> 24) & 0xff, // sample_duration
- (duration >>> 16) & 0xff,
- (duration >>> 8) & 0xff,
- duration & 0xff,
- (size >>> 24) & 0xff, // sample_size
- (size >>> 16) & 0xff,
- (size >>> 8) & 0xff,
- size & 0xff,
- (flags.isLeading << 2) | flags.dependsOn, // sample_flags
- (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,
- 0x00,
- 0x00, // sample_degradation_priority
- (cts >>> 24) & 0xff, // sample_composition_time_offset
- (cts >>> 16) & 0xff,
- (cts >>> 8) & 0xff,
- cts & 0xff,
- ],
- 12 + 16 * i,
- );
- }
- return MP4.box(MP4.types.trun, data);
- }
-
- static mdat(data) {
- return MP4.box(MP4.types.mdat, data);
- }
-}
-
-MP4.init();
-
-export default MP4;
diff --git a/src/flv.js/remux/mp4-remuxer.js b/src/flv.js/remux/mp4-remuxer.js
deleted file mode 100644
index e3f2ac7..0000000
--- a/src/flv.js/remux/mp4-remuxer.js
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Log from '../utils/logger.js';
-import MP4 from './mp4-generator.js';
-import AAC from './aac-silent.js';
-import Browser from '../utils/browser.js';
-import { SampleInfo, MediaSegmentInfo, MediaSegmentInfoList } from '../core/media-segment-info.js';
-import { IllegalStateException } from '../utils/exception.js';
-
-// Fragmented mp4 remuxer
-class MP4Remuxer {
- constructor(config) {
- this.TAG = 'MP4Remuxer';
-
- this._config = config;
- this._isLive = config.isLive === true ? true : false;
-
- this._dtsBase = -1;
- this._dtsBaseInited = false;
- this._audioDtsBase = Infinity;
- this._videoDtsBase = Infinity;
- this._audioNextDts = undefined;
- this._videoNextDts = undefined;
-
- this._audioMeta = null;
- this._videoMeta = null;
-
- this._audioSegmentInfoList = new MediaSegmentInfoList('audio');
- this._videoSegmentInfoList = new MediaSegmentInfoList('video');
-
- this._onInitSegment = null;
- this._onMediaSegment = null;
-
- // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment
- // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
- this._forceFirstIDR =
- Browser.chrome &&
- (Browser.version.major < 50 || (Browser.version.major === 50 && Browser.version.build < 2661))
- ? true
- : false;
-
- // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking
- // Make audio beginDts equals with video beginDts, in order to fix seek freeze
- this._fillSilentAfterSeek = Browser.msedge || Browser.msie;
-
- // While only FireFox supports 'audio/mp4, codecs="mp3"', use 'audio/mpeg' for chrome, safari, ...
- this._mp3UseMpegAudio = !Browser.firefox;
-
- this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;
- }
-
- destroy() {
- this._dtsBase = -1;
- this._dtsBaseInited = false;
- this._audioMeta = null;
- this._videoMeta = null;
- this._audioSegmentInfoList.clear();
- this._audioSegmentInfoList = null;
- this._videoSegmentInfoList.clear();
- this._videoSegmentInfoList = null;
- this._onInitSegment = null;
- this._onMediaSegment = null;
- }
-
- bindDataSource(producer) {
- producer.onDataAvailable = this.remux.bind(this);
- producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);
- return this;
- }
-
- /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void
- InitSegment: {
- type: string,
- data: ArrayBuffer,
- codec: string,
- container: string
- }
- */
- get onInitSegment() {
- return this._onInitSegment;
- }
-
- set onInitSegment(callback) {
- this._onInitSegment = callback;
- }
-
- /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void
- MediaSegment: {
- type: string,
- data: ArrayBuffer,
- sampleCount: int32
- info: MediaSegmentInfo
- }
- */
- get onMediaSegment() {
- return this._onMediaSegment;
- }
-
- set onMediaSegment(callback) {
- this._onMediaSegment = callback;
- }
-
- insertDiscontinuity() {
- this._audioNextDts = this._videoNextDts = undefined;
- }
-
- seek(originalDts) {
- this._videoSegmentInfoList.clear();
- this._audioSegmentInfoList.clear();
- }
-
- remux(audioTrack, videoTrack) {
- if (!this._onMediaSegment) {
- throw new IllegalStateException('MP4Remuxer: onMediaSegment callback must be specificed!');
- }
- if (!this._dtsBaseInited) {
- this._calculateDtsBase(audioTrack, videoTrack);
- }
- this._remuxVideo(videoTrack);
- this._remuxAudio(audioTrack);
- }
-
- _onTrackMetadataReceived(type, metadata) {
- let metabox = null;
-
- let container = 'mp4';
- let codec = metadata.codec;
-
- if (type === 'audio') {
- this._audioMeta = metadata;
- if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {
- // 'audio/mpeg' for MP3 audio track
- container = 'mpeg';
- codec = '';
- metabox = new Uint8Array();
- } else {
- // 'audio/mp4, codecs="codec"'
- metabox = MP4.generateInitSegment(metadata);
- }
- } else if (type === 'video') {
- this._videoMeta = metadata;
- metabox = MP4.generateInitSegment(metadata);
- } else {
- return;
- }
-
- // dispatch metabox (Initialization Segment)
- if (!this._onInitSegment) {
- throw new IllegalStateException('MP4Remuxer: onInitSegment callback must be specified!');
- }
- this._onInitSegment(type, {
- type: type,
- data: metabox.buffer,
- codec: codec,
- container: `${type}/${container}`,
- mediaDuration: metadata.duration, // in timescale 1000 (milliseconds)
- });
- }
-
- _calculateDtsBase(audioTrack, videoTrack) {
- if (this._dtsBaseInited) {
- return;
- }
-
- if (audioTrack.samples && audioTrack.samples.length) {
- this._audioDtsBase = audioTrack.samples[0].dts;
- }
- if (videoTrack.samples && videoTrack.samples.length) {
- this._videoDtsBase = videoTrack.samples[0].dts;
- }
-
- this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);
- this._dtsBaseInited = true;
- }
-
- _remuxAudio(audioTrack) {
- if (this._audioMeta == null) {
- return;
- }
-
- let track = audioTrack;
- let samples = track.samples;
- let dtsCorrection = undefined;
- let firstDts = -1,
- lastDts = -1,
- lastPts = -1;
- let refSampleDuration = this._audioMeta.refSampleDuration;
-
- let mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;
- let firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;
-
- let insertPrefixSilentFrame = false;
-
- if (!samples || samples.length === 0) {
- return;
- }
-
- let offset = 0;
- let mdatbox = null;
- let mdatBytes = 0;
-
- // calculate initial mdat size
- if (mpegRawTrack) {
- // for raw mpeg buffer
- offset = 0;
- mdatBytes = track.length;
- } else {
- // for fmp4 mdat box
- offset = 8; // size + type
- mdatBytes = 8 + track.length;
- }
-
- let firstSampleOriginalDts = samples[0].dts - this._dtsBase;
-
- // calculate dtsCorrection
- if (this._audioNextDts) {
- dtsCorrection = firstSampleOriginalDts - this._audioNextDts;
- } else {
- // this._audioNextDts == undefined
- if (this._audioSegmentInfoList.isEmpty()) {
- dtsCorrection = 0;
- if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {
- if (this._audioMeta.originalCodec !== 'mp3') {
- insertPrefixSilentFrame = true;
- }
- }
- } else {
- let lastSample = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
- if (lastSample != null) {
- let distance = firstSampleOriginalDts - (lastSample.originalDts + lastSample.duration);
- if (distance <= 3) {
- distance = 0;
- }
- let expectedDts = lastSample.dts + lastSample.duration + distance;
- dtsCorrection = firstSampleOriginalDts - expectedDts;
- } else {
- // lastSample == null, cannot found
- dtsCorrection = 0;
- }
- }
- }
-
- if (insertPrefixSilentFrame) {
- // align audio segment beginDts to match with current video segment's beginDts
- let firstSampleDts = firstSampleOriginalDts - dtsCorrection;
- let videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);
- if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {
- let silentUnit = AAC.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
- if (silentUnit) {
- let dts = videoSegment.beginDts;
- let silentFrameDuration = firstSampleDts - videoSegment.beginDts;
- Log.v(this.TAG, `InsertPrefixSilentAudio: dts: ${dts}, duration: ${silentFrameDuration}`);
- samples.unshift({ unit: silentUnit, dts: dts, pts: dts });
- mdatBytes += silentUnit.byteLength;
- } // silentUnit == null: Cannot generate, skip
- } else {
- insertPrefixSilentFrame = false;
- }
- }
-
- let mp4Samples = [];
-
- // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
- for (let i = 0; i < samples.length; i++) {
- let sample = samples[i];
- let unit = sample.unit;
- let originalDts = sample.dts - this._dtsBase;
- let dts = originalDts - dtsCorrection;
-
- if (firstDts === -1) {
- firstDts = dts;
- }
-
- let sampleDuration = 0;
-
- if (i !== samples.length - 1) {
- let nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
- sampleDuration = nextDts - dts;
- } else {
- // the last sample
- if (mp4Samples.length >= 1) {
- // use second last sample duration
- sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
- } else {
- // the only one sample, use reference sample duration
- sampleDuration = Math.floor(refSampleDuration);
- }
- }
-
- let needFillSilentFrames = false;
- let silentFrames = null;
-
- // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap
- if (
- sampleDuration > refSampleDuration * 1.5 &&
- this._audioMeta.codec !== 'mp3' &&
- this._fillAudioTimestampGap &&
- !Browser.safari
- ) {
- // We need to insert silent frames to fill timestamp gap
- needFillSilentFrames = true;
- let delta = Math.abs(sampleDuration - refSampleDuration);
- let frameCount = Math.ceil(delta / refSampleDuration);
- let currentDts = dts + refSampleDuration; // Notice: in float
-
- Log.w(
- this.TAG,
- 'Large audio timestamp gap detected, may cause AV sync to drift. ' +
- 'Silent frames will be generated to avoid unsync.\n' +
- `dts: ${dts + sampleDuration} ms, expected: ${dts + Math.round(refSampleDuration)} ms, ` +
- `delta: ${Math.round(delta)} ms, generate: ${frameCount} frames`,
- );
-
- let silentUnit = AAC.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
- if (silentUnit == null) {
- Log.w(
- this.TAG,
- 'Unable to generate silent frame for ' +
- `${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`,
- );
- // Repeat last frame
- silentUnit = unit;
- }
- silentFrames = [];
-
- for (let j = 0; j < frameCount; j++) {
- let intDts = Math.round(currentDts); // round to integer
- if (silentFrames.length > 0) {
- // Set previous frame sample duration
- let previousFrame = silentFrames[silentFrames.length - 1];
- previousFrame.duration = intDts - previousFrame.dts;
- }
- let frame = {
- dts: intDts,
- pts: intDts,
- cts: 0,
- unit: silentUnit,
- size: silentUnit.byteLength,
- duration: 0, // wait for next sample
- originalDts: originalDts,
- flags: {
- isLeading: 0,
- dependsOn: 1,
- isDependedOn: 0,
- hasRedundancy: 0,
- },
- };
- silentFrames.push(frame);
- mdatBytes += unit.byteLength;
- currentDts += refSampleDuration;
- }
-
- // last frame: align end time to next frame dts
- let lastFrame = silentFrames[silentFrames.length - 1];
- lastFrame.duration = dts + sampleDuration - lastFrame.dts;
-
- // silentFrames.forEach((frame) => {
- // Log.w(this.TAG, `SilentAudio: dts: ${frame.dts}, duration: ${frame.duration}`);
- // });
-
- // Set correct sample duration for current frame
- sampleDuration = Math.round(refSampleDuration);
- }
-
- mp4Samples.push({
- dts: dts,
- pts: dts,
- cts: 0,
- unit: sample.unit,
- size: sample.unit.byteLength,
- duration: sampleDuration,
- originalDts: originalDts,
- flags: {
- isLeading: 0,
- dependsOn: 1,
- isDependedOn: 0,
- hasRedundancy: 0,
- },
- });
-
- if (needFillSilentFrames) {
- // Silent frames should be inserted after wrong-duration frame
- mp4Samples.push.apply(mp4Samples, silentFrames);
- }
- }
-
- // allocate mdatbox
- if (mpegRawTrack) {
- // allocate for raw mpeg buffer
- mdatbox = new Uint8Array(mdatBytes);
- } else {
- // allocate for fmp4 mdat box
- mdatbox = new Uint8Array(mdatBytes);
- // size field
- mdatbox[0] = (mdatBytes >>> 24) & 0xff;
- mdatbox[1] = (mdatBytes >>> 16) & 0xff;
- mdatbox[2] = (mdatBytes >>> 8) & 0xff;
- mdatbox[3] = mdatBytes & 0xff;
- // type field (fourCC)
- mdatbox.set(MP4.types.mdat, 4);
- }
-
- // Write samples into mdatbox
- for (let i = 0; i < mp4Samples.length; i++) {
- let unit = mp4Samples[i].unit;
- mdatbox.set(unit, offset);
- offset += unit.byteLength;
- }
-
- let latest = mp4Samples[mp4Samples.length - 1];
- lastDts = latest.dts + latest.duration;
- this._audioNextDts = lastDts;
-
- // fill media segment info & add to info list
- let info = new MediaSegmentInfo();
- info.beginDts = firstDts;
- info.endDts = lastDts;
- info.beginPts = firstDts;
- info.endPts = lastDts;
- info.originalBeginDts = mp4Samples[0].originalDts;
- info.originalEndDts = latest.originalDts + latest.duration;
- info.firstSample = new SampleInfo(
- mp4Samples[0].dts,
- mp4Samples[0].pts,
- mp4Samples[0].duration,
- mp4Samples[0].originalDts,
- false,
- );
- info.lastSample = new SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, false);
- if (!this._isLive) {
- this._audioSegmentInfoList.append(info);
- }
-
- track.samples = mp4Samples;
- track.sequenceNumber++;
-
- let moofbox = null;
-
- if (mpegRawTrack) {
- // Generate empty buffer, because useless for raw mpeg
- moofbox = new Uint8Array();
- } else {
- // Generate moof for fmp4 segment
- moofbox = MP4.moof(track, firstDts);
- }
-
- track.samples = [];
- track.length = 0;
-
- let segment = {
- type: 'audio',
- data: this._mergeBoxes(moofbox, mdatbox).buffer,
- sampleCount: mp4Samples.length,
- info: info,
- };
-
- if (mpegRawTrack && firstSegmentAfterSeek) {
- // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer
- // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
- segment.timestampOffset = firstDts;
- }
-
- this._onMediaSegment('audio', segment);
- }
-
- _remuxVideo(videoTrack) {
- if (this._videoMeta == null) {
- return;
- }
-
- let track = videoTrack;
- let samples = track.samples;
- let dtsCorrection = undefined;
- let firstDts = -1,
- lastDts = -1;
- let firstPts = -1,
- lastPts = -1;
-
- if (!samples || samples.length === 0) {
- return;
- }
-
- let offset = 8;
- let mdatBytes = 8 + videoTrack.length;
- let mdatbox = new Uint8Array(mdatBytes);
- mdatbox[0] = (mdatBytes >>> 24) & 0xff;
- mdatbox[1] = (mdatBytes >>> 16) & 0xff;
- mdatbox[2] = (mdatBytes >>> 8) & 0xff;
- mdatbox[3] = mdatBytes & 0xff;
- mdatbox.set(MP4.types.mdat, 4);
-
- let firstSampleOriginalDts = samples[0].dts - this._dtsBase;
-
- // calculate dtsCorrection
- if (this._videoNextDts) {
- dtsCorrection = firstSampleOriginalDts - this._videoNextDts;
- } else {
- // this._videoNextDts == undefined
- if (this._videoSegmentInfoList.isEmpty()) {
- dtsCorrection = 0;
- } else {
- let lastSample = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
- if (lastSample != null) {
- let distance = firstSampleOriginalDts - (lastSample.originalDts + lastSample.duration);
- if (distance <= 3) {
- distance = 0;
- }
- let expectedDts = lastSample.dts + lastSample.duration + distance;
- dtsCorrection = firstSampleOriginalDts - expectedDts;
- } else {
- // lastSample == null, cannot found
- dtsCorrection = 0;
- }
- }
- }
-
- let info = new MediaSegmentInfo();
- let mp4Samples = [];
-
- // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
- for (let i = 0; i < samples.length; i++) {
- let sample = samples[i];
- let originalDts = sample.dts - this._dtsBase;
- let isKeyframe = sample.isKeyframe;
- let dts = originalDts - dtsCorrection;
- let cts = sample.cts;
- let pts = dts + cts;
-
- if (firstDts === -1) {
- firstDts = dts;
- firstPts = pts;
- }
-
- let sampleDuration = 0;
-
- if (i !== samples.length - 1) {
- let nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
- sampleDuration = nextDts - dts;
- } else {
- // the last sample
- if (mp4Samples.length >= 1) {
- // use second last sample duration
- sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
- } else {
- // the only one sample, use reference sample duration
- sampleDuration = Math.floor(this._videoMeta.refSampleDuration);
- }
- }
-
- if (isKeyframe) {
- let syncPoint = new SampleInfo(dts, pts, sampleDuration, sample.dts, true);
- syncPoint.fileposition = sample.fileposition;
- info.appendSyncPoint(syncPoint);
- }
-
- mp4Samples.push({
- dts: dts,
- pts: pts,
- cts: cts,
- units: sample.units,
- size: sample.length,
- isKeyframe: isKeyframe,
- duration: sampleDuration,
- originalDts: originalDts,
- flags: {
- isLeading: 0,
- dependsOn: isKeyframe ? 2 : 1,
- isDependedOn: isKeyframe ? 1 : 0,
- hasRedundancy: 0,
- isNonSync: isKeyframe ? 0 : 1,
- },
- });
- }
-
- // Write samples into mdatbox
- for (let i = 0; i < mp4Samples.length; i++) {
- let units = mp4Samples[i].units;
- while (units.length) {
- let unit = units.shift();
- let data = unit.data;
- mdatbox.set(data, offset);
- offset += data.byteLength;
- }
- }
-
- let latest = mp4Samples[mp4Samples.length - 1];
- lastDts = latest.dts + latest.duration;
- lastPts = latest.pts + latest.duration;
- this._videoNextDts = lastDts;
-
- // fill media segment info & add to info list
- info.beginDts = firstDts;
- info.endDts = lastDts;
- info.beginPts = firstPts;
- info.endPts = lastPts;
- info.originalBeginDts = mp4Samples[0].originalDts;
- info.originalEndDts = latest.originalDts + latest.duration;
- info.firstSample = new SampleInfo(
- mp4Samples[0].dts,
- mp4Samples[0].pts,
- mp4Samples[0].duration,
- mp4Samples[0].originalDts,
- mp4Samples[0].isKeyframe,
- );
- info.lastSample = new SampleInfo(
- latest.dts,
- latest.pts,
- latest.duration,
- latest.originalDts,
- latest.isKeyframe,
- );
- if (!this._isLive) {
- this._videoSegmentInfoList.append(info);
- }
-
- track.samples = mp4Samples;
- track.sequenceNumber++;
-
- // workaround for chrome < 50: force first sample as a random access point
- // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
- if (this._forceFirstIDR) {
- let flags = mp4Samples[0].flags;
- flags.dependsOn = 2;
- flags.isNonSync = 0;
- }
-
- let moofbox = MP4.moof(track, firstDts);
- track.samples = [];
- track.length = 0;
-
- this._onMediaSegment('video', {
- type: 'video',
- data: this._mergeBoxes(moofbox, mdatbox).buffer,
- sampleCount: mp4Samples.length,
- info: info,
- });
- }
-
- _mergeBoxes(moof, mdat) {
- let result = new Uint8Array(moof.byteLength + mdat.byteLength);
- result.set(moof, 0);
- result.set(mdat, moof.byteLength);
- return result;
- }
-}
-
-export default MP4Remuxer;
diff --git a/src/flv.js/tsconfig.json b/src/flv.js/tsconfig.json
deleted file mode 100644
index c05aa28..0000000
--- a/src/flv.js/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../tsconfig-base.json",
- "include": [
- "**/*"
- ],
- "references": []
-}
\ No newline at end of file
diff --git a/src/flv.js/utils/browser.js b/src/flv.js/utils/browser.js
deleted file mode 100644
index 75c9839..0000000
--- a/src/flv.js/utils/browser.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-let Browser = {};
-
-function detect() {
- // modified from jquery-browser-plugin
-
- let ua = self.navigator.userAgent.toLowerCase();
-
- let match =
- /(edge)\/([\w.]+)/.exec(ua) ||
- /(opr)[\/]([\w.]+)/.exec(ua) ||
- /(chrome)[ \/]([\w.]+)/.exec(ua) ||
- /(iemobile)[\/]([\w.]+)/.exec(ua) ||
- /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+)/.exec(ua) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
- /(msie) ([\w.]+)/.exec(ua) ||
- (ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua)) ||
- (ua.indexOf('compatible') < 0 && /(firefox)[ \/]([\w.]+)/.exec(ua)) ||
- [];
-
- let platform_match =
- /(ipad)/.exec(ua) ||
- /(ipod)/.exec(ua) ||
- /(windows phone)/.exec(ua) ||
- /(iphone)/.exec(ua) ||
- /(kindle)/.exec(ua) ||
- /(android)/.exec(ua) ||
- /(windows)/.exec(ua) ||
- /(mac)/.exec(ua) ||
- /(linux)/.exec(ua) ||
- /(cros)/.exec(ua) ||
- [];
-
- let matched = {
- browser: match[5] || match[3] || match[1] || '',
- version: match[2] || match[4] || '0',
- majorVersion: match[4] || match[2] || '0',
- platform: platform_match[0] || '',
- };
-
- let browser = {};
- if (matched.browser) {
- browser[matched.browser] = true;
-
- let versionArray = matched.majorVersion.split('.');
- browser.version = {
- major: parseInt(matched.majorVersion, 10),
- string: matched.version,
- };
- if (versionArray.length > 1) {
- browser.version.minor = parseInt(versionArray[1], 10);
- }
- if (versionArray.length > 2) {
- browser.version.build = parseInt(versionArray[2], 10);
- }
- }
-
- if (matched.platform) {
- browser[matched.platform] = true;
- }
-
- if (browser.chrome || browser.opr || browser.safari) {
- browser.webkit = true;
- }
-
- // MSIE. IE11 has 'rv' identifer
- if (browser.rv || browser.iemobile) {
- if (browser.rv) {
- delete browser.rv;
- }
- let msie = 'msie';
- matched.browser = msie;
- browser[msie] = true;
- }
-
- // Microsoft Edge
- if (browser.edge) {
- delete browser.edge;
- let msedge = 'msedge';
- matched.browser = msedge;
- browser[msedge] = true;
- }
-
- // Opera 15+
- if (browser.opr) {
- let opera = 'opera';
- matched.browser = opera;
- browser[opera] = true;
- }
-
- // Stock android browsers are marked as Safari
- if (browser.safari && browser.android) {
- let android = 'android';
- matched.browser = android;
- browser[android] = true;
- }
-
- browser.name = matched.browser;
- browser.platform = matched.platform;
-
- for (let key in Browser) {
- if (Browser.hasOwnProperty(key)) {
- delete Browser[key];
- }
- }
- Object.assign(Browser, browser);
-}
-
-detect();
-
-export default Browser;
diff --git a/src/flv.js/utils/exception.js b/src/flv.js/utils/exception.js
deleted file mode 100644
index e349bcf..0000000
--- a/src/flv.js/utils/exception.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export class RuntimeException {
- constructor(message) {
- this._message = message;
- }
-
- get name() {
- return 'RuntimeException';
- }
-
- get message() {
- return this._message;
- }
-
- toString() {
- return this.name + ': ' + this.message;
- }
-}
-
-export class IllegalStateException extends RuntimeException {
- constructor(message) {
- super(message);
- }
-
- get name() {
- return 'IllegalStateException';
- }
-}
-
-export class InvalidArgumentException extends RuntimeException {
- constructor(message) {
- super(message);
- }
-
- get name() {
- return 'InvalidArgumentException';
- }
-}
-
-export class NotImplementedException extends RuntimeException {
- constructor(message) {
- super(message);
- }
-
- get name() {
- return 'NotImplementedException';
- }
-}
diff --git a/src/flv.js/utils/logger.js b/src/flv.js/utils/logger.js
deleted file mode 100644
index e340464..0000000
--- a/src/flv.js/utils/logger.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-
-class Log {
- static e(tag, msg) {
- if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
-
- let str = `[${tag}] > ${msg}`;
-
- if (Log.ENABLE_CALLBACK) {
- Log.emitter.emit('log', 'error', str);
- }
-
- if (!Log.ENABLE_ERROR) {
- return;
- }
-
- if (console.error) {
- console.error(str);
- } else if (console.warn) {
- console.warn(str);
- } else {
- console.log(str);
- }
- }
-
- static i(tag, msg) {
- if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
-
- let str = `[${tag}] > ${msg}`;
-
- if (Log.ENABLE_CALLBACK) {
- Log.emitter.emit('log', 'info', str);
- }
-
- if (!Log.ENABLE_INFO) {
- return;
- }
-
- if (console.info) {
- console.info(str);
- } else {
- console.log(str);
- }
- }
-
- static w(tag, msg) {
- if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
-
- let str = `[${tag}] > ${msg}`;
-
- if (Log.ENABLE_CALLBACK) {
- Log.emitter.emit('log', 'warn', str);
- }
-
- if (!Log.ENABLE_WARN) {
- return;
- }
-
- if (console.warn) {
- console.warn(str);
- } else {
- console.log(str);
- }
- }
-
- static d(tag, msg) {
- if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
-
- let str = `[${tag}] > ${msg}`;
-
- if (Log.ENABLE_CALLBACK) {
- Log.emitter.emit('log', 'debug', str);
- }
-
- if (!Log.ENABLE_DEBUG) {
- return;
- }
-
- if (console.debug) {
- console.debug(str);
- } else {
- console.log(str);
- }
- }
-
- static v(tag, msg) {
- if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
-
- let str = `[${tag}] > ${msg}`;
-
- if (Log.ENABLE_CALLBACK) {
- Log.emitter.emit('log', 'verbose', str);
- }
-
- if (!Log.ENABLE_VERBOSE) {
- return;
- }
-
- console.log(str);
- }
-}
-
-Log.GLOBAL_TAG = 'flv.js';
-Log.FORCE_GLOBAL_TAG = false;
-Log.ENABLE_ERROR = true;
-Log.ENABLE_INFO = true;
-Log.ENABLE_WARN = true;
-Log.ENABLE_DEBUG = true;
-Log.ENABLE_VERBOSE = true;
-
-Log.ENABLE_CALLBACK = false;
-
-Log.emitter = new EventEmitter();
-
-export default Log;
diff --git a/src/flv.js/utils/logging-control.js b/src/flv.js/utils/logging-control.js
deleted file mode 100644
index e666c9c..0000000
--- a/src/flv.js/utils/logging-control.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import EventEmitter from 'events';
-import Log from './logger.js';
-
-class LoggingControl {
- static get forceGlobalTag() {
- return Log.FORCE_GLOBAL_TAG;
- }
-
- static set forceGlobalTag(enable) {
- Log.FORCE_GLOBAL_TAG = enable;
- LoggingControl._notifyChange();
- }
-
- static get globalTag() {
- return Log.GLOBAL_TAG;
- }
-
- static set globalTag(tag) {
- Log.GLOBAL_TAG = tag;
- LoggingControl._notifyChange();
- }
-
- static get enableAll() {
- return Log.ENABLE_VERBOSE && Log.ENABLE_DEBUG && Log.ENABLE_INFO && Log.ENABLE_WARN && Log.ENABLE_ERROR;
- }
-
- static set enableAll(enable) {
- Log.ENABLE_VERBOSE = enable;
- Log.ENABLE_DEBUG = enable;
- Log.ENABLE_INFO = enable;
- Log.ENABLE_WARN = enable;
- Log.ENABLE_ERROR = enable;
- LoggingControl._notifyChange();
- }
-
- static get enableDebug() {
- return Log.ENABLE_DEBUG;
- }
-
- static set enableDebug(enable) {
- Log.ENABLE_DEBUG = enable;
- LoggingControl._notifyChange();
- }
-
- static get enableVerbose() {
- return Log.ENABLE_VERBOSE;
- }
-
- static set enableVerbose(enable) {
- Log.ENABLE_VERBOSE = enable;
- LoggingControl._notifyChange();
- }
-
- static get enableInfo() {
- return Log.ENABLE_INFO;
- }
-
- static set enableInfo(enable) {
- Log.ENABLE_INFO = enable;
- LoggingControl._notifyChange();
- }
-
- static get enableWarn() {
- return Log.ENABLE_WARN;
- }
-
- static set enableWarn(enable) {
- Log.ENABLE_WARN = enable;
- LoggingControl._notifyChange();
- }
-
- static get enableError() {
- return Log.ENABLE_ERROR;
- }
-
- static set enableError(enable) {
- Log.ENABLE_ERROR = enable;
- LoggingControl._notifyChange();
- }
-
- static getConfig() {
- return {
- globalTag: Log.GLOBAL_TAG,
- forceGlobalTag: Log.FORCE_GLOBAL_TAG,
- enableVerbose: Log.ENABLE_VERBOSE,
- enableDebug: Log.ENABLE_DEBUG,
- enableInfo: Log.ENABLE_INFO,
- enableWarn: Log.ENABLE_WARN,
- enableError: Log.ENABLE_ERROR,
- enableCallback: Log.ENABLE_CALLBACK,
- };
- }
-
- static applyConfig(config) {
- Log.GLOBAL_TAG = config.globalTag;
- Log.FORCE_GLOBAL_TAG = config.forceGlobalTag;
- Log.ENABLE_VERBOSE = config.enableVerbose;
- Log.ENABLE_DEBUG = config.enableDebug;
- Log.ENABLE_INFO = config.enableInfo;
- Log.ENABLE_WARN = config.enableWarn;
- Log.ENABLE_ERROR = config.enableError;
- Log.ENABLE_CALLBACK = config.enableCallback;
- }
-
- static _notifyChange() {
- let emitter = LoggingControl.emitter;
-
- if (emitter.listenerCount('change') > 0) {
- let config = LoggingControl.getConfig();
- emitter.emit('change', config);
- }
- }
-
- static registerListener(listener) {
- LoggingControl.emitter.addListener('change', listener);
- }
-
- static removeListener(listener) {
- LoggingControl.emitter.removeListener('change', listener);
- }
-
- static addLogListener(listener) {
- Log.emitter.addListener('log', listener);
- if (Log.emitter.listenerCount('log') > 0) {
- Log.ENABLE_CALLBACK = true;
- LoggingControl._notifyChange();
- }
- }
-
- static removeLogListener(listener) {
- Log.emitter.removeListener('log', listener);
- if (Log.emitter.listenerCount('log') === 0) {
- Log.ENABLE_CALLBACK = false;
- LoggingControl._notifyChange();
- }
- }
-}
-
-LoggingControl.emitter = new EventEmitter();
-
-export default LoggingControl;
diff --git a/src/flv.js/utils/polyfill.js b/src/flv.js/utils/polyfill.js
deleted file mode 100644
index 7c8fc2b..0000000
--- a/src/flv.js/utils/polyfill.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class Polyfill {
- static install() {
- // ES6 Object.setPrototypeOf
- Object.setPrototypeOf =
- Object.setPrototypeOf ||
- function (obj, proto) {
- obj.__proto__ = proto;
- return obj;
- };
-
- // ES6 Object.assign
- Object.assign =
- Object.assign ||
- function (target) {
- if (target === undefined || target === null) {
- throw new TypeError('Cannot convert undefined or null to object');
- }
-
- let output = Object(target);
- for (let i = 1; i < arguments.length; i++) {
- let source = arguments[i];
- if (source !== undefined && source !== null) {
- for (let key in source) {
- if (source.hasOwnProperty(key)) {
- output[key] = source[key];
- }
- }
- }
- }
- return output;
- };
-
- // ES6 Promise (missing support in IE11)
- // if (typeof self.Promise !== 'function') {
- // require('promise-polyfill/dist/polyfill');
- // }
- }
-}
-
-Polyfill.install();
-
-export default Polyfill;
diff --git a/src/flv.js/utils/utf8-conv.js b/src/flv.js/utils/utf8-conv.js
deleted file mode 100644
index 84425e5..0000000
--- a/src/flv.js/utils/utf8-conv.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)
- * @author zheng qian
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-function checkContinuation(uint8array, start, checkLength) {
- let array = uint8array;
- if (start + checkLength < array.length) {
- while (checkLength--) {
- if ((array[++start] & 0xc0) !== 0x80) return false;
- }
- return true;
- } else {
- return false;
- }
-}
-
-function decodeUTF8(uint8array) {
- let out = [];
- let input = uint8array;
- let i = 0;
- let length = uint8array.length;
-
- while (i < length) {
- if (input[i] < 0x80) {
- out.push(String.fromCharCode(input[i]));
- ++i;
- continue;
- } else if (input[i] < 0xc0) {
- // fallthrough
- } else if (input[i] < 0xe0) {
- if (checkContinuation(input, i, 1)) {
- let ucs4 = ((input[i] & 0x1f) << 6) | (input[i + 1] & 0x3f);
- if (ucs4 >= 0x80) {
- out.push(String.fromCharCode(ucs4 & 0xffff));
- i += 2;
- continue;
- }
- }
- } else if (input[i] < 0xf0) {
- if (checkContinuation(input, i, 2)) {
- let ucs4 = ((input[i] & 0xf) << 12) | ((input[i + 1] & 0x3f) << 6) | (input[i + 2] & 0x3f);
- if (ucs4 >= 0x800 && (ucs4 & 0xf800) !== 0xd800) {
- out.push(String.fromCharCode(ucs4 & 0xffff));
- i += 3;
- continue;
- }
- }
- } else if (input[i] < 0xf8) {
- if (checkContinuation(input, i, 3)) {
- let ucs4 =
- ((input[i] & 0x7) << 18) |
- ((input[i + 1] & 0x3f) << 12) |
- ((input[i + 2] & 0x3f) << 6) |
- (input[i + 3] & 0x3f);
- if (ucs4 > 0x10000 && ucs4 < 0x110000) {
- ucs4 -= 0x10000;
- out.push(String.fromCharCode((ucs4 >>> 10) | 0xd800));
- out.push(String.fromCharCode((ucs4 & 0x3ff) | 0xdc00));
- i += 4;
- continue;
- }
- }
- }
- out.push(String.fromCharCode(0xfffd));
- ++i;
- }
-
- return out.join('');
-}
-
-export default decodeUTF8;
diff --git a/src/flv.js/utils/utils.js b/src/flv.js/utils/utils.js
deleted file mode 100644
index 5daceb7..0000000
--- a/src/flv.js/utils/utils.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2016 Bilibili. All Rights Reserved.
- *
- * @author tqr
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-class Utils {
- static cloneDeep(obj, deep) {
- if (obj === null || typeof obj !== 'object') {
- return obj;
- }
- let target;
-
- if (Utils.isTypedArray(obj) && typeof obj.slice === 'function') {
- target = obj.slice();
- return target;
- }
-
- target = Array.isArray(obj) ? [] : {};
- for (const name in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, name)) {
- const value = obj[name];
- if (deep) {
- if (typeof value === 'object') {
- target[name] = this.cloneDeep(value, deep);
- } else {
- target[name] = value;
- }
- } else {
- target[name] = value;
- }
- }
- }
- return target;
- }
-
- static isTypedArray(obj) {
- return !!(obj && obj.buffer instanceof ArrayBuffer && obj.BYTES_PER_ELEMENT);
- }
-
- static downloadFile(fileName, contentOrPath) {
- let aLink = document.createElement('a'),
- isData = contentOrPath.slice && contentOrPath.slice(0, 5) === 'data:',
- isPath = contentOrPath.lastIndexOf && contentOrPath.lastIndexOf('.') > -1;
-
- aLink.download = fileName;
- aLink.style.display = 'none';
-
- aLink.href = isPath || isData ? contentOrPath : URL.createObjectURL(new Blob([contentOrPath]));
- document.body.appendChild(aLink);
- aLink.click();
- document.body.removeChild(aLink);
- }
-
- static concatArrayBuffer(buffer1, buffer2) {
- if (!buffer1) {
- return buffer2;
- } else if (!buffer2) {
- return buffer1;
- }
-
- let tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
- tmp.set(new Uint8Array(buffer1), 0);
- tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
- return tmp.buffer;
- }
-
- static concatUint8Array(array1, array2) {
- if (!array1) {
- return array2;
- } else if (!array2) {
- return array1;
- }
-
- let tmp = new Uint8Array(array1.byteLength + array2.byteLength);
- tmp.set(array1, 0);
- tmp.set(array2, array1.byteLength);
- return tmp;
- }
-}
-
-export default Utils;
diff --git a/src/player/style/area/control/next.css b/src/index.ts
similarity index 100%
rename from src/player/style/area/control/next.css
rename to src/index.ts
diff --git a/src/interface/DirectoryPicker.d.ts b/src/interface/DirectoryPicker.d.ts
new file mode 100644
index 0000000..7885e64
--- /dev/null
+++ b/src/interface/DirectoryPicker.d.ts
@@ -0,0 +1,15 @@
+/**
+ * 用于显示一个目录选择器,以允许用户选择一个目录。
+ *
+ * @param options 选项对象
+ */
+declare function showDirectoryPicker(options?: IOpenDirectoryPickerOptions): Promise;
+
+declare interface IOpenDirectoryPickerOptions {
+ /** 通过指定 ID,浏览器可以为不同的 ID 记住不同的目录。如果相同的 ID 用于另一个选择器,则该选择器将在同一目录中打开。 */
+ id?: string;
+ /** 默认为 "read",用于只读访问,或 "readwrite" 用于读写访问。 */
+ mode?: 'read' | 'readwrite';
+ /** 一个 FileSystemHandle 对象或者代表某个众所周知的目录的字符串,用于指定选择器的起始目录。 */
+ startIn?: FileSystemHandle | string;
+}
\ No newline at end of file
diff --git a/src/interface/HTMLSelectListElement.d.ts b/src/interface/HTMLSelectListElement.d.ts
deleted file mode 100644
index 43c73fb..0000000
--- a/src/interface/HTMLSelectListElement.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * @deprecated
- * 关于可定制