diff --git a/2023/07/24/php-unserialize/index.html b/2023/07/24/php-unserialize/index.html
new file mode 100644
index 0000000..1d05b9b
--- /dev/null
+++ b/2023/07/24/php-unserialize/index.html
@@ -0,0 +1,3404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PHP反序列化漏洞 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PHP反序列化漏洞
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/07/24/shell/index.html b/2023/07/24/shell/index.html
new file mode 100644
index 0000000..2ce40ab
--- /dev/null
+++ b/2023/07/24/shell/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 服务器反弹shell - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 服务器反弹shell
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/07/26/tools/index.html b/2023/07/26/tools/index.html
new file mode 100644
index 0000000..65baf99
--- /dev/null
+++ b/2023/07/26/tools/index.html
@@ -0,0 +1,3410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 二进制分析工具 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 二进制分析工具
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/07/27/bad-usb/index.html b/2023/07/27/bad-usb/index.html
new file mode 100644
index 0000000..c365cd1
--- /dev/null
+++ b/2023/07/27/bad-usb/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BadUSB制作教程 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BadUSB制作教程
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/07/27/elf-file-format/index.html b/2023/07/27/elf-file-format/index.html
new file mode 100644
index 0000000..2116603
--- /dev/null
+++ b/2023/07/27/elf-file-format/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ elf文件格式解析 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ elf文件格式解析
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/03/windows-pe/index.html b/2023/08/03/windows-pe/index.html
new file mode 100644
index 0000000..6b8f2f6
--- /dev/null
+++ b/2023/08/03/windows-pe/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ windows权限提升 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ windows权限提升
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/crypt-introduction/index.html b/2023/08/04/crypt-introduction/index.html
new file mode 100644
index 0000000..9e70b3f
--- /dev/null
+++ b/2023/08/04/crypt-introduction/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Crypto入门 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Crypto入门
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/csrf/index.html b/2023/08/04/csrf/index.html
new file mode 100644
index 0000000..7be4048
--- /dev/null
+++ b/2023/08/04/csrf/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ csrf漏洞讲解与实战 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ csrf漏洞讲解与实战
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/fuzz-introduction/index.html b/2023/08/04/fuzz-introduction/index.html
new file mode 100644
index 0000000..c845d41
--- /dev/null
+++ b/2023/08/04/fuzz-introduction/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(一)模糊测试简介 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(一)模糊测试简介
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/stack-overflow/index.html b/2023/08/04/stack-overflow/index.html
new file mode 100644
index 0000000..a80ced5
--- /dev/null
+++ b/2023/08/04/stack-overflow/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 安全机制与栈溢出基础 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 安全机制与栈溢出基础
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/steganography/index.html b/2023/08/04/steganography/index.html
new file mode 100644
index 0000000..2224cc0
--- /dev/null
+++ b/2023/08/04/steganography/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 文件隐写 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/04/xss-introduction/index.html b/2023/08/04/xss-introduction/index.html
new file mode 100644
index 0000000..3b725e2
--- /dev/null
+++ b/2023/08/04/xss-introduction/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xss漏洞原理基础与实战 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xss漏洞原理基础与实战
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/08/08/upload-file-introduvtion/index.html b/2023/08/08/upload-file-introduvtion/index.html
new file mode 100644
index 0000000..e50dadb
--- /dev/null
+++ b/2023/08/08/upload-file-introduvtion/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 文件上传漏洞基础 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 文件上传漏洞基础
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/10/14/fuzz-tester/index.html b/2023/10/14/fuzz-tester/index.html
new file mode 100644
index 0000000..7755e52
--- /dev/null
+++ b/2023/10/14/fuzz-tester/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(二)手写一个模糊测试器 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(二)手写一个模糊测试器
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/10/26/sql-bypass/index.html b/2023/10/26/sql-bypass/index.html
new file mode 100644
index 0000000..572aa4f
--- /dev/null
+++ b/2023/10/26/sql-bypass/index.html
@@ -0,0 +1,3410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SQL注入防御绕过方法(SQL bypass) - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SQL注入防御绕过方法(SQL bypass)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/10/27/logical-flaw/index.html b/2023/10/27/logical-flaw/index.html
new file mode 100644
index 0000000..2904a21
--- /dev/null
+++ b/2023/10/27/logical-flaw/index.html
@@ -0,0 +1,3410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 逻辑漏洞和src小技巧 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 逻辑漏洞和src小技巧
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/10/30/fuzz-libfuzz-introduction/index.html b/2023/10/30/fuzz-libfuzz-introduction/index.html
new file mode 100644
index 0000000..71647e6
--- /dev/null
+++ b/2023/10/30/fuzz-libfuzz-introduction/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(三)libfuzz简介 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(三)libfuzz简介
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/02/fuzz-libfuzz-sourcecode/index.html b/2023/11/02/fuzz-libfuzz-sourcecode/index.html
new file mode 100644
index 0000000..2378fbf
--- /dev/null
+++ b/2023/11/02/fuzz-libfuzz-sourcecode/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(四)libfuzz源码解读 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fuzz模糊测试系列分享(四)libfuzz源码解读
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/05/broken-access-control/index.html b/2023/11/05/broken-access-control/index.html
new file mode 100644
index 0000000..7a5028c
--- /dev/null
+++ b/2023/11/05/broken-access-control/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 越权漏洞知识 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/14/ssti/index.html b/2023/11/14/ssti/index.html
new file mode 100644
index 0000000..212fbda
--- /dev/null
+++ b/2023/11/14/ssti/index.html
@@ -0,0 +1,3410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SSTI服务端模板注入 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SSTI服务端模板注入
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/15/datacon/index.html b/2023/11/15/datacon/index.html
new file mode 100644
index 0000000..4ca2816
--- /dev/null
+++ b/2023/11/15/datacon/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DataCon经验分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DataCon经验分享
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/20/iot-re/index.html b/2023/11/20/iot-re/index.html
new file mode 100644
index 0000000..5fa898c
--- /dev/null
+++ b/2023/11/20/iot-re/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IoT:手把手带你复现两个漏洞 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IoT:手把手带你复现两个漏洞
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/21/robot-study/index.html b/2023/11/21/robot-study/index.html
new file mode 100644
index 0000000..62aba59
--- /dev/null
+++ b/2023/11/21/robot-study/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Robot学习经历分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Robot学习经历分享
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/11/23/iot-firmware/index.html b/2023/11/23/iot-firmware/index.html
new file mode 100644
index 0000000..849a8c3
--- /dev/null
+++ b/2023/11/23/iot-firmware/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 物联网固件仿真与漏洞挖掘基础思路 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 物联网固件仿真与漏洞挖掘基础思路
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/01/hardswap-uniswap/index.html b/2023/12/01/hardswap-uniswap/index.html
new file mode 100644
index 0000000..289e475
--- /dev/null
+++ b/2023/12/01/hardswap-uniswap/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hardhat框架与Uniswap交易代码 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hardhat框架与Uniswap交易代码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/05/mevbot/index.html b/2023/12/05/mevbot/index.html
new file mode 100644
index 0000000..fd9e4b7
--- /dev/null
+++ b/2023/12/05/mevbot/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MEVBot Exploit - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MEVBot Exploit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/11/iot-firmware-guide/index.html b/2023/12/11/iot-firmware-guide/index.html
new file mode 100644
index 0000000..70df9e6
--- /dev/null
+++ b/2023/12/11/iot-firmware-guide/index.html
@@ -0,0 +1,3410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 物联网固件分析指南 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 物联网固件分析指南
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/20/symbolic-execution/index.html b/2023/12/20/symbolic-execution/index.html
new file mode 100644
index 0000000..61e4280
--- /dev/null
+++ b/2023/12/20/symbolic-execution/index.html
@@ -0,0 +1,3411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 简单了解符号执行 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 简单了解符号执行
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/20/upload-file-sp/index.html b/2023/12/20/upload-file-sp/index.html
new file mode 100644
index 0000000..e776beb
--- /dev/null
+++ b/2023/12/20/upload-file-sp/index.html
@@ -0,0 +1,3411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 文件上传另类应用 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 文件上传另类应用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2023/12/27/v2x-introduction/index.html b/2023/12/27/v2x-introduction/index.html
new file mode 100644
index 0000000..4bf024c
--- /dev/null
+++ b/2023/12/27/v2x-introduction/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 车联网安全入门分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 车联网安全入门分享
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2024/01/07/postgraduate-job/index.html b/2024/01/07/postgraduate-job/index.html
new file mode 100644
index 0000000..684ce7f
--- /dev/null
+++ b/2024/01/07/postgraduate-job/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 科普篇——关于考研、保研和找工作 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 科普篇——关于考研、保研和找工作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2024/01/18/nodejs/index.html b/2024/01/18/nodejs/index.html
new file mode 100644
index 0000000..efe3cd0
--- /dev/null
+++ b/2024/01/18/nodejs/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Node.js原型链污染 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Node.js原型链污染
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2024/01/31/ssrf/index.html b/2024/01/31/ssrf/index.html
new file mode 100644
index 0000000..feb02f6
--- /dev/null
+++ b/2024/01/31/ssrf/index.html
@@ -0,0 +1,3409 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 从零开始的SSRF - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 从零开始的SSRF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2024/02/21/hello-world/index.html b/2024/02/21/hello-world/index.html
new file mode 100644
index 0000000..a2bb199
--- /dev/null
+++ b/2024/02/21/hello-world/index.html
@@ -0,0 +1,3441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello World - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello World
+
+
+
+
+
+
+
+
+
Welcome to Hexo ! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub .
+
Quick Start Create a new post 1 $ hexo new "My New Post"
+
+
More info: Writing
+
Run server
+
+
More info: Server
+
Generate static files
+
+
More info: Generating
+
Deploy to remote sites
+
+
More info: Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/about/index.html b/about/index.html
new file mode 100644
index 0000000..cf38edb
--- /dev/null
+++ b/about/index.html
@@ -0,0 +1,3270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关于 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
欢迎加入我们:343380539(QQ群),一起建立一个知识分享社群~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/07/index.html b/archives/2023/07/index.html
new file mode 100644
index 0000000..8657077
--- /dev/null
+++ b/archives/2023/07/index.html
@@ -0,0 +1,3640 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023/7 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/08/index.html b/archives/2023/08/index.html
new file mode 100644
index 0000000..2e58bd2
--- /dev/null
+++ b/archives/2023/08/index.html
@@ -0,0 +1,3838 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023/8 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/10/index.html b/archives/2023/10/index.html
new file mode 100644
index 0000000..dc5ae26
--- /dev/null
+++ b/archives/2023/10/index.html
@@ -0,0 +1,3574 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023/10 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/11/index.html b/archives/2023/11/index.html
new file mode 100644
index 0000000..c6e0138
--- /dev/null
+++ b/archives/2023/11/index.html
@@ -0,0 +1,3772 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023/11 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/12/index.html b/archives/2023/12/index.html
new file mode 100644
index 0000000..a3b0746
--- /dev/null
+++ b/archives/2023/12/index.html
@@ -0,0 +1,3707 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023/12 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/index.html b/archives/2023/index.html
new file mode 100644
index 0000000..fa8bc20
--- /dev/null
+++ b/archives/2023/index.html
@@ -0,0 +1,3986 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 / 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/page/2/index.html b/archives/2023/page/2/index.html
new file mode 100644
index 0000000..f91e774
--- /dev/null
+++ b/archives/2023/page/2/index.html
@@ -0,0 +1,3967 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2 / 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2023/page/3/index.html b/archives/2023/page/3/index.html
new file mode 100644
index 0000000..9acce3b
--- /dev/null
+++ b/archives/2023/page/3/index.html
@@ -0,0 +1,3961 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2023 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3 / 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html
new file mode 100644
index 0000000..8314061
--- /dev/null
+++ b/archives/2024/01/index.html
@@ -0,0 +1,3508 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2024/1 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2024/02/index.html b/archives/2024/02/index.html
new file mode 100644
index 0000000..c5f4eec
--- /dev/null
+++ b/archives/2024/02/index.html
@@ -0,0 +1,3368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2024/2 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
+Qu...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/2024/index.html b/archives/2024/index.html
new file mode 100644
index 0000000..f958803
--- /dev/null
+++ b/archives/2024/index.html
@@ -0,0 +1,3566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive: 2024 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
+Qu...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/index.html b/archives/index.html
new file mode 100644
index 0000000..ade286c
--- /dev/null
+++ b/archives/index.html
@@ -0,0 +1,3848 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2023
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/page/2/index.html b/archives/page/2/index.html
new file mode 100644
index 0000000..2cb2ec3
--- /dev/null
+++ b/archives/page/2/index.html
@@ -0,0 +1,3848 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2023
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/page/3/index.html b/archives/page/3/index.html
new file mode 100644
index 0000000..b2e0cd2
--- /dev/null
+++ b/archives/page/3/index.html
@@ -0,0 +1,3848 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2023
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/archives/page/4/index.html b/archives/page/4/index.html
new file mode 100644
index 0000000..ef57595
--- /dev/null
+++ b/archives/page/4/index.html
@@ -0,0 +1,3848 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Archive - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2023
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/categories/index.html b/categories/index.html
new file mode 100644
index 0000000..b4d729a
--- /dev/null
+++ b/categories/index.html
@@ -0,0 +1,3222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 所有分类 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/categories/\347\244\276\345\214\272\345\210\206\344\272\253/index.html" "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/index.html"
new file mode 100644
index 0000000..9f36f7b
--- /dev/null
+++ "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/index.html"
@@ -0,0 +1,3989 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Category: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html" "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html"
new file mode 100644
index 0000000..1e9a106
--- /dev/null
+++ "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html"
@@ -0,0 +1,3970 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Category: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html" "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html"
new file mode 100644
index 0000000..bc7efd3
--- /dev/null
+++ "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html"
@@ -0,0 +1,3970 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Category: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html" "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html"
new file mode 100644
index 0000000..9f15146
--- /dev/null
+++ "b/categories/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html"
@@ -0,0 +1,3516 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Category: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content.json b/content.json
new file mode 100644
index 0000000..f3c1cec
--- /dev/null
+++ b/content.json
@@ -0,0 +1 @@
+{"meta":{"title":"SecureNexusLab","subtitle":"","description":"专注于网络安全与知识分享","author":"SecureNexusLab","url":"http://example.com","root":"/"},"pages":[{"title":"","date":"2024-03-12T14:46:51.558Z","updated":"2024-02-09T02:32:39.673Z","comments":true,"path":"about/index.html","permalink":"http://example.com/about/index.html","excerpt":"","text":"欢迎加入我们:343380539(QQ群),一起建立一个知识分享社群~"},{"title":"所有分类","date":"2024-03-12T14:46:51.558Z","updated":"2024-02-13T02:49:29.393Z","comments":true,"path":"categories/index.html","permalink":"http://example.com/categories/index.html","excerpt":"","text":""},{"title":"SecureNexusLab团队","date":"2024-03-12T14:46:51.559Z","updated":"2024-02-09T04:49:22.225Z","comments":true,"path":"contributors/index.html","permalink":"http://example.com/contributors/index.html","excerpt":"近期成绩:edusrc 总提交漏洞数量: 97 | 江西财经大学、同济大学、辽宁交通学院等漏洞报送证书 | cnvd漏洞若干 | 漏洞盒子公益src月榜前15 | 百度src月榜23 | 在腾讯src、新氧src等企业安全应急响应中心提交过漏洞,目前主要精力在挖掘企业src | datacon 漏洞挖掘赛道第四名 | 多个物联网固件0day漏洞","text":"近期成绩:edusrc 总提交漏洞数量: 97 | 江西财经大学、同济大学、辽宁交通学院等漏洞报送证书 | cnvd漏洞若干 | 漏洞盒子公益src月榜前15 | 百度src月榜23 | 在腾讯src、新氧src等企业安全应急响应中心提交过漏洞,目前主要精力在挖掘企业src | datacon 漏洞挖掘赛道第四名 | 多个物联网固件0day漏洞","author":"SecureNexusLab"},{"title":"所有标签","date":"2024-03-12T14:46:51.559Z","updated":"2024-02-09T02:31:20.640Z","comments":true,"path":"tags/index.html","permalink":"http://example.com/tags/index.html","excerpt":"","text":""}],"posts":[{"title":"Hello World","slug":"hello-world","date":"2024-02-21T07:32:20.372Z","updated":"2024-02-09T02:16:18.393Z","comments":true,"path":"2024/02/21/hello-world/","permalink":"http://example.com/2024/02/21/hello-world/","excerpt":"","text":"Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment","categories":[],"tags":[],"author":"SecureNexusLab"},{"title":"从零开始的SSRF","slug":"ssrf","date":"2024-01-31T09:10:20.000Z","updated":"2024-02-09T11:03:11.079Z","comments":true,"path":"2024/01/31/ssrf/","permalink":"http://example.com/2024/01/31/ssrf/","excerpt":"","text":"分享人:i3g1nner","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"SSRF","slug":"SSRF","permalink":"http://example.com/tags/SSRF/"}],"author":"i3g1nner"},{"title":"Node.js原型链污染","slug":"nodejs","date":"2024-01-18T10:08:34.000Z","updated":"2024-02-09T11:02:32.248Z","comments":true,"path":"2024/01/18/nodejs/","permalink":"http://example.com/2024/01/18/nodejs/","excerpt":"","text":"分享人:蒙面阿强","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Node.js","slug":"Node-js","permalink":"http://example.com/tags/Node-js/"}],"author":"SecureNexusLab"},{"title":"科普篇——关于考研、保研和找工作","slug":"postgraduate-job","date":"2024-01-07T13:01:47.000Z","updated":"2024-02-09T11:01:09.566Z","comments":true,"path":"2024/01/07/postgraduate-job/","permalink":"http://example.com/2024/01/07/postgraduate-job/","excerpt":"","text":"分享人:rainki","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"科普","slug":"科普","permalink":"http://example.com/tags/%E7%A7%91%E6%99%AE/"}],"author":"SecureNexusLab"},{"title":"车联网安全入门分享","slug":"v2x-introduction","date":"2023-12-27T07:54:23.000Z","updated":"2024-02-09T10:51:59.832Z","comments":true,"path":"2023/12/27/v2x-introduction/","permalink":"http://example.com/2023/12/27/v2x-introduction/","excerpt":"","text":"分享人:风间映川","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"车联网安全","slug":"车联网安全","permalink":"http://example.com/tags/%E8%BD%A6%E8%81%94%E7%BD%91%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"简单了解符号执行","slug":"symbolic-execution","date":"2023-12-20T08:41:46.000Z","updated":"2024-02-09T10:34:15.530Z","comments":true,"path":"2023/12/20/symbolic-execution/","permalink":"http://example.com/2023/12/20/symbolic-execution/","excerpt":"","text":"分享人:Celeste_GXB","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"},{"name":"符号执行","slug":"符号执行","permalink":"http://example.com/tags/%E7%AC%A6%E5%8F%B7%E6%89%A7%E8%A1%8C/"}],"author":"SecureNexusLab"},{"title":"文件上传另类应用","slug":"upload-file-sp","date":"2023-12-20T08:27:54.000Z","updated":"2024-02-09T10:32:11.308Z","comments":true,"path":"2023/12/20/upload-file-sp/","permalink":"http://example.com/2023/12/20/upload-file-sp/","excerpt":"","text":"分享人:老梁","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"文件上传","slug":"文件上传","permalink":"http://example.com/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/"}],"author":"SecureNexusLab"},{"title":"物联网固件分析指南","slug":"iot-firmware-guide","date":"2023-12-11T03:04:19.000Z","updated":"2024-02-09T10:29:25.666Z","comments":true,"path":"2023/12/11/iot-firmware-guide/","permalink":"http://example.com/2023/12/11/iot-firmware-guide/","excerpt":"","text":"分享人:gxh191","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"MEVBot Exploit","slug":"mevbot","date":"2023-12-05T12:50:00.000Z","updated":"2024-02-09T10:06:21.014Z","comments":true,"path":"2023/12/05/mevbot/","permalink":"http://example.com/2023/12/05/mevbot/","excerpt":"","text":"分享人:LCatro","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"智能合约","slug":"智能合约","permalink":"http://example.com/tags/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/"}],"author":"SecureNexusLab"},{"title":"Hardhat框架与Uniswap交易代码","slug":"hardswap-uniswap","date":"2023-12-01T12:50:00.000Z","updated":"2024-02-09T10:04:19.716Z","comments":true,"path":"2023/12/01/hardswap-uniswap/","permalink":"http://example.com/2023/12/01/hardswap-uniswap/","excerpt":"","text":"分享人:流竹君雅","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"智能合约","slug":"智能合约","permalink":"http://example.com/tags/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/"}],"author":"SecureNexusLab"},{"title":"物联网固件仿真与漏洞挖掘基础思路","slug":"iot-firmware","date":"2023-11-23T13:00:00.000Z","updated":"2024-02-09T10:00:47.927Z","comments":true,"path":"2023/11/23/iot-firmware/","permalink":"http://example.com/2023/11/23/iot-firmware/","excerpt":"","text":"分享人:re1wn","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"Robot学习经历分享","slug":"robot-study","date":"2023-11-21T02:00:00.000Z","updated":"2024-02-09T09:32:48.608Z","comments":true,"path":"2023/11/21/robot-study/","permalink":"http://example.com/2023/11/21/robot-study/","excerpt":"","text":"分享人:阳仔","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"IoT:手把手带你复现两个漏洞","slug":"iot-re","date":"2023-11-20T02:30:00.000Z","updated":"2024-02-09T09:31:24.176Z","comments":true,"path":"2023/11/20/iot-re/","permalink":"http://example.com/2023/11/20/iot-re/","excerpt":"","text":"分享人:zer0_1s","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"DataCon经验分享","slug":"datacon","date":"2023-11-14T16:36:28.000Z","updated":"2024-02-09T09:28:19.901Z","comments":true,"path":"2023/11/15/datacon/","permalink":"http://example.com/2023/11/15/datacon/","excerpt":"","text":"分享人:MOUCHEN","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"DataCon","slug":"DataCon","permalink":"http://example.com/tags/DataCon/"}],"author":"SecureNexusLab"},{"title":"SSTI服务端模板注入","slug":"ssti","date":"2023-11-14T09:17:02.000Z","updated":"2024-02-09T09:27:05.664Z","comments":true,"path":"2023/11/14/ssti/","permalink":"http://example.com/2023/11/14/ssti/","excerpt":"","text":"分享人:i3eg1nner","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"SSTI","slug":"SSTI","permalink":"http://example.com/tags/SSTI/"}],"author":"SecureNexusLab"},{"title":"越权漏洞知识","slug":"broken-access-control","date":"2023-11-05T02:00:00.000Z","updated":"2024-02-09T09:24:51.122Z","comments":true,"path":"2023/11/05/broken-access-control/","permalink":"http://example.com/2023/11/05/broken-access-control/","excerpt":"","text":"分享人:白色键盘","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"Fuzz模糊测试系列分享(四)libfuzz源码解读","slug":"fuzz-libfuzz-sourcecode","date":"2023-11-02T02:00:00.000Z","updated":"2024-02-09T09:22:14.637Z","comments":true,"path":"2023/11/02/fuzz-libfuzz-sourcecode/","permalink":"http://example.com/2023/11/02/fuzz-libfuzz-sourcecode/","excerpt":"","text":"分享人:TBK","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"FUZZ","slug":"FUZZ","permalink":"http://example.com/tags/FUZZ/"}],"author":"SecureNexusLab"},{"title":"Fuzz模糊测试系列分享(三)libfuzz简介","slug":"fuzz-libfuzz-introduction","date":"2023-10-30T13:56:32.000Z","updated":"2024-02-09T09:17:50.062Z","comments":true,"path":"2023/10/30/fuzz-libfuzz-introduction/","permalink":"http://example.com/2023/10/30/fuzz-libfuzz-introduction/","excerpt":"","text":"分享人:TBK","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"FUZZ","slug":"FUZZ","permalink":"http://example.com/tags/FUZZ/"}],"author":"SecureNexusLab"},{"title":"逻辑漏洞和src小技巧","slug":"logical-flaw","date":"2023-10-27T15:12:10.000Z","updated":"2024-02-09T09:12:44.266Z","comments":true,"path":"2023/10/27/logical-flaw/","permalink":"http://example.com/2023/10/27/logical-flaw/","excerpt":"","text":"分享人:彦语","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"SRC","slug":"SRC","permalink":"http://example.com/tags/SRC/"}],"author":"SecureNexusLab"},{"title":"SQL注入防御绕过方法(SQL bypass)","slug":"sql-bypass","date":"2023-10-26T04:10:00.000Z","updated":"2024-02-09T09:10:05.401Z","comments":true,"path":"2023/10/26/sql-bypass/","permalink":"http://example.com/2023/10/26/sql-bypass/","excerpt":"","text":"分享人:白玉京","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"Bypass","slug":"Bypass","permalink":"http://example.com/tags/Bypass/"}],"author":"SecureNexusLab"},{"title":"Fuzz模糊测试系列分享(二)手写一个模糊测试器","slug":"fuzz-tester","date":"2023-10-14T08:22:32.000Z","updated":"2024-02-09T09:08:10.895Z","comments":true,"path":"2023/10/14/fuzz-tester/","permalink":"http://example.com/2023/10/14/fuzz-tester/","excerpt":"","text":"分享人:TBK","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"FUZZ","slug":"FUZZ","permalink":"http://example.com/tags/FUZZ/"}],"author":"SecureNexusLab"},{"title":"文件上传漏洞基础","slug":"upload-file-introduvtion","date":"2023-08-07T16:28:51.000Z","updated":"2024-02-09T05:27:18.474Z","comments":true,"path":"2023/08/08/upload-file-introduvtion/","permalink":"http://example.com/2023/08/08/upload-file-introduvtion/","excerpt":"","text":"分享人:mjc","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"Crypto入门","slug":"crypt-introduction","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T05:19:19.707Z","comments":true,"path":"2023/08/04/crypt-introduction/","permalink":"http://example.com/2023/08/04/crypt-introduction/","excerpt":"","text":"分享人:Keyboard","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"密码学","slug":"密码学","permalink":"http://example.com/tags/%E5%AF%86%E7%A0%81%E5%AD%A6/"}],"author":"SecureNexusLab"},{"title":"csrf漏洞讲解与实战","slug":"csrf","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T05:37:09.630Z","comments":true,"path":"2023/08/04/csrf/","permalink":"http://example.com/2023/08/04/csrf/","excerpt":"","text":"分享人:Enc3l","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"Fuzz模糊测试系列分享(一)模糊测试简介","slug":"fuzz-introduction","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T09:06:05.250Z","comments":true,"path":"2023/08/04/fuzz-introduction/","permalink":"http://example.com/2023/08/04/fuzz-introduction/","excerpt":"","text":"分享人:TBK","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"FUZZ","slug":"FUZZ","permalink":"http://example.com/tags/FUZZ/"}],"author":"SecureNexusLab"},{"title":"安全机制与栈溢出基础","slug":"stack-overflow","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T05:35:42.204Z","comments":true,"path":"2023/08/04/stack-overflow/","permalink":"http://example.com/2023/08/04/stack-overflow/","excerpt":"","text":"分享人:antel0p3","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"文件隐写","slug":"steganography","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T05:29:45.748Z","comments":true,"path":"2023/08/04/steganography/","permalink":"http://example.com/2023/08/04/steganography/","excerpt":"","text":"分享人:F0rga1n","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"MISC","slug":"MISC","permalink":"http://example.com/tags/MISC/"}],"author":"SecureNexusLab"},{"title":"xss漏洞原理基础与实战","slug":"xss-introduction","date":"2023-08-04T04:00:00.000Z","updated":"2024-02-09T05:33:14.986Z","comments":true,"path":"2023/08/04/xss-introduction/","permalink":"http://example.com/2023/08/04/xss-introduction/","excerpt":"","text":"分享人:cheng_xing","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"windows权限提升","slug":"windows-pe","date":"2023-08-03T15:18:32.000Z","updated":"2024-02-09T05:16:10.731Z","comments":true,"path":"2023/08/03/windows-pe/","permalink":"http://example.com/2023/08/03/windows-pe/","excerpt":"","text":"分享人:D4wn","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Windows提权","slug":"Windows提权","permalink":"http://example.com/tags/Windows%E6%8F%90%E6%9D%83/"}],"author":"SecureNexusLab"},{"title":"BadUSB制作教程","slug":"bad-usb","date":"2023-07-26T16:10:52.000Z","updated":"2024-02-09T10:56:59.427Z","comments":true,"path":"2023/07/27/bad-usb/","permalink":"http://example.com/2023/07/27/bad-usb/","excerpt":"","text":"分享人:root","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"BadUSB","slug":"BadUSB","permalink":"http://example.com/tags/BadUSB/"}],"author":"SecureNexusLab"},{"title":"elf文件格式解析","slug":"elf-file-format","date":"2023-07-26T16:10:52.000Z","updated":"2024-02-09T05:12:43.955Z","comments":true,"path":"2023/07/27/elf-file-format/","permalink":"http://example.com/2023/07/27/elf-file-format/","excerpt":"","text":"分享人:antel0p3","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"二进制分析工具","slug":"tools","date":"2023-07-26T15:17:59.000Z","updated":"2024-02-09T05:13:29.589Z","comments":true,"path":"2023/07/26/tools/","permalink":"http://example.com/2023/07/26/tools/","excerpt":"","text":"分享人:antel0p3","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"},{"name":"工具","slug":"工具","permalink":"http://example.com/tags/%E5%B7%A5%E5%85%B7/"}],"author":"SecureNexusLab"},{"title":"服务器反弹shell","slug":"shell","date":"2023-07-24T02:18:47.000Z","updated":"2024-02-09T05:03:41.692Z","comments":true,"path":"2023/07/24/shell/","permalink":"http://example.com/2023/07/24/shell/","excerpt":"","text":"分享人:邓祺","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"}],"author":"SecureNexusLab"},{"title":"PHP反序列化漏洞","slug":"php-unserialize","date":"2023-07-23T17:04:04.000Z","updated":"2024-02-09T05:02:39.867Z","comments":true,"path":"2023/07/24/php-unserialize/","permalink":"http://example.com/2023/07/24/php-unserialize/","excerpt":"","text":"分享人:p5ych","categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"PHP","slug":"PHP","permalink":"http://example.com/tags/PHP/"}],"author":"SecureNexusLab"}],"categories":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/categories/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"社区分享","slug":"社区分享","permalink":"http://example.com/tags/%E7%A4%BE%E5%8C%BA%E5%88%86%E4%BA%AB/"},{"name":"Web安全","slug":"Web安全","permalink":"http://example.com/tags/Web%E5%AE%89%E5%85%A8/"},{"name":"SSRF","slug":"SSRF","permalink":"http://example.com/tags/SSRF/"},{"name":"Node.js","slug":"Node-js","permalink":"http://example.com/tags/Node-js/"},{"name":"科普","slug":"科普","permalink":"http://example.com/tags/%E7%A7%91%E6%99%AE/"},{"name":"车联网安全","slug":"车联网安全","permalink":"http://example.com/tags/%E8%BD%A6%E8%81%94%E7%BD%91%E5%AE%89%E5%85%A8/"},{"name":"二进制安全","slug":"二进制安全","permalink":"http://example.com/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8/"},{"name":"符号执行","slug":"符号执行","permalink":"http://example.com/tags/%E7%AC%A6%E5%8F%B7%E6%89%A7%E8%A1%8C/"},{"name":"文件上传","slug":"文件上传","permalink":"http://example.com/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/"},{"name":"智能合约","slug":"智能合约","permalink":"http://example.com/tags/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/"},{"name":"DataCon","slug":"DataCon","permalink":"http://example.com/tags/DataCon/"},{"name":"SSTI","slug":"SSTI","permalink":"http://example.com/tags/SSTI/"},{"name":"FUZZ","slug":"FUZZ","permalink":"http://example.com/tags/FUZZ/"},{"name":"SRC","slug":"SRC","permalink":"http://example.com/tags/SRC/"},{"name":"Bypass","slug":"Bypass","permalink":"http://example.com/tags/Bypass/"},{"name":"密码学","slug":"密码学","permalink":"http://example.com/tags/%E5%AF%86%E7%A0%81%E5%AD%A6/"},{"name":"MISC","slug":"MISC","permalink":"http://example.com/tags/MISC/"},{"name":"Windows提权","slug":"Windows提权","permalink":"http://example.com/tags/Windows%E6%8F%90%E6%9D%83/"},{"name":"BadUSB","slug":"BadUSB","permalink":"http://example.com/tags/BadUSB/"},{"name":"工具","slug":"工具","permalink":"http://example.com/tags/%E5%B7%A5%E5%85%B7/"},{"name":"PHP","slug":"PHP","permalink":"http://example.com/tags/PHP/"}]}
\ No newline at end of file
diff --git a/contributors/index.html b/contributors/index.html
new file mode 100644
index 0000000..fb027b0
--- /dev/null
+++ b/contributors/index.html
@@ -0,0 +1,3913 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab团队 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab团队
+
+
+
+
+
+
+ 近期成绩: edusrc 总提交漏洞数量: 97 | 江西财经大学、同济大学、辽宁交通学院等漏洞报送证书 | cnvd漏洞若干 | 漏洞盒子公益src月榜前15 | 百度src月榜23 | 在腾讯src、新氧src等企业安全应急响应中心提交过漏洞,目前主要精力在挖掘企业src | datacon 漏洞挖掘赛道第四名 | 多个物联网固件0day漏洞
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 评论
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/css/Readme.html b/css/Readme.html
new file mode 100644
index 0000000..77d5e16
--- /dev/null
+++ b/css/Readme.html
@@ -0,0 +1,9 @@
+样式文件说明 样式拆分说明 方案是对 https://blog.skk.moe/post/improve-fcp-for-my-blog/ 的开源实现
+first.styl 首屏样式, 内含 首屏基础样式、 cover、 navbar、 首屏search、首屏暗黑模式、首屏字体 等样式, 首屏样式采用硬编码的方式写在HTML中.
+内联硬编码自动化方案 see:scripts/helpers/first-style/index.js
+style.styl 异步加载样式, 除首屏样式外的其他样式, 最终生成 /css/style.css 异步加载.
+暗黑模式样式说明 暗黑模式样式被拆分为首屏暗黑模式样式和异步暗黑模式样式,其中在 source/css/ 文件夹下:
+_first/dark_first.styl : 包含 首屏暗黑模式样式 的 暗黑模式 CSS 变量 和 强制覆盖样式
+_style/_plugins/_dark : 异步暗黑模式样式文件夹
+_style/_plugins/_dark/dark_async.styl : 包含 异步暗黑模式样式 的 暗黑模式 CSS 变量
+_style/_plugins/_dark/dark_plugins.styl : 包含 异步暗黑模式样式 的 强制覆盖样式
diff --git a/css/first.css b/css/first.css
new file mode 100644
index 0000000..5dd0fb3
--- /dev/null
+++ b/css/first.css
@@ -0,0 +1,1616 @@
+#safearea {
+ display: none;
+}
+:root {
+ --color-site-body: #f4f4f4;
+ --color-site-bg: #f4f4f4;
+ --color-site-inner: #fff;
+ --color-site-footer: #666;
+ --color-card: #fff;
+ --color-text: #444;
+ --color-block: #f6f6f6;
+ --color-inlinecode: #c74f00;
+ --color-codeblock: #fff7ea;
+ --color-h1: #3a3a3a;
+ --color-h2: #3a3a3a;
+ --color-h3: #333;
+ --color-h4: #444;
+ --color-h5: #555;
+ --color-h6: #666;
+ --color-p: #444;
+ --color-list: #666;
+ --color-list-hl: #30ad91;
+ --color-meta: #888;
+ --color-read-bkg: #e0d8c8;
+ --color-read-post: #f8f1e2;
+ --color-copyright-bkg: #f5f5f5;
+}
+* {
+ box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ outline: none;
+ margin: 0;
+ padding: 0;
+}
+*::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+*::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+*::-webkit-scrollbar-thumb {
+ background: #3dd9b6;
+ cursor: pointer;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+*::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+}
+html {
+ color: var(--color-text);
+ width: 100%;
+ height: 100%;
+ font-family: UbuntuMono, "Varela Round", "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Menlo, Monaco, monospace, sans-serif;
+ font-size: 16px;
+}
+html >::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+html >::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+html >::-webkit-scrollbar-thumb {
+ background: #54b5a0 linear-gradient(45deg, rgba(255,255,255,0.4) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.4) 50%, rgba(255,255,255,0.4) 75%, transparent 75%, transparent);
+ cursor: pointer;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+html >::-webkit-scrollbar-thumb:hover {
+ background: #54b5a0 linear-gradient(45deg, rgba(255,255,255,0.4) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.4) 50%, rgba(255,255,255,0.4) 75%, transparent 75%, transparent);
+}
+body {
+ background-color: var(--color-site-body);
+ text-rendering: optimizelegibility;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ line-height: 1.6;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+body.modal-active {
+ overflow: hidden;
+}
+@media screen and (max-width: 680px) {
+ body.modal-active {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ }
+}
+a {
+ color: #2092ec;
+ cursor: pointer;
+ text-decoration: none;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+a:hover {
+ color: #ff5722;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+ul,
+ol {
+ padding-left: 0;
+}
+ul li,
+ol li {
+ list-style: none;
+}
+header {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+img {
+ border: 0;
+ background: none;
+ max-width: 100%;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ height: 0;
+ border: 0;
+ border-radius: 1px;
+ -webkit-border-radius: 1px;
+ border-bottom: 1px solid rgba(68,68,68,0.1);
+}
+button,
+input {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+button {
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+@supports (backdrop-filter: blur(20px)) {
+ .blur {
+ background: rgba(255,255,255,0.9) !important;
+ backdrop-filter: saturate(200%) blur(20px);
+ }
+}
+.shadow {
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+}
+.shadow.floatable {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.shadow.floatable:hover {
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+#l_cover {
+ min-height: 64px;
+}
+.cover-wrapper {
+ top: 0;
+ left: 0;
+ max-width: 100%;
+ height: 100vh;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: nowrap;
+ -webkit-flex-wrap: nowrap;
+ -khtml-flex-wrap: nowrap;
+ -moz-flex-wrap: nowrap;
+ -o-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+ align-self: center;
+ align-content: center;
+ color: var(--color-site-inner);
+ padding: 0 16px;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ position: relative;
+ overflow: hidden;
+ margin-bottom: -100px;
+}
+.cover-wrapper .cover-bg {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-position: center;
+ background-size: cover;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+}
+.cover-wrapper .cover-bg.lazyload:not(.loaded) {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+}
+.cover-wrapper .cover-bg.lazyload.loaded {
+ animation-delay: 0s;
+ animation-duration: 0.5s;
+ animation-fill-mode: forwards;
+ animation-timing-function: ease-out;
+ animation-name: fadeIn;
+}
+@-moz-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ filter: blur(12px);
+ transform: scale(1.02);
+ -webkit-transform: scale(1.02);
+ -khtml-transform: scale(1.02);
+ -moz-transform: scale(1.02);
+ -o-transform: scale(1.02);
+ -ms-transform: scale(1.02);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@-webkit-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ filter: blur(12px);
+ transform: scale(1.02);
+ -webkit-transform: scale(1.02);
+ -khtml-transform: scale(1.02);
+ -moz-transform: scale(1.02);
+ -o-transform: scale(1.02);
+ -ms-transform: scale(1.02);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@-o-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ filter: blur(12px);
+ transform: scale(1.02);
+ -webkit-transform: scale(1.02);
+ -khtml-transform: scale(1.02);
+ -moz-transform: scale(1.02);
+ -o-transform: scale(1.02);
+ -ms-transform: scale(1.02);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ filter: blur(12px);
+ transform: scale(1.02);
+ -webkit-transform: scale(1.02);
+ -khtml-transform: scale(1.02);
+ -moz-transform: scale(1.02);
+ -o-transform: scale(1.02);
+ -ms-transform: scale(1.02);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+.cover-wrapper .cover-body {
+ z-index: 1;
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+.cover-wrapper#full {
+ height: calc(100vh + 100px);
+ padding-bottom: 100px;
+}
+.cover-wrapper#half {
+ max-height: 640px;
+ min-height: 400px;
+ height: calc(36vh - 64px + 200px);
+}
+.cover-wrapper #scroll-down {
+ width: 100%;
+ height: 64px;
+ position: absolute;
+ bottom: 100px;
+ text-align: center;
+ cursor: pointer;
+}
+.cover-wrapper #scroll-down .scroll-down-effects {
+ color: #fff;
+ font-size: 24px;
+ line-height: 64px;
+ position: absolute;
+ width: 24px;
+ left: calc(50% - 12px);
+ text-shadow: 0 1px 2px rgba(0,0,0,0.1);
+ animation: scroll-down-effect 1.5s infinite;
+ -webkit-animation: scroll-down-effect 1.5s infinite;
+ -khtml-animation: scroll-down-effect 1.5s infinite;
+ -moz-animation: scroll-down-effect 1.5s infinite;
+ -o-animation: scroll-down-effect 1.5s infinite;
+ -ms-animation: scroll-down-effect 1.5s infinite;
+}
+@-moz-keyframes scroll-down-effect {
+ 0% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+ 50% {
+ top: -16px;
+ opacity: 0.4;
+ -webkit-opacity: 0.4;
+ -moz-opacity: 0.4;
+ }
+ 100% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@-webkit-keyframes scroll-down-effect {
+ 0% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+ 50% {
+ top: -16px;
+ opacity: 0.4;
+ -webkit-opacity: 0.4;
+ -moz-opacity: 0.4;
+ }
+ 100% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@-o-keyframes scroll-down-effect {
+ 0% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+ 50% {
+ top: -16px;
+ opacity: 0.4;
+ -webkit-opacity: 0.4;
+ -moz-opacity: 0.4;
+ }
+ 100% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@keyframes scroll-down-effect {
+ 0% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+ 50% {
+ top: -16px;
+ opacity: 0.4;
+ -webkit-opacity: 0.4;
+ -moz-opacity: 0.4;
+ }
+ 100% {
+ top: 0;
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+.cover-wrapper .cover-body {
+ margin-top: 64px;
+ margin-bottom: 100px;
+}
+.cover-wrapper .cover-body,
+.cover-wrapper .cover-body .top,
+.cover-wrapper .cover-body .bottom {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ max-width: 100%;
+}
+.cover-wrapper .cover-body .bottom {
+ margin-top: 32px;
+}
+.cover-wrapper .cover-body .title {
+ font-family: "Varela Round", "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Helvetica, monospace;
+ font-size: 3.125rem;
+ line-height: 1.2;
+ text-shadow: 0 1px 2px rgba(0,0,0,0.1);
+}
+.cover-wrapper .cover-body .subtitle {
+ font-size: 20px;
+}
+.cover-wrapper .cover-body .logo {
+ max-height: 120px;
+ max-width: calc(100% - 4 * 16px);
+}
+@media screen and (min-height: 1024px) {
+ .cover-wrapper .cover-body .title {
+ font-size: 3rem;
+ }
+ .cover-wrapper .cover-body .subtitle {
+ font-size: 1.05rem;
+ }
+ .cover-wrapper .cover-body .logo {
+ max-height: 150px;
+ }
+}
+.cover-wrapper .cover-body .m_search {
+ position: relative;
+ max-width: calc(100% - 16px);
+ width: 320px;
+ vertical-align: middle;
+}
+.cover-wrapper .cover-body .m_search .form {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ width: 100%;
+}
+.cover-wrapper .cover-body .m_search .icon,
+.cover-wrapper .cover-body .m_search .input {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.cover-wrapper .cover-body .m_search .icon {
+ position: absolute;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ line-height: 2.5rem;
+ width: 32px;
+ top: 0;
+ left: 5px;
+ color: rgba(68,68,68,0.75);
+}
+.cover-wrapper .cover-body .m_search .input {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ height: 2.5rem;
+ width: 100%;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ font-size: 0.875rem;
+ -webkit-appearance: none;
+ padding-left: 36px;
+ border-radius: 1.4rem;
+ -webkit-border-radius: 1.4rem;
+ background: rgba(255,255,255,0.6);
+ backdrop-filter: blur(10px);
+ border: none;
+ color: var(--color-text);
+}
+@media screen and (max-width: 500px) {
+ .cover-wrapper .cover-body .m_search .input {
+ padding-left: 36px;
+ }
+}
+.cover-wrapper .cover-body .m_search .input:hover {
+ background: rgba(255,255,255,0.8);
+}
+.cover-wrapper .cover-body .m_search .input:focus {
+ background: #fff;
+}
+.cover-wrapper .list-h {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: horizontal;
+ -moz-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: stretch;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+.cover-wrapper .list-h a {
+ -webkit-box-flex: 1;
+ -moz-box-flex: 1;
+ -webkit-flex: 1 0;
+ -ms-flex: 1 0;
+ flex: 1 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ font-weight: 600;
+}
+.cover-wrapper .list-h a img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ margin: 4px;
+ min-width: 40px;
+ max-width: 44px;
+}
+@media screen and (max-width: 768px) {
+ .cover-wrapper .list-h a img {
+ min-width: 36px;
+ max-width: 40px;
+ }
+}
+@media screen and (max-width: 500px) {
+ .cover-wrapper .list-h a img {
+ margin: 2px 4px;
+ min-width: 32px;
+ max-width: 36px;
+ }
+}
+@media screen and (max-width: 375px) {
+ .cover-wrapper .list-h a img {
+ min-width: 28px;
+ max-width: 32px;
+ }
+}
+.cover-wrapper {
+ max-width: 100%;
+}
+.cover-wrapper.search .bottom .menu {
+ margin-top: 16px;
+}
+.cover-wrapper.search .bottom .menu .list-h a {
+ white-space: nowrap;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: horizontal;
+ -moz-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ align-items: baseline;
+ padding: 2px;
+ margin: 4px;
+ color: var(--color-site-inner);
+ opacity: 0.75;
+ -webkit-opacity: 0.75;
+ -moz-opacity: 0.75;
+ text-shadow: 0 1px 2px rgba(0,0,0,0.05);
+ border-bottom: 2px solid transparent;
+}
+.cover-wrapper.search .bottom .menu .list-h a i {
+ margin-right: 4px;
+}
+.cover-wrapper.search .bottom .menu .list-h a p {
+ font-size: 0.9375rem;
+}
+.cover-wrapper.search .bottom .menu .list-h a:hover,
+.cover-wrapper.search .bottom .menu .list-h a.active,
+.cover-wrapper.search .bottom .menu .list-h a:active {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ border-bottom: 2px solid var(--color-site-inner);
+}
+.cover-wrapper.dock .menu,
+.cover-wrapper.featured .menu,
+.cover-wrapper.focus .menu {
+ border-radius: 6px;
+ -webkit-border-radius: 6px;
+}
+.cover-wrapper.dock .menu .list-h a,
+.cover-wrapper.featured .menu .list-h a,
+.cover-wrapper.focus .menu .list-h a {
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+ padding: 12px;
+ line-height: 24px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-bottom: none;
+ text-align: center;
+ align-content: flex-end;
+ color: rgba(68,68,68,0.7);
+ font-size: 1.5rem;
+}
+@media screen and (max-width: 500px) {
+ .cover-wrapper.dock .menu .list-h a,
+ .cover-wrapper.featured .menu .list-h a,
+ .cover-wrapper.focus .menu .list-h a {
+ padding: 12px 8px;
+ }
+}
+.cover-wrapper.dock .menu .list-h a i,
+.cover-wrapper.featured .menu .list-h a i,
+.cover-wrapper.focus .menu .list-h a i {
+ margin: 8px;
+}
+.cover-wrapper.dock .menu .list-h a p,
+.cover-wrapper.featured .menu .list-h a p,
+.cover-wrapper.focus .menu .list-h a p {
+ font-size: 0.875rem;
+}
+.cover-wrapper.dock .menu .list-h a.active,
+.cover-wrapper.featured .menu .list-h a.active,
+.cover-wrapper.focus .menu .list-h a.active {
+ background: var(--color-card);
+ backdrop-filter: none;
+}
+.cover-wrapper.dock .menu .list-h a.active i,
+.cover-wrapper.featured .menu .list-h a.active i,
+.cover-wrapper.focus .menu .list-h a.active i,
+.cover-wrapper.dock .menu .list-h a.active i+p,
+.cover-wrapper.featured .menu .list-h a.active i+p,
+.cover-wrapper.focus .menu .list-h a.active i+p {
+ color: #3dd9b6;
+}
+.cover-wrapper.dock .menu .list-h a.active img+p,
+.cover-wrapper.featured .menu .list-h a.active img+p,
+.cover-wrapper.focus .menu .list-h a.active img+p {
+ color: var(--color-text);
+}
+.cover-wrapper.dock .menu .list-h a:hover,
+.cover-wrapper.featured .menu .list-h a:hover,
+.cover-wrapper.focus .menu .list-h a:hover {
+ background: var(--color-card);
+}
+.cover-wrapper.dock .top {
+ margin-bottom: 48px;
+}
+.cover-wrapper.dock .menu {
+ background: rgba(255,255,255,0.5);
+ position: absolute;
+ bottom: 0;
+ max-width: 100%;
+}
+.cover-wrapper.dock .menu .list-h {
+ flex-wrap: nowrap;
+ -webkit-flex-wrap: nowrap;
+ -khtml-flex-wrap: nowrap;
+ -moz-flex-wrap: nowrap;
+ -o-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ margin: 4px;
+}
+.cover-wrapper.dock .menu .list-h a+a {
+ margin-left: 4px;
+}
+@media screen and (max-width: 500px) {
+ .cover-wrapper.dock .menu .list-h {
+ overflow-x: scroll;
+ }
+ .cover-wrapper.dock .menu .list-h::-webkit-scrollbar {
+ height: 0;
+ width: 0;
+ }
+ .cover-wrapper.dock .menu .list-h::-webkit-scrollbar-track-piece {
+ background: transparent;
+ }
+ .cover-wrapper.dock .menu .list-h::-webkit-scrollbar-thumb {
+ background: #3dd9b6;
+ cursor: pointer;
+ border-radius: 0;
+ -webkit-border-radius: 0;
+ }
+ .cover-wrapper.dock .menu .list-h::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+ }
+}
+@supports (backdrop-filter: blur(20px)) {
+ .cover-wrapper.dock .menu {
+ background: rgba(255,255,255,0.5);
+ backdrop-filter: saturate(200%) blur(20px);
+ }
+}
+@font-face {
+ font-family: 'UbuntuMono';
+ src: url("https://unpkg.com/volantis-static@0.0.1654736714924/media/fonts/UbuntuMono/UbuntuMono-Regular.ttf");
+ font-weight: 'normal';
+ font-style: 'normal';
+ font-display: swap;
+}
+@font-face {
+ font-family: 'Varela Round';
+ src: url("https://unpkg.com/volantis-static@0.0.1654736714924/media/fonts/VarelaRound/VarelaRound-Regular.ttf");
+ font-weight: 'normal';
+ font-style: 'normal';
+ font-display: swap;
+}
+.l_header {
+ position: fixed;
+ z-index: 1000;
+ top: 0;
+ width: 100%;
+ height: 64px;
+ background: var(--color-card);
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+}
+.l_header.auto {
+ transition: opacity 0.4s ease;
+ -webkit-transition: opacity 0.4s ease;
+ -khtml-transition: opacity 0.4s ease;
+ -moz-transition: opacity 0.4s ease;
+ -o-transition: opacity 0.4s ease;
+ -ms-transition: opacity 0.4s ease;
+ visibility: hidden;
+}
+.l_header.auto.show {
+ opacity: 1 !important;
+ -webkit-opacity: 1 !important;
+ -moz-opacity: 1 !important;
+ visibility: visible;
+}
+.l_header .container {
+ margin-left: 16px;
+ margin-right: 16px;
+}
+.l_header #wrapper {
+ height: 100%;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+.l_header #wrapper .nav-main,
+.l_header #wrapper .nav-sub {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: nowrap;
+ -webkit-flex-wrap: nowrap;
+ -khtml-flex-wrap: nowrap;
+ -moz-flex-wrap: nowrap;
+ -o-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ align-items: center;
+}
+.l_header #wrapper .nav-main {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.l_header #wrapper.sub .nav-main {
+ transform: translateY(-64px);
+ -webkit-transform: translateY(-64px);
+ -khtml-transform: translateY(-64px);
+ -moz-transform: translateY(-64px);
+ -o-transform: translateY(-64px);
+ -ms-transform: translateY(-64px);
+}
+.l_header #wrapper .nav-sub {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ height: 64px;
+ width: calc(100% - 2 * 16px);
+ position: absolute;
+}
+.l_header #wrapper .nav-sub ::-webkit-scrollbar {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+@media screen and (min-width: 2048px) {
+ .l_header #wrapper .nav-sub {
+ max-width: 55vw;
+ margin: auto;
+ }
+}
+.l_header #wrapper.sub .nav-sub {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+}
+.l_header #wrapper .title {
+ position: relative;
+ color: var(--color-text);
+ padding-left: 24px;
+ max-height: 64px;
+}
+.l_header #wrapper .nav-main .title {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ flex-shrink: 0;
+ line-height: 64px;
+ padding: 0 24px;
+ font-size: 1.25rem;
+ font-family: "Varela Round", "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Helvetica, monospace;
+}
+.l_header #wrapper .nav-main .title img {
+ height: 64px;
+}
+.l_header .nav-sub {
+ max-width: 1080px;
+ margin: auto;
+}
+.l_header .nav-sub .title {
+ font-weight: bold;
+ font-family: UbuntuMono, "Varela Round", "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Menlo, Monaco, monospace, sans-serif;
+ line-height: 1.2;
+ max-height: 64px;
+ white-space: normal;
+ flex-shrink: 1;
+}
+.l_header .switcher {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ line-height: 64px;
+ align-items: center;
+}
+.l_header .switcher .s-toc {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+@media screen and (max-width: 768px) {
+ .l_header .switcher .s-toc {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ }
+}
+.l_header .switcher >li {
+ height: 48px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ margin: 2px;
+}
+@media screen and (max-width: 500px) {
+ .l_header .switcher >li {
+ margin: 0 1px;
+ height: 48px;
+ }
+}
+.l_header .switcher >li >a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+ width: 48px;
+ height: 48px;
+ padding: 0.85em 1.1em;
+ border-radius: 100px;
+ -webkit-border-radius: 100px;
+ border: none;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ color: #3dd9b6;
+}
+.l_header .switcher >li >a:hover {
+ border: none;
+}
+.l_header .switcher >li >a.active,
+.l_header .switcher >li >a:active {
+ border: none;
+ background: var(--color-site-bg);
+}
+@media screen and (max-width: 500px) {
+ .l_header .switcher >li >a {
+ width: 36px;
+ height: 48px;
+ }
+}
+.l_header .nav-sub .switcher {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+}
+.l_header .m_search {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ height: 64px;
+ width: 240px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+@media screen and (max-width: 1024px) {
+ .l_header .m_search {
+ width: 44px;
+ min-width: 44px;
+ }
+ .l_header .m_search input::placeholder {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ }
+ .l_header .m_search:hover {
+ width: 240px;
+ }
+ .l_header .m_search:hover input::placeholder {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@media screen and (min-width: 500px) {
+ .l_header .m_search:hover .input {
+ width: 100%;
+ }
+ .l_header .m_search:hover .input::placeholder {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+@media screen and (max-width: 500px) {
+ .l_header .m_search {
+ min-width: 0;
+ }
+ .l_header .m_search input::placeholder {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ }
+}
+.l_header .m_search .form {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ width: 100%;
+ align-items: center;
+}
+.l_header .m_search .icon {
+ position: absolute;
+ width: 36px;
+ left: 5px;
+ color: var(--color-meta);
+}
+@media screen and (max-width: 500px) {
+ .l_header .m_search .icon {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ }
+}
+.l_header .m_search .input {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 1.3;
+ width: 100%;
+ color: var(--color-text);
+ background: #fafafa;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ padding-left: 40px;
+ font-size: 0.875rem;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ border: none;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+@media screen and (min-width: 500px) {
+ .l_header .m_search .input:focus {
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+ }
+}
+@media screen and (max-width: 500px) {
+ .l_header .m_search .input {
+ background: var(--color-block);
+ padding-left: 8px;
+ border: none;
+ }
+ .l_header .m_search .input:hover,
+ .l_header .m_search .input:focus {
+ border: none;
+ }
+}
+@media (max-width: 500px) {
+ .l_header .m_search {
+ left: 0;
+ width: 0;
+ overflow: hidden;
+ position: absolute;
+ background: #fff;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ }
+ .l_header .m_search .input {
+ border-radius: 32px;
+ -webkit-border-radius: 32px;
+ margin-left: 16px;
+ padding-left: 16px;
+ }
+ .l_header.z_search-open .m_search {
+ width: 100%;
+ }
+ .l_header.z_search-open .m_search .input {
+ width: calc(100% - 120px);
+ }
+}
+ul.m-pc >li>a {
+ color: inherit;
+ border-bottom: 2px solid transparent;
+}
+ul.m-pc >li>a:active,
+ul.m-pc >li>a.active {
+ border-bottom: 2px solid #3dd9b6;
+}
+ul.m-pc li:hover >ul.list-v,
+ul.list-v li:hover >ul.list-v {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+ul.nav-list-h {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: stretch;
+}
+ul.nav-list-h>li {
+ position: relative;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ height: 100%;
+ line-height: 2.4;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+ul.nav-list-h>li >a {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-weight: 600;
+}
+ul.list-v {
+ z-index: 1;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ position: absolute;
+ background: var(--color-card);
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.08), 0 4px 8px 0px rgba(0,0,0,0.08), 0 8px 16px 0px rgba(0,0,0,0.08);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.08), 0 4px 8px 0px rgba(0,0,0,0.08), 0 8px 16px 0px rgba(0,0,0,0.08);
+ margin-top: -6px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ padding: 8px 0;
+}
+ul.list-v.show {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+ul.list-v hr {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+ul.list-v >li {
+ white-space: nowrap;
+ word-break: keep-all;
+}
+ul.list-v >li.header {
+ font-size: 0.78125rem;
+ font-weight: bold;
+ line-height: 2em;
+ color: var(--color-meta);
+ margin: 8px 16px 4px;
+}
+ul.list-v >li.header i {
+ margin-right: 8px;
+}
+ul.list-v >li ul {
+ margin-left: 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ margin-top: -40px;
+}
+ul.list-v .aplayer-container {
+ min-height: 64px;
+ padding: 6px 16px;
+}
+ul.list-v >li>a {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ color: var(--color-list);
+ font-size: 0.875rem;
+ font-weight: bold;
+ line-height: 36px;
+ padding: 0 20px 0 16px;
+ text-overflow: ellipsis;
+ margin: 0 4px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+@media screen and (max-width: 1024px) {
+ ul.list-v >li>a {
+ line-height: 40px;
+ }
+}
+ul.list-v >li>a >i {
+ margin-right: 8px;
+}
+ul.list-v >li>a:active,
+ul.list-v >li>a.active {
+ color: var(--color-list-hl);
+}
+ul.list-v >li>a:hover {
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+}
+.l_header .menu >ul>li>a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding: 0 8px;
+}
+.l_header .menu >ul>li>a >i {
+ margin-right: 4px;
+}
+.l_header ul.nav-list-h>li {
+ color: var(--color-list);
+ line-height: 64px;
+}
+.l_header ul.nav-list-h>li >a {
+ max-height: 64px;
+ overflow: hidden;
+ color: inherit;
+}
+.l_header ul.nav-list-h>li >a:active,
+.l_header ul.nav-list-h>li >a.active {
+ color: #3dd9b6;
+}
+.l_header ul.nav-list-h>li:hover>a {
+ color: var(--color-list-hl);
+}
+.l_header ul.nav-list-h>li i.music {
+ animation: rotate-effect 1.5s linear infinite;
+ -webkit-animation: rotate-effect 1.5s linear infinite;
+ -khtml-animation: rotate-effect 1.5s linear infinite;
+ -moz-animation: rotate-effect 1.5s linear infinite;
+ -o-animation: rotate-effect 1.5s linear infinite;
+ -ms-animation: rotate-effect 1.5s linear infinite;
+}
+@-moz-keyframes rotate-effect {
+ 0% {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ }
+ 25% {
+ transform: rotate(90deg);
+ -webkit-transform: rotate(90deg);
+ -khtml-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ }
+ 50% {
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+ -khtml-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ }
+ 75% {
+ transform: rotate(270deg);
+ -webkit-transform: rotate(270deg);
+ -khtml-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@-webkit-keyframes rotate-effect {
+ 0% {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ }
+ 25% {
+ transform: rotate(90deg);
+ -webkit-transform: rotate(90deg);
+ -khtml-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ }
+ 50% {
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+ -khtml-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ }
+ 75% {
+ transform: rotate(270deg);
+ -webkit-transform: rotate(270deg);
+ -khtml-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@-o-keyframes rotate-effect {
+ 0% {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ }
+ 25% {
+ transform: rotate(90deg);
+ -webkit-transform: rotate(90deg);
+ -khtml-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ }
+ 50% {
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+ -khtml-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ }
+ 75% {
+ transform: rotate(270deg);
+ -webkit-transform: rotate(270deg);
+ -khtml-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@keyframes rotate-effect {
+ 0% {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ }
+ 25% {
+ transform: rotate(90deg);
+ -webkit-transform: rotate(90deg);
+ -khtml-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ }
+ 50% {
+ transform: rotate(180deg);
+ -webkit-transform: rotate(180deg);
+ -khtml-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ }
+ 75% {
+ transform: rotate(270deg);
+ -webkit-transform: rotate(270deg);
+ -khtml-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+.menu-phone li ul.list-v {
+ right: calc(100% - 0.5 * 16px);
+}
+.menu-phone li ul.list-v ul {
+ right: calc(100% - 0.5 * 16px);
+}
+#wrapper {
+ max-width: 1080px;
+ margin: auto;
+}
+@media screen and (min-width: 2048px) {
+ #wrapper {
+ max-width: 55vw;
+ }
+}
+#wrapper .menu {
+ -webkit-box-flex: 1;
+ -moz-box-flex: 1;
+ -webkit-flex: 1 1;
+ -ms-flex: 1 1;
+ flex: 1 1;
+ margin: 0 16px 0 0;
+}
+#wrapper .menu .list-v ul {
+ left: calc(100% - 0.5 * 16px);
+}
+.menu-phone {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ margin-top: 16px;
+ right: 8px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.menu-phone ul {
+ right: calc(100% - 0.5 * 16px);
+}
+@media screen and (max-width: 500px) {
+ .menu-phone {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ }
+}
+.l_header {
+ max-width: 65vw;
+ left: calc((100% - 65vw) * 0.5);
+ border-bottom-left-radius: 8px;
+ border-bottom-right-radius: 8px;
+}
+@media screen and (max-width: 2048px) {
+ .l_header {
+ max-width: 1112px;
+ left: calc((100% - 1112px) * 0.5);
+ }
+}
+@media screen and (max-width: 1112px) {
+ .l_header {
+ left: 0;
+ border-radius: 0;
+ -webkit-border-radius: 0;
+ max-width: 100%;
+ }
+}
+@media screen and (max-width: 500px) {
+ .l_header .container {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ .l_header #wrapper .nav-main .title {
+ padding-left: 16px;
+ padding-right: 16px;
+ }
+ .l_header #wrapper .nav-sub {
+ width: 100%;
+ }
+ .l_header #wrapper .nav-sub .title {
+ overflow-y: scroll;
+ margin-top: 2px;
+ padding: 8px 16px;
+ }
+ .l_header #wrapper .switcher {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ margin-right: 8px;
+ }
+ .l_header .menu {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ }
+}
+@media screen and (max-width: 500px) {
+ .list-v li {
+ max-width: 270px;
+ }
+}
+#u-search {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ padding: 60px 20px;
+ z-index: 1001;
+}
+@media screen and (max-width: 680px) {
+ #u-search {
+ padding: 0px;
+ }
+}
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..9d0cf1d
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,6868 @@
+#safearea {
+ display: block;
+}
+:root {
+ --block-hover: #ededed;
+ --text-p1: #222;
+ --text-p3: #777;
+ --card: #fff;
+}
+::-moz-selection {
+ background: rgba(33,150,243,0.2);
+}
+::selection {
+ background: rgba(33,150,243,0.2);
+}
+h1 {
+ font-size: 1.5rem;
+}
+h2 {
+ font-size: 1.5rem;
+}
+h3 {
+ font-size: 1.25rem;
+}
+h4 {
+ font-size: 1.125rem;
+}
+h5 {
+ font-size: 1rem;
+}
+h6 {
+ font-size: 1rem;
+}
+h1,
+h2,
+h3,
+h4,
+h6 {
+ font-weight: normal;
+}
+a:not([href]) {
+ cursor: default;
+}
+pre {
+ tab-size: 4;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ -webkit-tab-size: 4;
+}
+.clearfix {
+ zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ content: " ";
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: table;
+}
+.clearfix:after {
+ clear: both;
+}
+.hidden {
+ text-indent: -9999px;
+ visibility: hidden;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+.inner {
+ position: relative;
+ width: 80%;
+ max-width: 710px;
+ margin: 0 auto;
+}
+.vertical {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: table-cell;
+ vertical-align: middle;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+article {
+ overflow: hidden;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 50%;
+ line-height: 1em;
+}
+sup {
+ vertical-align: text-top;
+}
+sub {
+ vertical-align: text-bottom;
+}
+figure {
+ margin: 1em 40px;
+}
+pre {
+ overflow: auto;
+}
+span.dot,
+span.sep {
+ font-size: 0.9em;
+ margin: 0 0.2rem;
+}
+span.dot:before {
+ content: '·';
+}
+span.sep:before {
+ content: '/';
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+optgroup,
+select,
+textarea {
+ color: inherit /* 1 */;
+ font: inherit /* 2 */;
+ margin: 0 /* 3 */;
+}
+select {
+ text-transform: none;
+}
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button /* 2 */;
+ cursor: pointer /* 3 */;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box /* 1 */;
+ -webkit-box-sizing: border-box /* 1 */;
+ -moz-box-sizing: border-box /* 1 */;
+ padding: 0 /* 2 */;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: textfield /* 1 */;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box /* 2 */;
+ box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0 /* 1 */;
+ padding: 0 /* 2 */;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table:not([class]) {
+ border-collapse: collapse;
+ overflow: auto;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ max-width: 100%;
+ vertical-align: text-top;
+}
+table:not([class]) th {
+ background-color: #f1f1f1;
+}
+table:not([class]) td,
+table:not([class]) th {
+ padding: 8px 16px;
+ border: 2px solid #f1f1f1;
+ line-height: 1.5;
+ font-size: 90%;
+}
+table:not([class]) tr {
+ word-break: keep-all;
+ background-color: #fefefe;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+table:not([class]) tr:hover {
+ background-color: #f1f1f1;
+}
+td,
+th {
+ padding: 0;
+}
+article#arc,
+article#cat,
+article#tag {
+ padding-top: 48px;
+ padding-bottom: 48px;
+}
+article#arc h2,
+article#cat h2,
+article#tag h2 {
+ font-weight: 600;
+}
+article#arc h2:first-child,
+article#cat h2:first-child,
+article#tag h2:first-child {
+ margin-top: 0;
+}
+article#arc {
+ margin-bottom: 32px;
+ padding-bottom: 64px;
+}
+article#arc .timenode:before,
+article#arc .timenode:after {
+ margin-left: 12px;
+}
+article#arc .timenode .meta {
+ padding: 6px 0;
+ line-height: 1.5;
+ height: auto;
+ max-width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ font-size: 0.9375rem;
+ font-weight: 500;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ color: var(--color-list);
+}
+article#arc .timenode .meta:before {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+article#arc .timenode .meta:after {
+ margin-left: 14px;
+}
+article#arc .timenode .meta:hover {
+ color: var(--color-p);
+ background: var(--color-site-bg);
+}
+article#arc .timenode .meta time {
+ color: var(--color-meta);
+ margin-left: 34px;
+ margin-right: 4px;
+ flex-shrink: 0;
+ width: 60px;
+}
+article#arc .timenode .meta i {
+ line-height: 1.5;
+ color: #ff5722;
+}
+article#arc .timenode .meta i.red {
+ color: #fe5f58;
+}
+article#arc .timenode .meta i.green {
+ color: #3dc550;
+}
+article#arc .timenode .meta i.yellow {
+ color: #ffbd2b;
+}
+article#arc .timenode .meta i.blue {
+ color: #1bcdfc;
+}
+article#arc .timenode .meta i.theme {
+ color: #3dd9b6;
+}
+article#arc .timenode .meta i.accent {
+ color: #ff5722;
+}
+article#arc .timenode .meta i.orange {
+ color: #ff5722;
+}
+article#cat .all-cats a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding: 8px 16px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ color: var(--color-list);
+ font-size: 0.9375rem;
+ font-weight: 500;
+}
+article#cat .all-cats a:hover {
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+}
+article#cat .all-cats a.child {
+ padding-left: 48px;
+}
+article#tag .all-tags {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: flex-start;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ align-items: baseline;
+ text-align: center;
+}
+article#tag .all-tags ul {
+ margin: 0 -8px;
+ padding: 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+}
+article#tag .all-tags ul li {
+ list-style: none;
+ margin: 8px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ overflow: hidden;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ position: relative;
+ font-size: 0.9375rem;
+}
+article#tag .all-tags ul li a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ color: var(--color-list);
+ padding: 4px 52px 4px 16px;
+ background: var(--color-block);
+ font-weight: 500;
+}
+article#tag .all-tags ul li a:hover {
+ background: #ff5722;
+ color: #fff;
+}
+article#tag .all-tags ul li span {
+ color: var(--color-meta);
+ background: var(--color-card);
+ padding: 2px 8px;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ pointer-events: none;
+ position: absolute;
+ right: 2px;
+ top: 2px;
+ height: calc(100% - 4px);
+}
+article#tag .all-tags ul li span:before {
+ content: 'x';
+}
+.article {
+ color: var(--color-p);
+ word-wrap: break-word;
+}
+.article a {
+ word-break: break-word;
+}
+.article h1.title,
+.article h2.title {
+ left: 0;
+}
+.article h1.title:before,
+.article h2.title:before {
+ content: none;
+}
+.article h1,
+.article h2 {
+ padding-bottom: 0.2rem;
+ margin-bottom: 1rem;
+ border-bottom: 1px solid rgba(68,68,68,0.1);
+}
+.article h1 {
+ text-align: left;
+ color: var(--color-h1);
+ margin-top: 48px;
+}
+.article h2 {
+ text-align: left;
+ color: var(--color-h2);
+ margin-top: 48px;
+}
+.article h3 {
+ text-align: left;
+ color: var(--color-h3);
+ margin-top: 24px;
+}
+.article h4 {
+ text-align: left;
+ color: var(--color-h4);
+ margin-top: 16px;
+}
+.article h5 {
+ font-weight: bold;
+ color: var(--color-h5);
+ margin-top: 1em;
+}
+.article h6 {
+ color: var(--color-h6);
+ margin-top: 1em;
+}
+.article center,
+.article center p {
+ text-align: center;
+}
+.article .aplayer {
+ margin: 1em 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ width: 400px;
+ max-width: 100%;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ color: #666;
+}
+.article p.small-img img,
+.article div.small-img img {
+ width: auto;
+ max-width: 100%;
+ margin: 0;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+.article s {
+ color: #8e8e8e;
+ text-decoration-color: #8e8e8e;
+}
+.article p {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ text-align: justify;
+ max-width: 100%;
+ line-height: inherit;
+}
+.article .subtitle h6 {
+ color: rgba(68,68,68,0.9);
+}
+.article figure figcaption span {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ margin-right: 5px;
+}
+.article blockquote {
+ background: var(--color-block);
+ border-left: 4px solid #3dd9b6;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.article blockquote {
+ position: relative;
+ width: 100%;
+ padding: 16px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.article blockquote,
+.article blockquote p,
+.article blockquote ul,
+.article blockquote ol {
+ text-align: left;
+ word-wrap: normal;
+ font-size: 0.9375rem;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+.article blockquote footer {
+ padding: 0;
+ text-align: justify;
+ color: inherit;
+ font-style: italic;
+ margin: 1em 0;
+}
+.article blockquote footer cite {
+ color: var(--color-meta);
+ margin-left: 1em;
+}
+.article blockquote footer cite::before {
+ content: '----';
+ padding: 0 0.3em;
+}
+.article blockquote.pullquote.right {
+ border-left: none;
+ border-right: 4px solid #3dd9b6;
+}
+.article blockquote.pullquote.right p {
+ text-align: right;
+}
+.article pre {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ overflow: auto;
+ background: var(--color-codeblock);
+ font-size: 0.8125rem;
+ font-family: Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+ border: 1px solid #ffebcb;
+ padding: 16px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.article pre >code:not([class]) {
+ background: transparent;
+}
+.article div>pre {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.article div>pre>code:not([class]) {
+ padding: 0;
+ margin: 0;
+ background: transparent;
+ color: rgba(68,68,68,0.9);
+}
+.article code {
+ font-family: Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+}
+.article code:not([class]) {
+ word-break: break-all;
+ color: var(--color-inlinecode);
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+@media screen and (max-width: 500px) {
+ .article ul,
+ .article ol {
+ font-size: 0.875rem;
+ }
+ .article figure {
+ font-size: 13px;
+ line-height: 1.5;
+ }
+}
+.article .widget {
+ background: transparent;
+ margin: 1em 0;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ cursor: auto;
+ background: var(--color-block);
+ padding: 8px 0;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ width: 100%;
+}
+.article .widget:hover {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+.article .widget:active {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+.article .widget header {
+ padding: 4px 0.6em;
+ padding-bottom: 0;
+}
+.article .widget header,
+.article .widget header a {
+ color: rgba(68,68,68,0.85);
+}
+.article .widget.copyright,
+.article .widget.qrcode {
+ background: none;
+ padding: 0;
+}
+.article .widget.copyright header,
+.article .widget.qrcode header {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+.article .widget.copyright .content,
+.article .widget.qrcode .content {
+ padding: 0;
+}
+.article .widget.list .content,
+.article .widget.related_posts .content {
+ padding: 0 0.6em !important;
+}
+.article .widget.list .content a,
+.article .widget.related_posts .content a {
+ color: #2092ec;
+}
+.article .widget.list .content a:hover,
+.article .widget.related_posts .content a:hover {
+ color: #ff5722;
+}
+.article .widget .content {
+ padding: 0 0.6em;
+ margin: 0;
+}
+.article .widget .content ul {
+ padding-left: 4px;
+ margin-left: 16px;
+}
+.article .widget .content ul a {
+ transition: all 0.1s ease;
+ -webkit-transition: all 0.1s ease;
+ -khtml-transition: all 0.1s ease;
+ -moz-transition: all 0.1s ease;
+ -o-transition: all 0.1s ease;
+ -ms-transition: all 0.1s ease;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ border-left: none;
+ padding: 0;
+ padding-left: 4px;
+ color: #2092ec;
+ font-weight: normal;
+ text-decoration: none;
+}
+.article .widget .content ul a:hover,
+.article .widget .content ul a.active,
+.article .widget .content ul a:active {
+ border-left: none !important;
+ background: none !important;
+}
+.article .widget .content ul a:hover {
+ color: #ff5722;
+}
+.article .widget .content .list a .name {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ color: #2092ec;
+}
+.article .widget .content .list a:hover .name {
+ color: #ff5722;
+}
+.article .widget.qrcode > .content {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ padding-left: 16px;
+ padding-right: 16px;
+ margin-bottom: 4px;
+}
+.article .widget.qrcode > .content>.fancybox,
+.article .widget.qrcode > .content>img {
+ margin: 0 8px;
+}
+.article .widget.qrcode > .content img {
+ margin-bottom: 4px;
+}
+.article .article_footer {
+ margin-top: 64px;
+}
+.article .widget-blur {
+ backdrop-filter: none;
+}
+.md .footer {
+ margin-top: 64px;
+}
+.md .footer >div {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.md .footer .header {
+ line-height: 1.75;
+ padding-bottom: 8px;
+ font-weight: 500;
+ font-size: 0.875rem;
+ color: var(--color-list);
+}
+.md .footer .header i {
+ margin-right: 2px;
+}
+.md .footer .body ul,
+.md .footer .body ol {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.md .footer .references,
+.md .footer .related_posts {
+ background: var(--color-block);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ padding: 16px;
+}
+.md .footer .references .body a {
+ font-size: 0.9375rem;
+ font-weight: 500;
+}
+.md .footer .related_posts .body {
+ margin: 4px;
+ overflow: hidden;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+.md .footer .related_posts .body .vlts-rps {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+}
+.md .footer .related_posts .body .vlts-rps .item {
+ flex-shrink: 0;
+ width: 240px;
+}
+.md .footer .related_posts .body .vlts-rps .item+.item {
+ margin-left: 16px;
+}
+.md .footer .related_posts .body .vlts-rps .item:hover img {
+ filter: ;
+}
+.md .footer .related_posts .body .vlts-rps img {
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ width: 100%;
+ height: 120px;
+ object-fit: cover;
+ filter: ;
+}
+.md .footer .related_posts .body .vlts-rps span {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: justify;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.md .footer .related_posts .body .vlts-rps .title {
+ font-weight: 600;
+ -webkit-line-clamp: 1;
+}
+.md .footer .related_posts .body .vlts-rps .excerpt {
+ font-size: 0.875rem;
+ color: var(--color-meta);
+ -webkit-line-clamp: 3;
+}
+.md .footer .copyright blockquote p {
+ font-size: 0.875rem;
+ margin: 0.25em 0;
+}
+.md .footer .copyright blockquote p a {
+ font-weight: 500;
+}
+.md .footer .donate {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ margin: 0 auto;
+}
+.md .footer .donate .imgs {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-inline-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-inline-flex /* NEW - Chrome */;
+ display: inline-flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: inline-flex;
+ margin: 0 auto;
+}
+.md .footer .donate .imgs .fancybox {
+ margin: 8px;
+}
+.md .footer .donate .imgs img {
+ width: 80px;
+}
+article .readmore {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin-top: 24px;
+ font-size: 0.875rem;
+}
+.copyright.license {
+ background: var(--color-copyright-bkg);
+ color: var(--color-meta);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ font-size: 0.95rem;
+ line-height: 1.2;
+ margin: 15px -40px;
+ overflow: hidden;
+ padding: 1.25em 40px;
+ position: relative;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.copyright.license:after {
+ background: url("data:image/svg+xml;charset=utf-8,%3Csvg version='1.1' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 367.467 367.467' style='enable-background:new 0 0 367.467 367.467;' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M183.73,0.018C82.427,0.018,0,82.404,0,183.733c0,101.289,82.427,183.716,183.73,183.716 c101.315,0,183.737-82.427,183.737-183.716C367.467,82.404,285.045,0.018,183.73,0.018z M183.73,326.518 c-78.743,0-142.798-64.052-142.798-142.784c0-78.766,64.055-142.817,142.798-142.817c78.752,0,142.807,64.052,142.807,142.817 C326.536,262.466,262.481,326.518,183.73,326.518z'/%3E%3Cpath d='M244.036,217.014c-11.737,20.141-33.562,32.635-56.956,32.635c-36.329,0-65.921-29.585-65.921-65.915 c0-36.36,29.592-65.955,65.921-65.955c23.395,0,45.219,12.54,56.956,32.641l1.517,2.627h44.28l-2.658-7.129 c-7.705-20.413-21.225-37.769-39.122-50.157c-17.942-12.42-39.017-19.009-60.973-19.009c-58.981,0-106.946,48.006-106.946,106.982 c0,58.98,47.965,106.941,106.946,106.941c21.956,0,43.03-6.567,60.973-19.006c17.897-12.391,31.417-29.741,39.122-50.154 l2.658-7.133h-44.28L244.036,217.014z'/%3E%3C/g%3E%3C/svg%3E");
+ content: " ";
+ opacity: 0.1;
+ -webkit-opacity: 0.1;
+ -moz-opacity: 0.1;
+ height: 180px;
+ right: -10px;
+ top: -35px;
+ width: 180px;
+ position: absolute;
+}
+.copyright.license a {
+ color: var(--color-meta);
+}
+.copyright.license a:hover {
+ color: #ff5722;
+}
+.copyright.license .license-title,
+.copyright.license .license-meta-title {
+ margin: 0 0 0.25rem;
+}
+.copyright.license .license-link,
+.copyright.license .license-meta-title {
+ font-size: 0.8rem;
+}
+.copyright.license .license-title {
+ font-weight: 700;
+}
+.copyright.license .license-link {
+ margin-bottom: 1rem;
+}
+.copyright.license .license-meta {
+ align-items: center;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+}
+.copyright.license .license-meta-item {
+ margin: 0 2rem 1em 0;
+}
+.copyright.license .license-meta-text {
+ margin: 0;
+}
+.copyright.license .license-meta-text a {
+ border-bottom: 1px solid var(--color-meta);
+}
+.copyright.license .license-meta-text a:hover {
+ border-bottom-color: #ff5722;
+}
+footer.footer {
+ position: relative;
+ padding: 40px 10px 120px 10px;
+ width: 100%;
+ color: var(--color-site-footer);
+ margin: 0px auto;
+ overflow: hidden;
+ text-align: center;
+}
+footer.footer,
+footer.footer p {
+ font-size: 0.8125rem;
+}
+footer.footer .licenses {
+ color: fade(, 50%);
+}
+footer.footer .social-wrapper {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ margin: 4px 8px;
+}
+footer.footer a {
+ color: var(--color-site-footer);
+ padding: 0;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+footer.footer a:hover {
+ color: #ff5722;
+}
+footer.footer a:not(.social):hover {
+ text-decoration: underline;
+}
+footer.footer a.social {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ text-align: center;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+ min-width: 36px;
+ min-height: 36px;
+ margin: 4px;
+ opacity: 0.75;
+ -webkit-opacity: 0.75;
+ -moz-opacity: 0.75;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ font-size: 1rem;
+}
+footer.footer a.social img {
+ margin: 8px;
+ height: 24px;
+}
+footer.footer a.social:hover {
+ color: #ff5722;
+ background: rgba(255,87,34,0.1);
+}
+footer.footer .copyright {
+ margin-top: 16px;
+}
+footer.footer .copyright p {
+ font-size: 0.78125rem;
+}
+@media screen and (max-width: 768px) {
+ footer.footer {
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ }
+}
+.article.l_friends .friends-group .friend-content {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ margin: -8px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ align-items: flex-start;
+ line-height: 1.3;
+}
+.article.l_friends .friends-group .friend-content .friend-card {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ padding: 8px 0;
+ margin: 8px;
+ margin-top: calc(2.25 * 16px + 32px);
+ color: var(--color-meta);
+ background: var(--color-block);
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ align-content: flex-start;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ width: calc(100%/4 - 16px);
+}
+@media screen and (max-width: 1024px) {
+ .article.l_friends .friends-group .friend-content .friend-card {
+ width: calc(100%/4 - 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ .article.l_friends .friends-group .friend-content .friend-card {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .article.l_friends .friends-group .friend-content .friend-card {
+ width: calc(100%/2 - 16px);
+ }
+}
+.article.l_friends .friends-group .friend-content .friend-card:hover .friend-left .avatar {
+ transform: scale(1.2) rotate(12deg);
+ -webkit-transform: scale(1.2) rotate(12deg);
+ -khtml-transform: scale(1.2) rotate(12deg);
+ -moz-transform: scale(1.2) rotate(12deg);
+ -o-transform: scale(1.2) rotate(12deg);
+ -ms-transform: scale(1.2) rotate(12deg);
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-left {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-self: center;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-left .avatar {
+ width: 64px;
+ height: 64px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ margin: 16px 8px 4px 8px;
+ margin-top: calc(-1.25 * 16px - 32px);
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ border: 2px solid #fff;
+ background: #fff;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right {
+ margin: 4px 8px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ text-align: center;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right p {
+ text-align: center;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right .friend-tags-wrapper {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ margin-left: -2px;
+ word-break: break-all;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right p {
+ margin: 0;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right p.friend-name {
+ font-size: 0.8125rem;
+ padding-top: 4px;
+ font-weight: bold;
+}
+.article.l_friends .friends-group .friend-content .friend-card .friend-right p.tags {
+ font-size: 0.78125rem;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ background: none;
+ word-wrap: break-word;
+ padding-right: 4px;
+}
+.md img {
+ position: relative;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+@media screen and (max-width: 500px) {
+ .md img {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ }
+}
+.md div>img,
+.md p>img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin: auto;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+@media screen and (max-width: 500px) {
+ .md div>img,
+ .md p>img {
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ }
+}
+.md span img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ margin: auto;
+}
+.md .img-wrap {
+ margin: 1.5rem auto;
+ text-align: center;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ overflow: hidden;
+}
+.md .img-wrap .img-bg {
+ width: 100%;
+}
+.md .img-wrap .image-caption {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin: 0.75rem auto;
+ font-size: 0.8125rem;
+ color: var(--color-meta);
+}
+.md .img-wrap .image-caption:empty {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+svg.loading {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: absolute;
+ color: var(--text-p3);
+ width: 100%;
+ height: 2rem;
+ margin: auto;
+ animation: spin infinite 2s;
+ -webkit-animation: spin infinite 2s;
+ -khtml-animation: spin infinite 2s;
+ -moz-animation: spin infinite 2s;
+ -o-animation: spin infinite 2s;
+ -ms-animation: spin infinite 2s;
+ animation-timing-function: linear;
+}
+@-moz-keyframes spin {
+ from {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -khtml-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@-webkit-keyframes spin {
+ from {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -khtml-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@-o-keyframes spin {
+ from {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -khtml-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+@keyframes spin {
+ from {
+ transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -khtml-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ -webkit-transform: rotate(360deg);
+ -khtml-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ }
+}
+#safearea {
+ margin: 16px 16px 0;
+}
+#l_body {
+ position: relative;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+#l_body div.loading {
+ margin: 16px 0;
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+#l_body div.loading,
+#l_body div.loading p {
+ text-align: center;
+}
+#l_body #s-top {
+ transition: all 0.6s ease;
+ -webkit-transition: all 0.6s ease;
+ -khtml-transition: all 0.6s ease;
+ -moz-transition: all 0.6s ease;
+ -o-transition: all 0.6s ease;
+ -ms-transition: all 0.6s ease;
+ z-index: 9;
+ position: fixed;
+ width: 48px;
+ height: 48px;
+ line-height: 48px;
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ bottom: 32px;
+ right: 32px;
+ transform: translateY(100px) scale(0);
+ -webkit-transform: translateY(100px) scale(0);
+ -khtml-transform: translateY(100px) scale(0);
+ -moz-transform: translateY(100px) scale(0);
+ -o-transform: translateY(100px) scale(0);
+ -ms-transform: translateY(100px) scale(0);
+ transform-origin: bottom;
+ -webkit-transform-origin: bottom;
+ -khtml-transform-origin: bottom;
+ -moz-transform-origin: bottom;
+ -o-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ color: var(--color-text);
+}
+@media screen and (max-width: 768px) {
+ #l_body #s-top {
+ right: 16px;
+ }
+}
+#l_body #s-top.show {
+ transform: translateY(0) scale(1);
+ -webkit-transform: translateY(0) scale(1);
+ -khtml-transform: translateY(0) scale(1);
+ -moz-transform: translateY(0) scale(1);
+ -o-transform: translateY(0) scale(1);
+ -ms-transform: translateY(0) scale(1);
+}
+#l_body #s-top.show.hl {
+ background: #3dd9b6;
+ color: #fff;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+}
+@media screen and (min-width: 768px) {
+ #l_body #s-top:hover {
+ transform: scale(1.2);
+ -webkit-transform: scale(1.2);
+ -khtml-transform: scale(1.2);
+ -moz-transform: scale(1.2);
+ -o-transform: scale(1.2);
+ -ms-transform: scale(1.2);
+ border-radius: 25%;
+ -webkit-border-radius: 25%;
+ background: #3dd9b6;
+ color: #fff;
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ }
+ #l_body #s-top:hover.hl {
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ }
+}
+#l_main {
+ width: calc(100% - 1 * 240px);
+ padding-right: 16px;
+ float: left;
+}
+@media screen and (max-width: 768px) {
+ #l_main {
+ width: 100%;
+ }
+}
+#l_main.no_sidebar {
+ width: 100%;
+ padding-right: 0;
+ max-width: 840px;
+ margin: auto;
+}
+@media screen and (min-width: 2048px) {
+ #l_main.no_sidebar {
+ max-width: calc(55vw - 240px);
+ }
+}
+#l_main.no_sidebar ~#l_side {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+#l_main .post-list {
+ position: relative;
+ margin-bottom: 16px;
+ column-gap: 16px;
+ -webkit-column-gap: 16px;
+ -moz-column-gap: 16px;
+}
+#l_main .post-list.multiple-columns {
+ columns: 320px;
+}
+#l_main .post-wrapper {
+ column-break-inside: avoid;
+ break-inside: avoid-column;
+}
+#l_main .widget .content p,
+#l_main .widget .content ul,
+#l_main .widget .content ol,
+#l_main .widget .content table,
+#l_main .widget .content .tabs,
+#l_main .widget .content details {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+#l_main .widget .content .post {
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+#l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/8 - 0 * 16px);
+}
+@media screen and (max-width: 1024px) {
+ #l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/7 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ #l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/6 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ #l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/5 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 425px) {
+ #l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/4 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 375px) {
+ #l_main .widget.grid .content .grid.fixed a {
+ width: calc(100%/3 - 0 * 16px);
+ }
+}
+#l_main .post {
+ position: relative;
+ margin-bottom: 16px;
+ padding: 24px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+#l_main .post h1.title {
+ font-size: 1.5rem;
+ margin: 0;
+ border-bottom: none;
+ padding-bottom: 4px;
+ border-bottom: none;
+}
+#l_main .post .article-meta {
+ color: var(--color-meta);
+ margin-bottom: 16px;
+ line-height: normal;
+}
+#l_main .post .article-meta#top {
+ margin-top: 16px;
+ margin-bottom: 32px;
+}
+#l_main .post .article-meta#bottom {
+ margin-top: 32px;
+ margin-bottom: 8px;
+}
+#l_main .post .article-meta .aplayer,
+#l_main .post .article-meta .aplayer-pic,
+#l_main .post .article-meta .thumbnail {
+ width: 48px;
+ height: 48px;
+}
+#l_main .post .article-meta .aplayer,
+#l_main .post .article-meta .thumbnail {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ float: right;
+ margin: 2px;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+}
+#l_main .post .article-meta .aplayer:hover,
+#l_main .post .article-meta .thumbnail:hover {
+ border-radius: 25%;
+ -webkit-border-radius: 25%;
+ transform: scale(1.1);
+ -webkit-transform: scale(1.1);
+ -khtml-transform: scale(1.1);
+ -moz-transform: scale(1.1);
+ -o-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+@media screen and (max-width: 500px) {
+ #l_main .post .article-meta .aplayer:hover,
+ #l_main .post .article-meta .thumbnail:hover {
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ transform: scale(1);
+ -webkit-transform: scale(1);
+ -khtml-transform: scale(1);
+ -moz-transform: scale(1);
+ -o-transform: scale(1);
+ -ms-transform: scale(1);
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ }
+}
+#l_main .post .article-meta .thumbnail {
+ width: auto;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+#l_main .post .article-meta .thumbnail:hover {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ transform: scale(1.1) rotate(4deg);
+ -webkit-transform: scale(1.1) rotate(4deg);
+ -khtml-transform: scale(1.1) rotate(4deg);
+ -moz-transform: scale(1.1) rotate(4deg);
+ -o-transform: scale(1.1) rotate(4deg);
+ -ms-transform: scale(1.1) rotate(4deg);
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+#l_main .post .article-meta .new-meta-box {
+ transition: all 0.1s ease;
+ -webkit-transition: all 0.1s ease;
+ -khtml-transition: all 0.1s ease;
+ -moz-transition: all 0.1s ease;
+ -o-transition: all 0.1s ease;
+ -ms-transition: all 0.1s ease;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -webkit-font-smoothing: auto;
+ -moz-osx-font-smoothing: auto;
+}
+#l_main .post .article-meta .new-meta-box,
+#l_main .post .article-meta .new-meta-box p,
+#l_main .post .article-meta .new-meta-box i {
+ font-size: 0.8125rem;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item {
+ color: var(--color-meta);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: baseline;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ margin: 0 16px 0 0;
+ padding: 8px 0;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item .notlink {
+ cursor: default;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item .notlink:hover {
+ color: var(--color-meta);
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item .notlink:hover p {
+ color: var(--color-meta);
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item:last-child {
+ margin-right: 0;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item img,
+#l_main .post .article-meta .new-meta-box .new-meta-item i {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item i {
+ margin-right: 4px;
+ border-radius: 0;
+ -webkit-border-radius: 0;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item i.fa-hashtag {
+ margin-right: 2px;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item p,
+#l_main .post .article-meta .new-meta-box .new-meta-item a {
+ color: var(--color-meta);
+ padding: 3px 0;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item a img {
+ height: 16px;
+ width: 16px;
+ margin-right: 8px;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item a p {
+ margin: 0;
+ font-weight: normal;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item a:hover {
+ color: #ff5722;
+}
+#l_main .post .article-meta .new-meta-box .new-meta-item a:hover p {
+ color: #ff5722;
+}
+#l_main .post .article-meta .new-meta-box .author img,
+#l_main .post .article-meta .new-meta-box .author i {
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+}
+#l_main .post .article-meta .new-meta-box .author img {
+ transform: translateY(-0.5px);
+ -webkit-transform: translateY(-0.5px);
+ -khtml-transform: translateY(-0.5px);
+ -moz-transform: translateY(-0.5px);
+ -o-transform: translateY(-0.5px);
+ -ms-transform: translateY(-0.5px);
+}
+@media screen and (max-width: 500px) {
+ #l_main .post .article-meta .new-meta-box .share {
+ width: 100%;
+ margin-top: 16px;
+ background: var(--color-block);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ }
+}
+#l_main .post .article-meta .new-meta-box .share-body {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ margin: 0;
+ padding: 0 2px;
+}
+#l_main .post .article-meta .new-meta-box .share-body a {
+ padding: 0;
+ margin: 0 1px;
+}
+#l_main .post .article-meta .new-meta-box .share-body a img {
+ margin: 2px;
+ height: 24px;
+ width: auto;
+ background: transparent;
+}
+@media screen and (max-width: 500px) {
+ #l_main .post .article-meta .new-meta-box .share-body a img {
+ height: 32px;
+ margin: 8px;
+ }
+}
+#l_main .post .article-meta .new-meta-box .share-body div.hoverbox div.target {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ position: absolute;
+ background: var(--color-card);
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ padding: 8px;
+ left: 50%;
+ top: -20px;
+ transform: translate(-50%, -100%);
+ -webkit-transform: translate(-50%, -100%);
+ -khtml-transform: translate(-50%, -100%);
+ -moz-transform: translate(-50%, -100%);
+ -o-transform: translate(-50%, -100%);
+ -ms-transform: translate(-50%, -100%);
+}
+#l_main .post .article-meta .new-meta-box .share-body div.hoverbox div.target img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin: 0;
+ padding: 0;
+ height: 128px;
+ width: 128px;
+ min-width: 128px;
+}
+#l_main .post .article-meta .new-meta-box .share-body div.hoverbox:hover div.target {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+}
+@media screen and (max-width: 500px) {
+ #l_main .post .article-meta .new-meta-box .share-body div.hoverbox div.target {
+ position: absolute;
+ }
+}
+#l_main .post span>img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+#l_main .post a img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+}
+@media screen and (max-width: 768px) {
+ #l_main {
+ padding-right: 0;
+ }
+}
+@media screen and (max-width: 768px) and (max-width: 500px) {
+ #l_main {
+ width: 100%;
+ }
+}
+.body-wrapper {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ width: 100%;
+ max-width: 1080px;
+ margin: 0 auto;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ align-items: stretch;
+}
+@media screen and (min-width: 2048px) {
+ .body-wrapper {
+ max-width: 55vw;
+ }
+}
+article#comments p[ct] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ font-size: 1.125rem;
+ color: var(--color-text);
+ font-weight: 600;
+}
+article#comments p[cst] {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ font-size: 0.875rem;
+}
+article#comments #load-btns,
+article#comments #loading-comments {
+ text-align: center;
+ margin: 16px 0;
+}
+article#comments #load-btns,
+article#comments #loading-comments,
+article#comments #load-btns a,
+article#comments #loading-comments a,
+article#comments #load-btns i,
+article#comments #loading-comments i {
+ line-height: 3em;
+}
+article#comments #load-btns a.load-comments,
+article#comments #loading-comments a.load-comments {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ cursor: pointer;
+ background: #44d7b6;
+ color: #fff;
+ padding-left: 48px;
+ padding-right: 48px;
+}
+article#comments #load-btns a.load-comments:hover,
+article#comments #loading-comments a.load-comments:hover {
+ background: #ff5722;
+}
+.white-box {
+ background: var(--color-card);
+}
+img {
+ max-width: 100%;
+}
+img.lazyload:not(.placeholder) {
+ transition: opacity 0.5s ease-out 0s;
+ -webkit-transition: opacity 0.5s ease-out 0s;
+ -khtml-transition: opacity 0.5s ease-out 0s;
+ -moz-transition: opacity 0.5s ease-out 0s;
+ -o-transition: opacity 0.5s ease-out 0s;
+ -ms-transition: opacity 0.5s ease-out 0s;
+ transition: filter 0.25s ease-out 0s;
+ -webkit-transition: filter 0.25s ease-out 0s;
+ -khtml-transition: filter 0.25s ease-out 0s;
+ -moz-transition: filter 0.25s ease-out 0s;
+ -o-transition: filter 0.25s ease-out 0s;
+ -ms-transition: filter 0.25s ease-out 0s;
+}
+img.lazyload:not(.placeholder):not(.loaded) {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+}
+img.lazyload:not(.placeholder).loaded {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+}
+img.lazyload:not(.placeholder):not(.loaded) {
+ filter: blur(8px);
+}
+img.lazyload:not(.placeholder).loaded {
+ filter: none;
+}
+.md >p {
+ padding-top: 4px;
+}
+.md h1,
+.md h2,
+.md h3,
+.md h4,
+.md h5,
+.md h6 {
+ position: relative;
+ pointer-events: none;
+ margin-top: 0;
+ font-weight: 500;
+}
+.md h1 >a,
+.md h2 >a,
+.md h3 >a,
+.md h4 >a,
+.md h5 >a,
+.md h6 >a {
+ color: inherit;
+ pointer-events: auto;
+}
+.md h1 >a:hover,
+.md h2 >a:hover,
+.md h3 >a:hover,
+.md h4 >a:hover,
+.md h5 >a:hover,
+.md h6 >a:hover {
+ color: #ff5722;
+}
+.md h1:before,
+.md h2:before,
+.md h3:before,
+.md h4:before,
+.md h5:before,
+.md h6:before {
+ content: '';
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin-top: -48px;
+ height: 96px;
+ visibility: hidden;
+ pointer-events: none;
+}
+.md h1:before,
+.md h2:before {
+ margin-top: -32px;
+}
+.md .article-meta+h1,
+.md .article-meta+h2 {
+ margin-top: -80px;
+}
+.md h3,
+.md h4,
+.md h5,
+.md h6 {
+ margin-bottom: 1em;
+}
+.md h3:before {
+ margin-top: -56px;
+}
+.md h4:before {
+ margin-top: -64px;
+}
+.md h5 {
+ font-weight: bold;
+}
+.md h2+h3:before {
+ margin-top: -80px;
+}
+.md ul,
+.md ol {
+ font-size: 0.9375rem;
+ list-style: initial;
+ padding-left: 8px;
+ margin-left: 16px;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.md ul ul,
+.md ol ul,
+.md ul ol,
+.md ol ol {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.md ul li,
+.md ol li {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+.md ul li li,
+.md ol li li {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.md ul li p,
+.md ol li p {
+ margin-top: 4px;
+ margin-bottom: 0;
+}
+.md ul.task-list,
+.md ol.task-list {
+ padding-left: 0;
+ margin-left: 4px;
+}
+.md ul.task-list li,
+.md ol.task-list li {
+ list-style: none;
+}
+.md ul.task-list li input,
+.md ol.task-list li input {
+ margin-right: 4px;
+}
+.md ul>li {
+ list-style: initial;
+}
+.md ol>li {
+ list-style: decimal;
+}
+.md .div-ori-link {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: center;
+ margin: 4rem 0;
+}
+.md .ori-link {
+ margin: auto;
+ padding: 1em 3em;
+ border: 1px solid #3dd9b6;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ color: #3dd9b6;
+ font-weight: 500;
+}
+.md .ori-link:hover {
+ color: #ff5722;
+ border-color: #ff5722;
+}
+#l_main .prev-next {
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ align-items: baseline;
+ color: var(--color-meta);
+ margin: 0;
+ font-weight: 600;
+}
+#l_main .prev-next .prev {
+ text-align: left;
+ border-top-right-radius: 32px;
+ border-bottom-right-radius: 32px;
+}
+#l_main .prev-next .next {
+ text-align: right;
+ border-top-left-radius: 32px;
+ border-bottom-left-radius: 32px;
+}
+#l_main .prev-next p {
+ margin: 16px;
+}
+#l_main .prev-next section {
+ color: var(--color-meta);
+ padding: 16px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+#l_main .prev-next section:hover {
+ color: #ff5722;
+}
+#l_main .article .prev-next {
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ align-content: flex-start;
+ margin-top: 8px;
+}
+#l_main .article .prev-next >a {
+ width: 100%;
+ padding: 8px;
+ color: var(--color-meta);
+ background: var(--color-block);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+#l_main .article .prev-next >a:hover {
+ background: #ffeee8;
+}
+#l_main .article .prev-next >a:hover p.title {
+ color: #ff5722;
+}
+#l_main .article .prev-next >a p {
+ margin: 8px 0.5rem;
+}
+#l_main .article .prev-next >a p.title {
+ font-weight: 600;
+ font-size: 1rem;
+}
+#l_main .article .prev-next >a p.title >i {
+ width: 1rem;
+}
+#l_main .article .prev-next >a p.content {
+ font-size: 0.875rem;
+ font-weight: 400;
+ text-align: justify;
+ word-break: break-all;
+}
+#l_main .article .prev-next >a:only-child {
+ margin-left: 0;
+ margin-right: 0;
+}
+#l_main .article .prev-next .prev {
+ margin-left: 0;
+ margin-right: 8px;
+}
+#l_main .article .prev-next .prev p.title {
+ text-align: left;
+}
+#l_main .article .prev-next .next {
+ margin-left: 8px;
+ margin-right: 0;
+}
+#l_main .article .prev-next .next p.title {
+ text-align: right;
+}
+.article-title {
+ font-weight: 500;
+ margin-bottom: 12px;
+ line-height: 1.4;
+}
+.article-title a {
+ color: var(--color-h1);
+}
+.article-title a:hover {
+ color: #ff5722;
+}
+.article-title[pin] {
+ margin-right: 36px;
+}
+.article-desc {
+ word-break: break-word;
+}
+.post-v3 {
+ overflow: hidden;
+ text-align: justify;
+}
+.post-v3 .md {
+ color: var(--color-p);
+}
+.post-v3 .pin {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ border-radius: 20px;
+ -webkit-border-radius: 20px;
+ right: 24px;
+ top: 24px;
+ z-index: 1;
+ pointer-events: none;
+}
+.meta-v3[line_style='solid'] {
+ border-top: 1px solid rgba(68,68,68,0.1);
+}
+.meta-v3[line_style='dashed'] {
+ border-top: 2px dashed rgba(68,68,68,0.1);
+}
+.meta-v3[line_style='dotted'] {
+ border-top: 4px dotted rgba(68,68,68,0.1);
+}
+.meta-v3 {
+ margin-top: 16px;
+ padding-top: 12px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ color: var(--color-meta);
+}
+.meta-v3 >div {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: center;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+.meta-v3 time {
+ font-size: 0.875rem;
+}
+.meta-v3 .category-link {
+ font-size: 0.875rem;
+ color: var(--color-meta);
+ -webkit-font-smoothing: auto;
+ -moz-osx-font-smoothing: auto;
+}
+.meta-v3 .category-link:hover {
+ color: #ff5722;
+}
+.meta-v3 .readmore {
+ font-weight: bold;
+}
+.meta-v3 .avatar {
+ line-height: 0;
+ margin-right: 0.75em;
+}
+.meta-v3 .avatar img {
+ width: 24px;
+ height: 24px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ border-radius: 12px;
+ -webkit-border-radius: 12px;
+ object-fit: cover;
+}
+.headimg-div {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin-left: -24px;
+ margin-top: -24px;
+ margin-bottom: 20px;
+ width: calc(100% + 3 * 16px);
+}
+.headimg-div .headimg-a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ overflow: hidden;
+ height: 280px;
+}
+@media screen and (max-width: 768px) {
+ .headimg-div .headimg-a {
+ height: 250px;
+ }
+}
+@media screen and (max-width: 500px) {
+ .headimg-div .headimg-a {
+ height: 220px;
+ }
+}
+@media screen and (max-width: 425px) {
+ .headimg-div .headimg-a {
+ height: 190px;
+ }
+}
+.headimg-div .headimg {
+ object-fit: cover;
+ width: 100%;
+ height: 100%;
+ transition: transform 3s ease-out;
+ -webkit-transition: transform 3s ease-out;
+ -khtml-transition: transform 3s ease-out;
+ -moz-transition: transform 3s ease-out;
+ -o-transition: transform 3s ease-out;
+ -ms-transition: transform 3s ease-out;
+}
+.headimg-div .headimg:hover {
+ transform: scale(1.1);
+ -webkit-transform: scale(1.1);
+ -khtml-transform: scale(1.1);
+ -moz-transform: scale(1.1);
+ -o-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+}
+.headimg-div .headimg.lazyload:not(.placeholder) {
+ transition: transform 3s ease-out, opacity 0.5s ease-out;
+ -webkit-transition: transform 3s ease-out, opacity 0.5s ease-out;
+ -khtml-transition: transform 3s ease-out, opacity 0.5s ease-out;
+ -moz-transition: transform 3s ease-out, opacity 0.5s ease-out;
+ -o-transition: transform 3s ease-out, opacity 0.5s ease-out;
+ -ms-transition: transform 3s ease-out, opacity 0.5s ease-out;
+}
+.headimg-div .headimg.lazyload:not(.placeholder):not(.loaded) {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+}
+.headimg-div .headimg.lazyload:not(.placeholder).loaded {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+}
+#u-search .modal {
+ position: fixed;
+ height: 80%;
+ width: 100%;
+ max-width: 640px;
+ left: 50%;
+ top: 0;
+ margin: 64px 0px 0px -320px;
+ background: var(--color-card);
+ z-index: 3;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ overflow: hidden;
+}
+@media screen and (max-width: 680px) {
+ #u-search .modal {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ max-width: none;
+ top: 0;
+ left: 0;
+ margin: 0;
+ height: 100%;
+ border-radius: 0;
+ -webkit-border-radius: 0;
+ }
+}
+#u-search .modal .modal-header {
+ position: relative;
+ width: 100%;
+ height: 64px;
+ z-index: 3;
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+ font-size: $fontsize;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ background: #fff;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+@media screen and (max-width: 680px) {
+ #u-search .modal .modal-header {
+ border-radius: 0;
+ -webkit-border-radius: 0;
+ padding: 0px;
+ }
+}
+#u-search .modal .modal-header .btn-close {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: absolute;
+ width: 55px;
+ height: 64px;
+ top: 0;
+ right: 0;
+ color: #3dd9b6;
+ cursor: pointer;
+ text-align: center;
+ line-height: 64px;
+ vertical-align: middle;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ z-index: 2;
+}
+#u-search .modal .modal-header .btn-close:hover {
+ transform: rotate(90deg);
+ -webkit-transform: rotate(90deg);
+ -khtml-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+}
+#u-search .modal .modal-header #u-search-modal-form {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ z-index: 2;
+}
+#u-search .modal .modal-header #u-search-modal-form input {
+ color: var(--color-text);
+}
+#u-search .modal .modal-header #u-search-modal-form #u-search-modal-input {
+ margin: 16px 50px;
+ padding: 0 8px;
+ width: calc(100% - 100px - 16px);
+ line-height: 2rem;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ vertical-align: middle;
+ border: none;
+ appearance: none;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ background: transparent;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+@media screen and (max-width: 680px) {
+ #u-search .modal .modal-header #u-search-modal-form #u-search-modal-input {
+ padding: 0;
+ }
+}
+#u-search .modal .modal-header #u-search-modal-form #u-search-modal-input:focus {
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+}
+#u-search .modal .modal-header #u-search-modal-btn-submit {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding-left: 5px;
+ padding-top: 2px;
+ background: transparent;
+ border: none;
+ width: 50px;
+ height: 64px;
+ vertical-align: middle;
+ color: #3dd9b6;
+ z-index: 2;
+}
+#u-search .modal .modal-body {
+ position: absolute;
+ padding: 16px;
+ width: 100%;
+ height: calc(100% - 64px);
+ top: 64px;
+ left: 0;
+ overflow-y: scroll;
+ -webkit-overflow-scrolling: touch;
+ background: var(--color-card);
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+#u-search .modal .modal-body::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+#u-search .modal .modal-body::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+#u-search .modal .modal-body::-webkit-scrollbar-thumb {
+ background: #3dd9b6;
+ cursor: pointer;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+#u-search .modal .modal-body::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+}
+#u-search .modal .modal-body .modal-results {
+ list-style: none;
+}
+#u-search .modal .modal-body .modal-results .result {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding: 16px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+#u-search .modal .modal-body .modal-results .result b[mark] {
+ color: #25be9c;
+ text-decoration: underline;
+}
+#u-search .modal .modal-body .modal-results .result:hover {
+ background: var(--color-site-bg);
+}
+#u-search .modal .modal-body .modal-results .result:hover .title {
+ color: var(--color-list-hl);
+}
+#u-search .modal .modal-body .modal-results .result .title {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ max-width: 100%;
+ color: var(--color-list);
+ font-weight: bold;
+ padding: 1px;
+ margin-bottom: 2px;
+ white-space: normal;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-size: 1.125rem;
+}
+#u-search .modal .modal-body .modal-results .result .digest {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ white-space: inherit;
+ overflow: hidden;
+ word-break: break-all;
+ text-overflow: ellipsis;
+ font-size: 0.8125rem;
+ color: var(--color-meta);
+}
+#u-search .modal .modal-body .modal-results .result .icon {
+ position: absolute;
+ top: 50%;
+ right: 0;
+ margin-top: -4px;
+ font-size: 11px;
+ color: var(--color-meta);
+}
+#u-search .modal-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0,0,0,0.7);
+ z-index: 1;
+}
+#l_side {
+ width: 240px;
+ float: right;
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+@media screen and (max-width: 768px) {
+ #l_side {
+ width: 100%;
+ }
+}
+#l_side .widget {
+ overflow: hidden;
+}
+#l_side .widget.sticky {
+ position: sticky;
+ top: 80px;
+ z-index: 1;
+}
+#l_side .widget >.content {
+ max-height: 200vh;
+ overflow: auto;
+ text-align: justify;
+ font-size: 0.875rem;
+ max-width: 100%;
+}
+@media screen and (max-width: 768px) {
+ #l_side .widget >.content {
+ max-height: none;
+ }
+}
+#l_side .widget >.content::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+#l_side .widget >.content::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+#l_side .widget >.content::-webkit-scrollbar-thumb {
+ background: #3dd9b6;
+ cursor: pointer;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+#l_side .widget >.content::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+}
+.widget {
+ z-index: 0;
+ background: var(--color-card);
+ margin-bottom: 16px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+.widget ul li,
+.widget ol li {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.widget.desktop {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+@media screen and (max-width: 768px) {
+ .widget {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none !important;
+ }
+ .widget.mobile {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block !important;
+ }
+}
+.widget header {
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+ padding: calc(16px - 2px);
+ font-weight: bold;
+ font-size: 0.875rem;
+ padding-bottom: 0;
+}
+.widget header,
+.widget header a {
+ color: var(--color-meta);
+}
+.widget header >a:hover {
+ color: #ff5722;
+}
+.widget header span.name {
+ margin-left: 8px;
+}
+.widget >.content {
+ padding: 8px 0;
+}
+.widget >.content p {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.widget >.content p:first-child {
+ margin-top: 0.5em;
+}
+.widget >.content ul>li a {
+ color: var(--color-meta);
+ padding: 0 16px;
+ padding-left: 12px;
+ line-height: 2;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ align-content: center;
+ border-left: 2px solid transparent;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.widget >.content ul.entry,
+.widget >.content ul.popular-posts {
+ list-style: none;
+}
+.widget >.content ul.entry a,
+.widget >.content ul.popular-posts a {
+ color: var(--color-list);
+}
+.widget >.content ul.entry a .name,
+.widget >.content ul.popular-posts a .name {
+ -webkit-box-flex: auto;
+ -moz-box-flex: auto;
+ -webkit-flex: auto 0;
+ -ms-flex: auto 0;
+ flex: auto 0;
+}
+.widget >.content ul.entry a .badge,
+.widget >.content ul.popular-posts a .badge {
+ -webkit-box-flex: none;
+ -moz-box-flex: none;
+ -webkit-flex: none 0;
+ -ms-flex: none 0;
+ flex: none 0;
+ font-weight: normal;
+ font-size: 0.875rem;
+ color: rgba(68,68,68,0.7);
+}
+.widget >.content ul.entry a.active,
+.widget >.content ul.popular-posts a.active {
+ border-left: 2px solid #3dd9b6;
+ color: var(--color-list-hl);
+}
+.widget >.content ul.entry a.active .badge,
+.widget >.content ul.popular-posts a.active .badge {
+ color: rgba(61,217,182,0.9);
+}
+.widget >.content ul.entry a.child,
+.widget >.content ul.popular-posts a.child {
+ padding-left: 32px;
+}
+.widget >.content ul.entry a:hover,
+.widget >.content ul.popular-posts a:hover {
+ border-left: 2px solid #3dd9b6;
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+}
+.widget.blogger {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.widget.blogger .content {
+ padding: 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: stretch;
+}
+.widget.blogger .content >.avatar {
+ align-self: center;
+ overflow: hidden;
+ position: relative;
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+ line-height: 0;
+}
+.widget.blogger .content >.avatar.circle {
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ width: 128px;
+ height: 128px;
+ margin-top: 32px;
+ margin-bottom: 1em;
+}
+.widget.blogger .content >.avatar.circle img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ -webkit-transform: translate(-50%, -50%);
+ -khtml-transform: translate(-50%, -50%);
+ -moz-transform: translate(-50%, -50%);
+ -o-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+}
+@media screen and (max-width: 768px) {
+ .widget.blogger .content >.avatar {
+ width: 80px;
+ height: 80px;
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+ border: 2px solid #fff;
+ }
+ .widget.blogger .content >.avatar img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ -webkit-transform: translate(-50%, -50%);
+ -khtml-transform: translate(-50%, -50%);
+ -moz-transform: translate(-50%, -50%);
+ -o-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ position: absolute;
+ }
+}
+.widget.blogger .content .text :first-child {
+ margin-top: 16px;
+}
+.widget.blogger .content h2 {
+ text-align: center;
+ font-weight: bold;
+ margin: 8px;
+}
+@media screen and (max-width: 768px) {
+ .widget.blogger .content h2 {
+ margin: 8px;
+ }
+}
+.widget.blogger .content p {
+ text-align: center;
+ font-weight: bold;
+ margin: 8px 8px 0 8px;
+ empty-cells: hide;
+}
+.widget.blogger .content .social-wrapper {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ margin: 4px 4px;
+}
+.widget.blogger .content .social-wrapper a {
+ color: var(--color-meta);
+ padding: 0;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.widget.blogger .content .social-wrapper a:hover {
+ color: #ff5722;
+}
+.widget.blogger .content .social-wrapper a.social {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+ width: 32px;
+ height: 32px;
+ margin: 4px;
+ border-radius: 100px;
+ -webkit-border-radius: 100px;
+}
+.widget.blogger .content .social-wrapper a.social:hover {
+ background: #ebfbf7;
+ color: #3dd9b6;
+}
+@media screen and (max-width: 768px) {
+ .widget.blogger .content .social-wrapper {
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+ }
+}
+@media screen and (max-width: 768px) {
+ .widget.blogger {
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ background: transparent !important;
+ margin-top: 32px;
+ backdrop-filter: none;
+ color: var(--color-site-inner);
+ }
+}
+.widget.text .content {
+ padding: 4px 16px;
+}
+.widget.text .content,
+.widget.text .content p {
+ font-size: 0.875rem;
+ word-break: break-all;
+}
+.widget.text .content a {
+ color: #2092ec;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.widget.text .content a:hover {
+ color: #ff5722;
+}
+.widget.text .content a:active {
+ color: #d93400;
+}
+.widget.list .content {
+ padding: 8px 0;
+}
+.widget.list .content a {
+ font-size: 0.875rem;
+ font-weight: bold;
+ line-height: 1.5;
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+.widget.list .content a img,
+.widget.list .content a i {
+ margin-right: 4px;
+}
+.widget.list .content a i {
+ margin-left: 1px;
+}
+.widget.list .content a img {
+ vertical-align: middle;
+ height: 20px;
+ width: 20px;
+ margin-bottom: 4px;
+}
+.widget.list .content a img#round {
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+}
+.widget.grid .content .grid {
+ border: none;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: space-around;
+ -webkit-justify-content: space-around;
+ -khtml-justify-content: space-around;
+ -moz-justify-content: space-around;
+ -o-justify-content: space-around;
+ -ms-justify-content: space-around;
+ padding: 4px 16px;
+}
+.widget.grid .content .grid a {
+ text-align: center;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ margin: 0;
+ padding: 4px 8px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+ font-size: 0.78125rem;
+ font-weight: bold;
+ color: rgba(68,68,68,0.7);
+ line-height: 1.5;
+ word-wrap: break-word;
+}
+.widget.grid .content .grid a i {
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+ font-size: 1.8em;
+}
+.widget.grid .content .grid a img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ vertical-align: middle;
+ margin-bottom: 4px;
+}
+.widget.grid .content .grid a img#round {
+ border-radius: 100%;
+ -webkit-border-radius: 100%;
+}
+.widget.grid .content .grid a.active {
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+}
+.widget.grid .content .grid a:hover {
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+.widget.grid .content .grid.fixed a {
+ width: calc(100%/3 - 0 * 16px);
+}
+@media screen and (max-width: 768px) {
+ .widget.grid .content .grid.fixed a {
+ width: calc(100%/6 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .widget.grid .content .grid.fixed a {
+ width: calc(100%/5 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 425px) {
+ .widget.grid .content .grid.fixed a {
+ width: calc(100%/4 - 0 * 16px);
+ }
+}
+@media screen and (max-width: 375px) {
+ .widget.grid .content .grid.fixed a {
+ width: calc(100%/3 - 0 * 16px);
+ }
+}
+.widget.tagcloud .content {
+ text-align: justify;
+ padding: 8px 16px;
+}
+.widget.tagcloud .content a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ line-height: 1.2em;
+ margin: 4px 0;
+ border-bottom: 1px solid transparent;
+}
+.widget.tagcloud .content a:hover {
+ color: #ff5722 !important;
+ border-bottom: 1px solid #ff5722;
+}
+.widget.related_posts .content {
+ font-weight: bold;
+}
+.widget.related_posts .content ul {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+.widget.related_posts .content h3 {
+ font-size: 0.875rem;
+ font-weight: bold;
+ margin: 0;
+}
+.widget.related_posts .content h3 a {
+ line-height: inherit;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+.widget.qrcode .content {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-around;
+ -webkit-justify-content: space-around;
+ -khtml-justify-content: space-around;
+ -moz-justify-content: space-around;
+ -o-justify-content: space-around;
+ -ms-justify-content: space-around;
+ padding-left: 16px;
+ padding-right: 16px;
+}
+.widget.qrcode .content,
+.widget.qrcode .content img {
+ margin-bottom: 4px;
+}
+#l_side>.widget.page >.content {
+ padding-top: 0;
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.webinfo {
+ padding: 0.2rem 1rem;
+}
+.webinfo .webinfo-item {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding: 4px 0 0;
+}
+.webinfo .webinfo-item div:first-child {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+.webinfo .webinfo-item div:last-child {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ float: right;
+}
+.widget-last {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block !important;
+}
+.widget-last .item {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+ -khtml-justify-content: space-between;
+ -moz-justify-content: space-between;
+ -o-justify-content: space-between;
+ -ms-justify-content: space-between;
+ font-size: 0.8rem;
+}
+.widget-last .item-title {
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.widget-sticky {
+ position: sticky;
+ top: 80px;
+ z-index: 10;
+}
+.snackbar-wrap {
+ position: fixed;
+ width: 100%;
+ left: 0;
+ bottom: 0;
+ background: #3dd9b6;
+ padding: 16px;
+ z-index: 2;
+}
+.snackbar-content {
+ max-width: 1080px;
+ margin: 16px auto;
+}
+@media screen and (max-width: 1080px) {
+ .snackbar-content {
+ max-width: 100%;
+ }
+}
+.snackbar-content p {
+ margin-top: 0.5rem;
+ margin-bottom: 0.5rem;
+ color: #fff;
+}
+.snackbar-content .title {
+ font-size: 1.5rem;
+ font-weight: 600;
+}
+.snackbar-content .action {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin: 1.5rem -4px;
+}
+.snackbar-content .action a {
+ margin: 4px;
+ cursor: pointer;
+ color: #fff;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ padding: 0.4em 2em;
+ font-weight: 600;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border: 1px solid #fff;
+}
+.snackbar-content .action a:hover {
+ color: #3dd9b6;
+ background: #fff;
+}
+.snackbar-wrap[theme='warning'] {
+ background: #f7e751;
+}
+.snackbar-wrap[theme='warning'] .snackbar-content p {
+ color: #000;
+}
+.snackbar-wrap[theme='warning'] .snackbar-content a {
+ color: #000;
+ border-color: #000;
+}
+.snackbar-wrap[theme='warning'] .snackbar-content a:hover {
+ color: #f7e751;
+ background: #000;
+}
+#l_side .toc-wrapper {
+ z-index: 1;
+ overflow: hidden;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ line-height: 1.6;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+#l_side .toc-wrapper header {
+ position: sticky;
+ width: 100%;
+ top: 0;
+ padding-bottom: 4px;
+}
+#l_side .toc-wrapper .content {
+ max-height: calc(100vh - 144px);
+}
+#l_side .toc-wrapper .content a {
+ border-left: 2px solid transparent;
+}
+#l_side .toc-wrapper .content a.active {
+ color: var(--color-list-hl);
+ border-left: 2px solid #3dd9b6;
+}
+#l_side .toc-wrapper .content a:hover {
+ color: var(--color-list-hl);
+ background: var(--color-site-bg);
+ border-left: 2px solid #3dd9b6;
+}
+@media screen and (max-width: 768px) {
+ #l_side .toc-wrapper {
+ z-index: 1001;
+ position: fixed;
+ max-height: 1000px;
+ width: auto;
+ max-width: calc(100% - 2 * 16px);
+ top: 48px;
+ right: 16px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+ border: 1px solid #e7e7e7;
+ visibility: hidden;
+ transform: scale(0, 0);
+ -webkit-transform: scale(0, 0);
+ -khtml-transform: scale(0, 0);
+ -moz-transform: scale(0, 0);
+ -o-transform: scale(0, 0);
+ -ms-transform: scale(0, 0);
+ transform-origin: right top;
+ -webkit-transform-origin: right top;
+ -khtml-transform-origin: right top;
+ -moz-transform-origin: right top;
+ -o-transform-origin: right top;
+ -ms-transform-origin: right top;
+ }
+ #l_side .toc-wrapper.active {
+ visibility: visible;
+ transform: scale(1, 1);
+ -webkit-transform: scale(1, 1);
+ -khtml-transform: scale(1, 1);
+ -moz-transform: scale(1, 1);
+ -o-transform: scale(1, 1);
+ -ms-transform: scale(1, 1);
+ }
+}
+@media screen and (max-width: 375px) {
+ #l_side .toc-wrapper {
+ right: 0;
+ }
+}
+#l_side .toc-wrapper a {
+ padding-left: 8px;
+ color: var(--color-meta);
+ font-size: 0.875rem;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+#l_side .toc-wrapper ul .toc-child a,
+#l_side .toc-wrapper ol .toc-child a {
+ font-weight: normal;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-1 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-1 .toc-child a {
+ padding-left: 12.8px;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-2 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-2 .toc-child a {
+ padding-left: 25.6px;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-3 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-3 .toc-child a {
+ padding-left: 38.4px;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-4 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-4 .toc-child a {
+ padding-left: 51.2px;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-5 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-5 .toc-child a {
+ padding-left: 64px;
+}
+#l_side .toc-wrapper ul .toc-item.toc-level-6 .toc-child a,
+#l_side .toc-wrapper ol .toc-item.toc-level-6 .toc-child a {
+ padding-left: 76.8px;
+}
+#l_side .toc-wrapper ul li,
+#l_side .toc-wrapper ol li {
+ width: auto;
+ text-align: left;
+}
+#l_side .toc-wrapper ul li a,
+#l_side .toc-wrapper ol li a {
+ padding: 0 8px 0 11px;
+ font-weight: bold;
+ width: 100%;
+}
+#l_side .toc-wrapper:empty {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+#l_side .toc-wrapper .toc-child {
+ font-size: 1rem;
+ overflow: hidden;
+ transition: max-height 0.6s ease-in;
+ -webkit-transition: max-height 0.6s ease-in;
+ -khtml-transition: max-height 0.6s ease-in;
+ -moz-transition: max-height 0.6s ease-in;
+ -o-transition: max-height 0.6s ease-in;
+ -ms-transition: max-height 0.6s ease-in;
+ max-height: 0;
+}
+#l_side .toc-wrapper .toc-item.active>.toc-link {
+ color: var(--color-list-hl);
+ border-left: 2px solid #3dd9b6;
+}
+#l_side .toc-wrapper .toc-item.active>.toc-child {
+ max-height: 1000px;
+}
+.md .video-wrap {
+ margin: 1.5rem auto;
+}
+.article span.btn,
+.md span.btn {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+}
+.article span.btn a,
+.md span.btn a {
+ text-decoration: none;
+ border-bottom: none;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ padding: 3px 4px 2px 4px;
+ margin: 2px;
+ line-height: 1.1;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.article span.btn a i,
+.md span.btn a i {
+ margin-right: 2px;
+}
+.article span.btn a:not([href]),
+.md span.btn a:not([href]) {
+ opacity: 0.5;
+ -webkit-opacity: 0.5;
+ -moz-opacity: 0.5;
+}
+.article span.btn a:not([href]):hover,
+.md span.btn a:not([href]):hover {
+ cursor: $not-allowed, not-allowed;
+}
+.article span.btn a,
+.md span.btn a,
+.article span.btn.regular a,
+.md span.btn.regular a {
+ color: #44d7b6;
+ border: 1px solid #44d7b6;
+}
+.article span.btn a:hover,
+.md span.btn a:hover,
+.article span.btn.regular a:hover,
+.md span.btn.regular a:hover {
+ color: #ff5722;
+ border-color: #ff5722;
+}
+.article span.btn a i,
+.md span.btn a i,
+.article span.btn.regular a i,
+.md span.btn.regular a i {
+ margin-right: 4px;
+}
+.article span.btn.regular a,
+.md span.btn.regular a,
+.article span.btn.solid a,
+.md span.btn.solid a {
+ padding: 8px 12px;
+}
+.article span.btn.solid a,
+.md span.btn.solid a {
+ border: none;
+ background: #44d7b6;
+ color: #fff;
+}
+.article span.btn.solid a:hover,
+.md span.btn.solid a:hover {
+ color: #fff;
+ background: #ff5722;
+}
+.article span.btn.large a,
+.md span.btn.large a {
+ font-size: 1rem;
+ padding: 12px 36px;
+}
+.article span.btn.large a i,
+.md span.btn.large a i {
+ margin-right: 8px;
+}
+.article span.btn.center,
+.md span.btn.center {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: center;
+}
+.article div.btns,
+.md div.btns {
+ margin: 0 -8px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: flex-start;
+ overflow: visible;
+ line-height: 1.8;
+}
+.article div.btns,
+.md div.btns,
+.article div.btns p,
+.md div.btns p,
+.article div.btns a,
+.md div.btns a {
+ font-size: 0.8125rem;
+ color: var(--color-p);
+}
+.article div.btns b,
+.md div.btns b {
+ font-size: 0.875rem;
+}
+.article div.btns.wide>a,
+.md div.btns.wide>a {
+ padding-left: 32px;
+ padding-right: 32px;
+}
+.article div.btns.fill>a,
+.md div.btns.fill>a {
+ flex-grow: 1;
+ width: auto;
+}
+.article div.btns.around,
+.md div.btns.around {
+ justify-content: space-around;
+ -webkit-justify-content: space-around;
+ -khtml-justify-content: space-around;
+ -moz-justify-content: space-around;
+ -o-justify-content: space-around;
+ -ms-justify-content: space-around;
+}
+.article div.btns.center,
+.md div.btns.center {
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+}
+.article div.btns.grid2>a,
+.md div.btns.grid2>a {
+ width: calc(100%/2 - 16px);
+}
+@media screen and (max-width: 1024px) {
+ .article div.btns.grid2>a,
+ .md div.btns.grid2>a {
+ width: calc(100%/2 - 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ .article div.btns.grid2>a,
+ .md div.btns.grid2>a {
+ width: calc(100%/2 - 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .article div.btns.grid2>a,
+ .md div.btns.grid2>a {
+ width: calc(100%/1 - 16px);
+ }
+}
+.article div.btns.grid3>a,
+.md div.btns.grid3>a {
+ width: calc(100%/3 - 16px);
+}
+@media screen and (max-width: 1024px) {
+ .article div.btns.grid3>a,
+ .md div.btns.grid3>a {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ .article div.btns.grid3>a,
+ .md div.btns.grid3>a {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .article div.btns.grid3>a,
+ .md div.btns.grid3>a {
+ width: calc(100%/1 - 16px);
+ }
+}
+.article div.btns.grid4>a,
+.md div.btns.grid4>a {
+ width: calc(100%/4 - 16px);
+}
+@media screen and (max-width: 1024px) {
+ .article div.btns.grid4>a,
+ .md div.btns.grid4>a {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ .article div.btns.grid4>a,
+ .md div.btns.grid4>a {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .article div.btns.grid4>a,
+ .md div.btns.grid4>a {
+ width: calc(100%/2 - 16px);
+ }
+}
+.article div.btns.grid5>a,
+.md div.btns.grid5>a {
+ width: calc(100%/5 - 16px);
+}
+@media screen and (max-width: 1024px) {
+ .article div.btns.grid5>a,
+ .md div.btns.grid5>a {
+ width: calc(100%/4 - 16px);
+ }
+}
+@media screen and (max-width: 768px) {
+ .article div.btns.grid5>a,
+ .md div.btns.grid5>a {
+ width: calc(100%/3 - 16px);
+ }
+}
+@media screen and (max-width: 500px) {
+ .article div.btns.grid5>a,
+ .md div.btns.grid5>a {
+ width: calc(100%/2 - 16px);
+ }
+}
+.article div.btns a,
+.md div.btns a {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ text-decoration: none;
+ border-bottom: none;
+ margin: 8px;
+ margin-top: calc(1.25 * 16px + 32px);
+ min-width: 120px;
+ font-weight: bold;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ align-content: center;
+ align-items: center;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ padding: 8px;
+ text-align: center;
+ background: var(--color-block);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.article div.btns a>img:first-child,
+.md div.btns a>img:first-child,
+.article div.btns a>i:first-child,
+.md div.btns a>i:first-child {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ height: 64px;
+ width: 64px;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ margin: 16px 8px 4px 8px;
+ margin-top: calc(-1.25 * 16px - 32px);
+ border: 2px solid var(--color-card);
+ background: #fff;
+ line-height: 60px;
+ font-size: 28px;
+}
+.article div.btns a>img:first-child.auto,
+.md div.btns a>img:first-child.auto,
+.article div.btns a>i:first-child.auto,
+.md div.btns a>i:first-child.auto {
+ width: auto;
+}
+.article div.btns a>i:first-child,
+.md div.btns a>i:first-child {
+ color: #fff;
+ background: #3dd9b6;
+}
+.article div.btns a p,
+.md div.btns a p,
+.article div.btns a b,
+.md div.btns a b {
+ margin: 0.25em;
+ font-weight: normal;
+ line-height: 1.25;
+ word-wrap: break-word;
+}
+.article div.btns a b,
+.md div.btns a b {
+ font-weight: bold;
+ line-height: 1.3;
+}
+.article div.btns a img,
+.md div.btns a img {
+ margin: 0.4em auto;
+}
+.article div.btns a:not([href]),
+.md div.btns a:not([href]) {
+ cursor: default;
+ color: inherit;
+}
+.article div.btns a[href]:hover,
+.md div.btns a[href]:hover {
+ background: rgba(255,87,34,0.15);
+}
+.article div.btns a[href]:hover,
+.md div.btns a[href]:hover,
+.article div.btns a[href]:hover b,
+.md div.btns a[href]:hover b {
+ color: #ff5722;
+}
+.article div.btns a[href]:hover>img:first-child,
+.md div.btns a[href]:hover>img:first-child,
+.article div.btns a[href]:hover>i:first-child,
+.md div.btns a[href]:hover>i:first-child {
+ transform: scale(1.1) translateY(-8px);
+ -webkit-transform: scale(1.1) translateY(-8px);
+ -khtml-transform: scale(1.1) translateY(-8px);
+ -moz-transform: scale(1.1) translateY(-8px);
+ -o-transform: scale(1.1) translateY(-8px);
+ -ms-transform: scale(1.1) translateY(-8px);
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
+}
+.article div.btns a[href]:hover>i:first-child,
+.md div.btns a[href]:hover>i:first-child {
+ background: #ff5722;
+}
+.article div.btns.circle a>img:first-child,
+.md div.btns.circle a>img:first-child,
+.article div.btns.circle a>i:first-child,
+.md div.btns.circle a>i:first-child {
+ border-radius: 32px;
+ -webkit-border-radius: 32px;
+}
+.article div.btns.rounded a>img:first-child,
+.md div.btns.rounded a>img:first-child,
+.article div.btns.rounded a>i:first-child,
+.md div.btns.rounded a>i:first-child {
+ border-radius: 16px;
+ -webkit-border-radius: 16px;
+}
+.md .checkbox {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: center;
+ margin-top: 1em;
+ margin-bottom: 1em;
+/* Checkbox */
+/* Radio */
+/* Colors */
+}
+.md .checkbox+.checkbox {
+ margin-top: -1em;
+}
+.md .checkbox input {
+ transform: translate(0, -1px);
+ -webkit-transform: translate(0, -1px);
+ -khtml-transform: translate(0, -1px);
+ -moz-transform: translate(0, -1px);
+ -o-transform: translate(0, -1px);
+ -ms-transform: translate(0, -1px);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ -o-appearance: none;
+ appearance: none;
+ position: relative;
+ height: 16px;
+ width: 16px;
+ transition: all 0.15s ease-out 0s;
+ -webkit-transition: all 0.15s ease-out 0s;
+ -khtml-transition: all 0.15s ease-out 0s;
+ -moz-transition: all 0.15s ease-out 0s;
+ -o-transition: all 0.15s ease-out 0s;
+ -ms-transition: all 0.15s ease-out 0s;
+ cursor: pointer;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ outline: none;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ flex-shrink: 0;
+ margin-right: 8px;
+ pointer-events: none;
+}
+.md .checkbox input[type=checkbox]:before,
+.md .checkbox input[type=checkbox]:after {
+ position: absolute;
+ content: "";
+ background: #fff;
+}
+.md .checkbox input[type=checkbox]:before {
+ left: 1px;
+ top: 5px;
+ width: 0px;
+ height: 2px;
+ transition: all 0.2s ease-in;
+ -webkit-transition: all 0.2s ease-in;
+ -khtml-transition: all 0.2s ease-in;
+ -moz-transition: all 0.2s ease-in;
+ -o-transition: all 0.2s ease-in;
+ -ms-transition: all 0.2s ease-in;
+ transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -khtml-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+}
+.md .checkbox input[type=checkbox]:after {
+ right: 7px;
+ bottom: 3px;
+ width: 2px;
+ height: 0px;
+ transition: all 0.2s ease-out;
+ -webkit-transition: all 0.2s ease-out;
+ -khtml-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transform: rotate(40deg);
+ -webkit-transform: rotate(40deg);
+ -khtml-transform: rotate(40deg);
+ -moz-transform: rotate(40deg);
+ -o-transform: rotate(40deg);
+ -ms-transform: rotate(40deg);
+ -webkit-transform: rotate(40deg);
+ -moz-transform: rotate(40deg);
+ -ms-transform: rotate(40deg);
+ -o-transform: rotate(40deg);
+ transition-delay: 0.25s;
+ -webkit-transition-delay: 0.25s;
+ -khtml-transition-delay: 0.25s;
+ -moz-transition-delay: 0.25s;
+ -o-transition-delay: 0.25s;
+ -ms-transition-delay: 0.25s;
+}
+.md .checkbox input[type=checkbox]:checked:before {
+ left: 0px;
+ top: 7px;
+ width: 6px;
+ height: 2px;
+}
+.md .checkbox input[type=checkbox]:checked:after {
+ right: 3px;
+ bottom: 1px;
+ width: 2px;
+ height: 10px;
+}
+.md .checkbox.minus input[type=checkbox]:before {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ left: 1px;
+ top: 5px;
+ width: 0px;
+ height: 2px;
+}
+.md .checkbox.minus input[type=checkbox]:after {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ left: 1px;
+ top: 5px;
+ width: 0px;
+ height: 2px;
+}
+.md .checkbox.minus input[type=checkbox]:checked:before {
+ left: 1px;
+ top: 5px;
+ width: 10px;
+ height: 2px;
+}
+.md .checkbox.minus input[type=checkbox]:checked:after {
+ left: 1px;
+ top: 5px;
+ width: 10px;
+ height: 2px;
+}
+.md .checkbox.plus input[type=checkbox]:before {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ left: 1px;
+ top: 5px;
+ width: 0px;
+ height: 2px;
+}
+.md .checkbox.plus input[type=checkbox]:after {
+ transform: rotate(0);
+ -webkit-transform: rotate(0);
+ -khtml-transform: rotate(0);
+ -moz-transform: rotate(0);
+ -o-transform: rotate(0);
+ -ms-transform: rotate(0);
+ left: 5px;
+ top: 1px;
+ width: 2px;
+ height: 0px;
+}
+.md .checkbox.plus input[type=checkbox]:checked:before {
+ left: 1px;
+ top: 5px;
+ width: 10px;
+ height: 2px;
+}
+.md .checkbox.plus input[type=checkbox]:checked:after {
+ left: 5px;
+ top: 1px;
+ width: 2px;
+ height: 10px;
+}
+.md .checkbox.times input[type=checkbox]:before {
+ transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -khtml-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ left: 3px;
+ top: 1px;
+ width: 0px;
+ height: 2px;
+}
+.md .checkbox.times input[type=checkbox]:after {
+ transform: rotate(135deg);
+ -webkit-transform: rotate(135deg);
+ -khtml-transform: rotate(135deg);
+ -moz-transform: rotate(135deg);
+ -o-transform: rotate(135deg);
+ -ms-transform: rotate(135deg);
+ right: 3px;
+ top: 1px;
+ width: 0px;
+ height: 2px;
+}
+.md .checkbox.times input[type=checkbox]:checked:before {
+ left: 1px;
+ top: 5px;
+ width: 10px;
+ height: 2px;
+}
+.md .checkbox.times input[type=checkbox]:checked:after {
+ right: 1px;
+ top: 5px;
+ width: 10px;
+ height: 2px;
+}
+.md .checkbox input[type=radio] {
+ border-radius: 50%;
+ -webkit-border-radius: 50%;
+}
+.md .checkbox input[type=radio]:before {
+ content: "";
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ -webkit-border-radius: 50%;
+ margin: 2px;
+ transform: scale(0);
+ -webkit-transform: scale(0);
+ -khtml-transform: scale(0);
+ -moz-transform: scale(0);
+ -o-transform: scale(0);
+ -ms-transform: scale(0);
+ transition: all 0.25s ease-out;
+ -webkit-transition: all 0.25s ease-out;
+ -khtml-transition: all 0.25s ease-out;
+ -moz-transition: all 0.25s ease-out;
+ -o-transition: all 0.25s ease-out;
+ -ms-transition: all 0.25s ease-out;
+}
+.md .checkbox input[type=radio]:checked:before {
+ transform: scale(1);
+ -webkit-transform: scale(1);
+ -khtml-transform: scale(1);
+ -moz-transform: scale(1);
+ -o-transform: scale(1);
+ -ms-transform: scale(1);
+}
+.md .checkbox input {
+ border: 2px solid #3dd9b6;
+}
+.md .checkbox input[type=checkbox]:checked {
+ background: #3dd9b6;
+}
+.md .checkbox input[type=radio]:checked:before {
+ background: #3dd9b6;
+}
+.md .checkbox.red input {
+ border-color: #fe5f58;
+}
+.md .checkbox.red input[type=checkbox]:checked {
+ background: #fe5f58;
+}
+.md .checkbox.red input[type=radio]:checked:before {
+ background: #fe5f58;
+}
+.md .checkbox.green input {
+ border-color: #3dc550;
+}
+.md .checkbox.green input[type=checkbox]:checked {
+ background: #3dc550;
+}
+.md .checkbox.green input[type=radio]:checked:before {
+ background: #3dc550;
+}
+.md .checkbox.yellow input {
+ border-color: #ffbd2b;
+}
+.md .checkbox.yellow input[type=checkbox]:checked {
+ background: #ffbd2b;
+}
+.md .checkbox.yellow input[type=radio]:checked:before {
+ background: #ffbd2b;
+}
+.md .checkbox.cyan input {
+ border-color: #1bcdfc;
+}
+.md .checkbox.cyan input[type=checkbox]:checked {
+ background: #1bcdfc;
+}
+.md .checkbox.cyan input[type=radio]:checked:before {
+ background: #1bcdfc;
+}
+.md .checkbox.blue input {
+ border-color: #2196f3;
+}
+.md .checkbox.blue input[type=checkbox]:checked {
+ background: #2196f3;
+}
+.md .checkbox.blue input[type=radio]:checked:before {
+ background: #2196f3;
+}
+article .checkbox p {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+div.dropmenu-wrapper {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+div.dropmenu {
+ position: relative;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ color: #2092ec;
+}
+div.dropmenu:hover {
+ color: inherit;
+}
+div.dropmenu:hover >ul {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ left: 0;
+ margin-left: 0;
+ margin-top: 0px;
+}
+div.dropmenu ul>li {
+ list-style: none;
+}
+div.dropmenu ul>li >a:hover {
+ text-decoration: none !important;
+}
+div.dropmenu .list-v .list-v {
+ left: calc(100% - 0.5 * 16px);
+}
+div.gallery {
+ margin: 1em 0;
+ overflow: hidden;
+}
+div.gallery+.gallery {
+ margin-top: -1em;
+}
+div.gallery >.fancybox,
+div.gallery >p>.fancybox {
+ margin: 1px;
+ padding: 0;
+ position: relative;
+}
+div.gallery >.fancybox a,
+div.gallery >p>.fancybox a {
+ height: 100%;
+ width: 100%;
+}
+div.gallery >.fancybox img,
+div.gallery >p>.fancybox img {
+ object-fit: cover;
+ height: 100%;
+ width: 100%;
+}
+div.gallery >.fancybox .image-caption,
+div.gallery >p>.fancybox .image-caption {
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ transform: translateY(100%);
+ -webkit-transform: translateY(100%);
+ -khtml-transform: translateY(100%);
+ -moz-transform: translateY(100%);
+ -o-transform: translateY(100%);
+ -ms-transform: translateY(100%);
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.3s ease;
+ -khtml-transition: all 0.3s ease;
+ -moz-transition: all 0.3s ease;
+ -o-transition: all 0.3s ease;
+ -ms-transition: all 0.3s ease;
+ pointer-events: none;
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ text-align: center;
+ background: rgba(0,0,0,0.3);
+ color: #fff;
+}
+div.gallery >.fancybox .image-caption:empty,
+div.gallery >p>.fancybox .image-caption:empty {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+div.gallery >.fancybox:hover .image-caption,
+div.gallery >p>.fancybox:hover .image-caption {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+ transform: translateY(0);
+ -webkit-transform: translateY(0);
+ -khtml-transform: translateY(0);
+ -moz-transform: translateY(0);
+ -o-transform: translateY(0);
+ -ms-transform: translateY(0);
+}
+div.gallery,
+div.gallery >p {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+ flex-wrap: nowrap;
+ -webkit-flex-wrap: nowrap;
+ -khtml-flex-wrap: nowrap;
+ -moz-flex-wrap: nowrap;
+ -o-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ padding: 0 !important;
+ align-items: stretch;
+}
+div.gallery[col] {
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+}
+div.gallery[col='2']>.fancybox {
+ width: calc(50% - 2 * 1px);
+}
+div.gallery[col='3']>.fancybox {
+ width: calc(33.33% - 2 * 1px);
+}
+div.gallery[col='4']>.fancybox {
+ width: calc(25% - 2 * 1px);
+}
+div.gallery[col='5']>.fancybox {
+ width: calc(20% - 2 * 1px);
+}
+div.gallery[col='6']>.fancybox {
+ width: calc(16.66% - 2 * 1px);
+}
+div.gallery[col='7']>.fancybox {
+ width: calc(14.2857% - 2 * 1px);
+}
+div.gallery[col='8']>.fancybox {
+ width: calc(12.5% - 2 * 1px);
+}
+div.gallery >p {
+ margin: 0;
+}
+div.gallery.left,
+div.gallery.left>p {
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+}
+div.gallery.center,
+div.gallery.center>p {
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+}
+div.gallery.right,
+div.gallery.right>p {
+ justify-content: flex-end;
+ -webkit-justify-content: flex-end;
+ -khtml-justify-content: flex-end;
+ -moz-justify-content: flex-end;
+ -o-justify-content: flex-end;
+ -ms-justify-content: flex-end;
+}
+div.gallery.stretch,
+div.gallery.stretch>p {
+ align-items: stretch;
+}
+.fancybox-container .fancybox-stage {
+ cursor: zoom-out;
+}
+div.fancybox {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ align-items: center;
+ flex-wrap: nowrap;
+ -webkit-flex-wrap: nowrap;
+ -khtml-flex-wrap: nowrap;
+ -moz-flex-wrap: nowrap;
+ -o-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ padding: 0 !important;
+ overflow: hidden;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+@media screen and (max-width: 500px) {
+ div.fancybox {
+ border-radius: 1px;
+ -webkit-border-radius: 1px;
+ }
+}
+div.fancybox a {
+ line-height: 0;
+ margin: 0 auto;
+ align-items: stretch;
+}
+div.fancybox .gallery {
+ overflow: hidden;
+}
+div.fancybox .image-caption {
+ font-size: 0.8125rem;
+ padding-top: 0.5em;
+ padding-bottom: 1em;
+ color: var(--color-meta);
+}
+div.fancybox .image-caption:empty {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+details {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ padding: 16px;
+ margin: 1em 0;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ background: var(--color-card);
+ font-size: 0.9375rem;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ border: 1px solid var(--color-block);
+}
+details summary {
+ cursor: pointer;
+ padding: 16px;
+ margin: -16px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ color: rgba(68,68,68,0.7);
+ font-size: 0.875rem;
+ font-weight: bold;
+ position: relative;
+ line-height: normal;
+}
+details summary > p,
+details summary > h1,
+details summary > h2,
+details summary > h3,
+details summary > h4,
+details summary > h5,
+details summary > h6 {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline;
+ border-bottom: none !important;
+}
+details summary:hover {
+ color: var(--color-p);
+}
+details summary:hover:after {
+ position: absolute;
+ content: '+';
+ text-align: center;
+ top: 50%;
+ transform: translateY(-50%);
+ -webkit-transform: translateY(-50%);
+ -khtml-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -o-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ right: 16px;
+}
+details >summary {
+ background: var(--color-block);
+}
+details[blue] {
+ border-color: #e8f4fd;
+}
+details[blue] >summary {
+ background: #e8f4fd;
+}
+details[cyan] {
+ border-color: #e8fafe;
+}
+details[cyan] >summary {
+ background: #e8fafe;
+}
+details[green] {
+ border-color: #ebf9ed;
+}
+details[green] >summary {
+ background: #ebf9ed;
+}
+details[yellow] {
+ border-color: #fff8e9;
+}
+details[yellow] >summary {
+ background: #fff8e9;
+}
+details[red] {
+ border-color: #feefee;
+}
+details[red] >summary {
+ background: #feefee;
+}
+details[open] {
+ border-color: rgba(68,68,68,0.2);
+}
+details[open] >summary {
+ border-bottom: 1px solid rgba(68,68,68,0.2);
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+}
+details[open][blue] {
+ border-color: rgba(33,150,243,0.3);
+}
+details[open][blue] >summary {
+ border-bottom-color: rgba(33,150,243,0.3);
+}
+details[open][cyan] {
+ border-color: rgba(27,205,252,0.3);
+}
+details[open][cyan] >summary {
+ border-bottom-color: rgba(27,205,252,0.3);
+}
+details[open][green] {
+ border-color: rgba(61,197,80,0.3);
+}
+details[open][green] >summary {
+ border-bottom-color: rgba(61,197,80,0.3);
+}
+details[open][yellow] {
+ border-color: rgba(255,189,43,0.3);
+}
+details[open][yellow] >summary {
+ border-bottom-color: rgba(255,189,43,0.3);
+}
+details[open][red] {
+ border-color: rgba(254,95,88,0.3);
+}
+details[open][red] >summary {
+ border-bottom-color: rgba(254,95,88,0.3);
+}
+details[open] >summary {
+ color: #444;
+ margin-bottom: 0;
+}
+details[open] >summary:hover:after {
+ content: '-';
+}
+details[open] >div.content {
+ padding: 16px;
+ margin: -16px;
+ margin-top: 0;
+}
+details[open] >div.content p>a:hover {
+ text-decoration: underline;
+}
+details[open] >div.content > p:first-child,
+details[open] >div.content > .tabs:first-child,
+details[open] >div.content > ul:first-child,
+details[open] >div.content > ol:first-child,
+details[open] >div.content > .highlight:first-child,
+details[open] >div.content > .note:first-child,
+details[open] >div.content > details:first-child {
+ margin-top: 0;
+}
+details[open] >div.content > p:last-child,
+details[open] >div.content > .tabs:last-child,
+details[open] >div.content > ul:last-child,
+details[open] >div.content > ol:last-child,
+details[open] >div.content > .highlight:last-child,
+details[open] >div.content > .note:last-child,
+details[open] >div.content > details:last-child {
+ margin-bottom: 0;
+}
+.md .frame-wrap {
+ position: relative;
+ overflow: hidden;
+ margin: 0 auto;
+ max-width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+}
+.md .frame-wrap img,
+.md .frame-wrap video {
+ border-radius: 0;
+ -webkit-border-radius: 0;
+}
+.md .frame-wrap .frame {
+ z-index: 1;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: absolute;
+ background-size: 100%;
+ -webkit-background-size: 100%;
+ -moz-background-size: 100%;
+ background-repeat: no-repeat;
+ overflow: hidden;
+}
+.md .img-wrap .frame-wrap[part] {
+ height: auto;
+}
+.md .frame-wrap#iphone11 img,
+.md .frame-wrap#iphone11 video {
+ width: 287px;
+ margin-top: 19px;
+ margin-bottom: 20px;
+}
+.md .frame-wrap#iphone11 .frame {
+ background-image: url("https://cdn.jsdelivr.net/gh/volantis-x/cdn-volantis@3/img/frame/iphone11.svg");
+ width: 329px;
+ height: 658px;
+}
+.md .frame-wrap[part='top'] img,
+.md .frame-wrap[part='top'] video {
+ margin-bottom: 0 !important;
+}
+.md .frame-wrap:not([part='bottom']) .frame {
+ top: 0;
+}
+.md .frame-wrap[part='bottom'] img,
+.md .frame-wrap[part='bottom'] video {
+ bottom: 0;
+ margin-top: 0 !important;
+}
+.md .frame-wrap[part='bottom'] .frame {
+ bottom: 0;
+}
+@media screen and (max-width: 500px) {
+ .md .frame-wrap#iphone11 img,
+ .md .frame-wrap#iphone11 video {
+ width: 208px;
+ margin-top: 13px;
+ margin-bottom: 14px;
+ }
+ .md .frame-wrap#iphone11 .frame {
+ width: 238px;
+ height: 476px;
+ }
+}
+.users-wrap {
+ overflow: hidden;
+}
+.users-wrap .group-header {
+ margin: 0 0 1rem;
+}
+.users-wrap .group-header p {
+ margin: 0;
+ font-size: 0.875rem;
+}
+.users-wrap .group-header p:first-child {
+ font-size: 1.25rem;
+ font-weight: 500;
+}
+.users-wrap .group-body {
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ align-items: stretch;
+ margin-bottom: 2rem;
+}
+.users-wrap .friendsjs-wrap {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+.users-wrap .friendsjs-wrap .loading-wrap {
+ min-height: 50px;
+ margin: 2rem 0;
+ text-align: center;
+}
+.users-wrap .user-card {
+ flex-shrink: 1;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-items: stretch;
+ width: 12.5%;
+}
+@media screen and (max-width: 980px) {
+ .users-wrap .user-card {
+ width: 14.28%;
+ }
+}
+@media screen and (max-width: 900px) {
+ .users-wrap .user-card {
+ width: 16.66%;
+ }
+}
+@media screen and (max-width: 820px) {
+ .users-wrap .user-card {
+ width: 20%;
+ }
+}
+@media screen and (max-width: 768px) {
+ .users-wrap .user-card {
+ width: 16.66%;
+ }
+}
+@media screen and (max-width: 500px) {
+ .users-wrap .user-card {
+ width: 25%;
+ }
+}
+.users-wrap .user-card .card-link {
+ margin: 0;
+ width: 100%;
+ color: var(--text-p1);
+ font-size: 10px;
+ font-weight: 500;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ line-height: 1.2;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ overflow: hidden;
+ position: relative;
+ padding: 1rem 0.5rem;
+}
+.users-wrap .user-card .card-link img {
+ object-fit: cover;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ width: 48px;
+ height: 48px;
+ background: var(--card);
+ border-radius: 64px;
+ -webkit-border-radius: 64px;
+ margin: 0 0 0.5rem;
+}
+.users-wrap .user-card .card-link >img {
+ transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+ -webkit-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+ -khtml-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+ -moz-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+ -o-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+ -ms-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
+}
+.users-wrap .user-card .card-link:hover {
+ background: var(--block-hover);
+}
+.users-wrap .user-card .card-link:hover img {
+ transform: scale(1.2) rotate(8deg);
+ -webkit-transform: scale(1.2) rotate(8deg);
+ -khtml-transform: scale(1.2) rotate(8deg);
+ -moz-transform: scale(1.2) rotate(8deg);
+ -o-transform: scale(1.2) rotate(8deg);
+ -ms-transform: scale(1.2) rotate(8deg);
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+a.ghcard {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ line-height: 0;
+}
+.md .ghcard-group {
+ column-count: 2;
+ -webkit-column-count: 2;
+ -moz-column-count: 2;
+ column-gap: 0;
+ -webkit-column-gap: 0;
+ -moz-column-gap: 0;
+ margin: 0 -8px;
+}
+.md .ghcard-group .ghcard {
+ margin: 8px;
+}
+.md .img {
+ object-fit: contain;
+}
+img.inline {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline !important;
+ vertical-align: middle;
+ transform: translateY(-4px);
+ -webkit-transform: translateY(-4px);
+ -khtml-transform: translateY(-4px);
+ -moz-transform: translateY(-4px);
+ -o-transform: translateY(-4px);
+ -ms-transform: translateY(-4px);
+}
+.md .tag.link {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.md .link-card {
+ margin-right: 1em;
+ background: var(--color-block);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-inline-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-inline-flex /* NEW - Chrome */;
+ display: inline-flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: inline-flex;
+ align-items: center;
+ cursor: pointer;
+ text-align: center;
+ width: 361px;
+ max-width: 100%;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ color: var(--color-p);
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+@media screen and (max-width: 425px) {
+ .md .link-card {
+ max-width: 100%;
+ width: 100%;
+ }
+}
+.md .link-card:hover {
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+.md .link-card div.left,
+.md .link-card div.right {
+ pointer-events: none;
+}
+.md .link-card div.left {
+ width: 54px;
+ height: 54px;
+ margin: 12px;
+ overflow: hidden;
+ flex-shrink: 0;
+ position: relative;
+}
+.md .link-card div.left i {
+ font-size: 32px;
+ line-height: 48px;
+ margin-left: 4px;
+}
+.md .link-card div.left img {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: absolute;
+ border-radius: 8px/4;
+ -webkit-border-radius: 8px/4;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ -webkit-transform: translate(-50%, -50%);
+ -khtml-transform: translate(-50%, -50%);
+ -moz-transform: translate(-50%, -50%);
+ -o-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+}
+.md .link-card div.right {
+ overflow: hidden;
+ margin-right: 16px;
+}
+.md .link-card p {
+ margin: 0;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.md .link-card p.text {
+ font-weight: bold;
+}
+.md .link-card p.url {
+ flex-shrink: 0;
+ color: var(--color-meta);
+ font-size: 0.8125rem;
+}
+.md .link-group {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-gap: 16px;
+}
+@media screen and (max-width: 850px) {
+ .md .link-group {
+ grid-template-columns: 1fr;
+ }
+}
+.md .link-group .tag.link {
+ margin: 0;
+}
+.md .link-group .link-card {
+ width: 100%;
+}
+audio,
+video {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ max-width: 100%;
+}
+video {
+ z-index: 1;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+video:hover {
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.24), 0 8px 16px 0px rgba(0,0,0,0.24);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.24), 0 8px 16px 0px rgba(0,0,0,0.24);
+}
+div.video {
+ line-height: 0;
+ text-align: center;
+}
+div.videos {
+ max-width: calc(100% + 2 * 4px);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -khtml-flex-wrap: wrap;
+ -moz-flex-wrap: wrap;
+ -o-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ align-items: flex-end;
+ margin: 1em -4px;
+}
+div.videos .video,
+div.videos iframe {
+ width: 100%;
+ margin: 4px;
+}
+div.videos iframe {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ width: 100%;
+ min-height: 300px;
+}
+div.videos.left {
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+}
+div.videos.center {
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+}
+div.videos.right {
+ justify-content: flex-end;
+ -webkit-justify-content: flex-end;
+ -khtml-justify-content: flex-end;
+ -moz-justify-content: flex-end;
+ -o-justify-content: flex-end;
+ -ms-justify-content: flex-end;
+}
+div.videos.stretch {
+ align-items: stretch;
+}
+div.videos[col='1'] .video,
+div.videos[col='1'] iframe {
+ width: 100%;
+}
+div.videos[col='2'] .video,
+div.videos[col='2'] iframe {
+ width: calc(50% - 2 * 4px);
+}
+div.videos[col='3'] .video,
+div.videos[col='3'] iframe {
+ width: calc(33.33% - 2 * 4px);
+}
+div.videos[col='4'] .video,
+div.videos[col='4'] iframe {
+ width: calc(25% - 2 * 4px);
+}
+div.note {
+ position: relative;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ padding: 16px;
+ padding-left: calc(16px + 16px);
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ font-size: 0.9375rem;
+ background: var(--color-block);
+ border-left: 4px solid #3dd9b6;
+}
+div.note h2,
+div.note h3,
+div.note h4,
+div.note h5,
+div.note h6 {
+ margin-top: 3px;
+ margin-bottom: 0;
+ padding-top: 0 !important;
+ border-bottom: initial;
+}
+div.note p,
+div.note ul,
+div.note ol,
+div.note blockquote,
+div.note img {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+div.note .link-card {
+ background: var(--color-card);
+}
+div.note::before {
+ position: absolute;
+ top: calc(50% - 24px * 0.5);
+ left: 4px;
+ width: 24px;
+ height: 24px;
+ text-align: center;
+ font-weight: 600;
+ line-height: 24px;
+ vertical-align: middle;
+ font-family: 'Font Awesome 6 Free';
+}
+div.note::before {
+ color: #3dd9b6;
+ content: '\f054';
+}
+div.note::before {
+ content: '\f054';
+}
+div.note.quote {
+ background: #e8f4fd;
+ border-color: #2196f3;
+}
+div.note.quote::before {
+ color: #2196f3;
+ content: '\f10d';
+}
+div.note.info {
+ background: #ebfbf7;
+ border-color: #3dd9b6;
+}
+div.note.info::before {
+ color: #3dd9b6;
+ content: '\f129';
+}
+div.note.success,
+div.note.done {
+ background: #ebf9ed;
+ border-color: #3dc550;
+}
+div.note.success::before,
+div.note.done::before {
+ color: #3dc550;
+ content: '\f00c';
+}
+div.note.warning {
+ background: #fff8e9;
+ border-color: #ffbd2b;
+}
+div.note.warning::before {
+ color: #ffbd2b;
+ content: '\f12a';
+}
+div.note.danger,
+div.note.error {
+ background: #feefee;
+ border-color: #fe5f58;
+}
+div.note.danger::before,
+div.note.error::before {
+ color: #fe5f58;
+ content: '\f00d';
+}
+div.note.radiation::before {
+ content: '\f7b9';
+}
+div.note.bug::before {
+ content: '\f188';
+}
+div.note.idea::before {
+ content: '\f0eb';
+}
+div.note.link::before {
+ content: '\f0c1';
+}
+div.note.paperclip::before {
+ content: '\f0c6';
+}
+div.note.todo::before {
+ content: '\f0ae';
+}
+div.note.message::before {
+ content: '\f4ad';
+}
+div.note.guide::before {
+ content: '\f277';
+}
+div.note.download::before {
+ content: '\f019';
+}
+div.note.up::before {
+ content: '\f102';
+}
+div.note.undo::before {
+ content: '\f2ea';
+}
+div.note.play::before {
+ content: '\f144';
+}
+div.note.clear {
+ background: none;
+ border-color: none;
+}
+div.note.light {
+ background: #f5f5f5;
+ border-color: #a1a1a1;
+}
+div.note.light::before {
+ color: #a1a1a1;
+}
+div.note.gray {
+ background: #f5f5f5;
+ border-color: #696969;
+}
+div.note.gray::before {
+ color: #696969;
+}
+div.note.theme {
+ background: #ebfbf7;
+ border-color: #3dd9b6;
+}
+div.note.theme::before {
+ color: #3dd9b6;
+}
+div.note.red {
+ background: #feefee;
+ border-color: #fe5f58;
+}
+div.note.red::before {
+ color: #fe5f58;
+}
+div.note.yellow {
+ background: #fff8e9;
+ border-color: #ffbd2b;
+}
+div.note.yellow::before {
+ color: #ffbd2b;
+}
+div.note.green {
+ background: #ebf9ed;
+ border-color: #3dc550;
+}
+div.note.green::before {
+ color: #3dc550;
+}
+div.note.cyan {
+ background: #e8fafe;
+ border-color: #1bcdfc;
+}
+div.note.cyan::before {
+ color: #1bcdfc;
+}
+div.note.blue {
+ background: #e8f4fd;
+ border-color: #2196f3;
+}
+div.note.blue::before {
+ color: #2196f3;
+}
+.sites-wrap .group-header {
+ margin: 0 0 1rem;
+}
+.sites-wrap .group-header p {
+ margin: 0;
+ font-size: 0.875rem;
+}
+.sites-wrap .group-header p:first-child {
+ font-size: 1.25rem;
+ font-weight: 500;
+}
+.sites-wrap .group-body {
+ width: 100%;
+ margin-bottom: 2rem;
+}
+.sites-wrap .sitesjs-wrap {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+.sites-wrap .sitesjs-wrap .loading-wrap {
+ min-height: 50px;
+ margin: 2rem 0;
+ text-align: center;
+}
+.sites-wrap .group-body {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: grid;
+ grid-gap: 1rem 1rem;
+ grid-template-columns: repeat(auto-fill, calc((100% - 3 * 1rem) / 4));
+ margin-bottom: 2rem;
+}
+@media screen and (max-width: 1024px) {
+ .sites-wrap .group-body {
+ grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3));
+ }
+}
+@media screen and (max-width: 900px) {
+ .sites-wrap .group-body {
+ grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2));
+ }
+}
+@media screen and (max-width: 768px) {
+ .sites-wrap .group-body {
+ grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3));
+ }
+}
+@media screen and (max-width: 500px) {
+ .sites-wrap .group-body {
+ grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2));
+ }
+}
+.sites-wrap .group-body .site-card .card-link {
+ width: 100%;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ -webkit-box-direction: normal;
+ -moz-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -moz-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+.sites-wrap .group-body .site-card .card-link >img {
+ width: 100%;
+ height: 120px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ object-fit: cover;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.2);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.2);
+}
+@media screen and (max-width: 1024px) {
+ .sites-wrap .group-body .site-card .card-link >img {
+ height: 150px;
+ }
+}
+@media screen and (max-width: 900px) {
+ .sites-wrap .group-body .site-card .card-link >img {
+ height: 180px;
+ }
+}
+@media screen and (max-width: 768px) {
+ .sites-wrap .group-body .site-card .card-link >img {
+ height: 150px;
+ }
+}
+.sites-wrap .group-body .site-card .card-link .info {
+ margin-top: 0.5rem;
+ line-height: 1.2;
+}
+.sites-wrap .group-body .site-card .card-link .info >img {
+ width: 28px;
+ height: 28px;
+ border-radius: 28px;
+ -webkit-border-radius: 28px;
+ float: left;
+ margin-right: 8px;
+ margin-top: 2px;
+}
+.sites-wrap .group-body .site-card .card-link .info span {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+.sites-wrap .group-body .site-card .card-link .info .title {
+ font-weight: 500;
+ color: var(--text-p1);
+ font-size: 0.875rem;
+ margin-top: 1px;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ -webkit-line-clamp: 1;
+}
+.sites-wrap .group-body .site-card .card-link .info .desc {
+ font-size: 10px;
+ margin-top: 2px;
+ word-wrap: break-word;
+ color: var(--text-p3);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ -webkit-line-clamp: 2;
+}
+.sites-wrap .site-card .card-link >img {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.sites-wrap .site-card .card-link:hover >img {
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
+}
+p.p.subtitle {
+ font-weight: bold;
+ color: #3eb399;
+ font-size: 1.25rem !important;
+ padding-top: 1.5rem;
+}
+p.p.subtitle:first-child {
+ padding-top: 1rem;
+}
+span.p.logo,
+p.p.logo {
+ font-family: "Varela Round", "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Helvetica, monospace;
+}
+span.p.code,
+p.p.code {
+ font-family: Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+}
+span.p.left,
+p.p.left {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: left;
+}
+span.p.center,
+p.p.center {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: center;
+}
+span.p.right,
+p.p.right {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ text-align: right;
+}
+span.p.small,
+p.p.small {
+ font-size: 0.875rem;
+}
+span.p.large,
+p.p.large {
+ font-size: 2.5rem;
+ line-height: 1.4;
+}
+span.p.huge,
+p.p.huge {
+ font-size: 4rem;
+ line-height: 1.4;
+}
+span.p.ultra,
+p.p.ultra {
+ font-size: 6rem;
+ line-height: 1.4;
+}
+span.p.small,
+p.p.small,
+span.p.large,
+p.p.large,
+span.p.huge,
+p.p.huge,
+span.p.ultra,
+p.p.ultra {
+ margin: 0;
+ padding: 0;
+}
+span.p.bold,
+p.p.bold {
+ font-weight: bold;
+}
+span.p.h1,
+p.p.h1,
+span.p.h2,
+p.p.h2 {
+ padding-bottom: 0.2rem;
+ font-weight: 500;
+}
+span.p.h1,
+p.p.h1 {
+ font-size: 1.5rem;
+ color: var(--color-h1);
+ padding-top: 2em;
+}
+span.p.h2,
+p.p.h2 {
+ font-size: 1.5rem;
+ color: var(--color-h2);
+ padding-top: 2em;
+ border-bottom: 1px solid rgba(68,68,68,0.1);
+}
+span.p.h3,
+p.p.h3 {
+ font-size: 1.25rem;
+ color: var(--color-h3);
+ padding-top: 2em;
+}
+span.p.h4,
+p.p.h4 {
+ font-size: 1.125rem;
+ color: var(--color-h4);
+ padding-top: 2em;
+}
+span.p.h5,
+p.p.h5 {
+ font-size: 1rem;
+ color: var(--color-h5);
+ padding-top: 1.5em;
+}
+span.p.red,
+p.p.red {
+ color: #fe5f58;
+}
+span.p.yellow,
+p.p.yellow {
+ color: #ffbd2b;
+}
+span.p.green,
+p.p.green {
+ color: #3dc550;
+}
+span.p.cyan,
+p.p.cyan {
+ color: #1bcdfc;
+}
+span.p.blue,
+p.p.blue {
+ color: #2196f3;
+}
+span.p.purple,
+p.p.purple {
+ color: #9c27b0;
+}
+span.p.gray,
+p.p.gray {
+ color: #999;
+}
+.swiper-container {
+ width: 100%;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ --gap-p: 2rem;
+}
+.swiper-container:not(.swiper-container-initialized) {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+div.swiper-slide {
+ text-align: center;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -webkit-box;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -webkit-flex;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ align-self: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-justify-content: center;
+ -khtml-justify-content: center;
+ -moz-justify-content: center;
+ -o-justify-content: center;
+ -ms-justify-content: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+ width: 50%;
+}
+div.swiper-slide img {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.swiper-container[width='max'] div.swiper-slide {
+ width: 100%;
+}
+.swiper-container[width='min'] div.swiper-slide {
+ width: 25%;
+}
+.swiper-button-prev,
+.swiper-button-next {
+ padding: 1rem 0.5rem;
+ margin-top: -2rem !important;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ background: rgba(255,255,255,0.25);
+ transition: background 0.2s ease-out;
+ -webkit-transition: background 0.2s ease-out;
+ -khtml-transition: background 0.2s ease-out;
+ -moz-transition: background 0.2s ease-out;
+ -o-transition: background 0.2s ease-out;
+ -ms-transition: background 0.2s ease-out;
+ --swiper-theme-color: #000 !important;
+}
+.swiper-button-prev:after,
+.swiper-button-next:after {
+ font-size: 1.2rem !important;
+ font-weight: 700 !important;
+}
+.swiper-button-prev:hover,
+.swiper-button-next:hover {
+ background: #fff !important;
+ --swiper-theme-color: #ff5722 !important;
+}
+.md .table {
+ overflow: auto;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.md .table table {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: table;
+ width: 100%;
+}
+div.tabs {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ position: relative;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ background: var(--color-card);
+ border: 1px solid rgba(68,68,68,0.2);
+ font-size: 0.9375rem;
+}
+div.tabs .highlight,
+div.tabs p,
+div.tabs ul,
+div.tabs ol,
+div.tabs div.note,
+div.tabs details {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+div.tabs ul.nav-tabs {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: -ms-flexbox /* TWEENER - IE 10 */;
+ display: -webkit-flex /* NEW - Chrome */;
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
+ display: flex;
+ overflow-x: auto;
+ white-space: nowrap;
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+ -khtml-justify-content: flex-start;
+ -moz-justify-content: flex-start;
+ -o-justify-content: flex-start;
+ -ms-justify-content: flex-start;
+ margin: 0 !important;
+ padding: 8px 8px 0 8px;
+ background: var(--color-block);
+ border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+ line-height: 1.5;
+}
+div.tabs ul.nav-tabs li.tab {
+ list-style-type: none;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.tabs ul.nav-tabs li.tab:last-child {
+ padding-right: 16px;
+}
+div.tabs ul.nav-tabs li.tab a {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ cursor: pointer;
+ border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+ padding: 8px;
+ text-align: center;
+ font-size: 0.875rem;
+ line-height: inherit;
+ font-weight: bold;
+ color: var(--color-meta);
+ border: 1px solid transparent;
+}
+div.tabs ul.nav-tabs li.tab a:hover {
+ color: var(--color-p);
+}
+div.tabs ul.nav-tabs li.tab a i {
+ pointer-events: none;
+}
+div.tabs ul.nav-tabs li.tab.active a {
+ cursor: default;
+ color: var(--color-p);
+ background: #fff;
+ border: 1px solid rgba(68,68,68,0.2);
+ border-bottom: 1px solid var(--color-card);
+}
+div.tabs .tab-content {
+ border-top: 1px solid rgba(68,68,68,0.2);
+ margin-top: -1px;
+}
+div.tabs .tab-content .tab-pane {
+ padding: 16px;
+}
+div.tabs .tab-content .tab-pane:not(.active) {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+div.tabs .tab-content .tab-pane.active {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+}
+div.tabs .tab-content .tab-pane > p:first-child,
+div.tabs .tab-content .tab-pane > .tabs:first-child,
+div.tabs .tab-content .tab-pane > ul:first-child,
+div.tabs .tab-content .tab-pane > ol:first-child,
+div.tabs .tab-content .tab-pane > .highlight:first-child,
+div.tabs .tab-content .tab-pane > .note:first-child {
+ margin-top: 0;
+}
+div.tabs .tab-content .tab-pane > p:last-child,
+div.tabs .tab-content .tab-pane > .tabs:last-child,
+div.tabs .tab-content .tab-pane > ul:last-child,
+div.tabs .tab-content .tab-pane > ol:last-child,
+div.tabs .tab-content .tab-pane > .highlight:last-child,
+div.tabs .tab-content .tab-pane > .note:last-child {
+ margin-bottom: 0;
+}
+.article del {
+ color: #8e8e8e;
+ text-decoration-color: #8e8e8e;
+}
+.article u {
+ color: var(--color-text);
+ text-decoration: none;
+ border-bottom: 1px solid #fe5f58;
+}
+.article emp {
+ color: var(--color-text);
+ border-bottom: 4px dotted #fe5f58;
+}
+.article wavy {
+ color: var(--color-text);
+ text-decoration-style: wavy;
+ text-decoration-line: underline;
+ text-decoration-color: #fe5f58;
+}
+.article psw {
+ color: transparent;
+ background: #a1a1a1;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.article psw:hover {
+ color: var(--color-p);
+ background: none;
+}
+.article kbd {
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border: 1px solid #d2d2d2;
+ border-bottom-width: 2px;
+ background: #fafafa;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+div.timenode {
+ position: relative;
+}
+div.timenode:before,
+div.timenode:after {
+ content: '';
+ z-index: 1;
+ position: absolute;
+ background: rgba(61,217,182,0.5);
+ width: 2px;
+ left: 7px;
+}
+div.timenode:before {
+ top: 0px;
+ height: 6px;
+}
+div.timenode:after {
+ top: 26px;
+ height: calc(100% - 26px);
+}
+div.timenode:last-child:after {
+ height: calc(100% - 26px - 16px);
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+div.timenode .meta,
+div.timenode .body {
+ max-width: calc(100% - 24px);
+}
+div.timenode .meta {
+ position: relative;
+ color: var(--color-meta);
+ font-size: 0.875rem;
+ line-height: 32px;
+ height: 32px;
+}
+div.timenode .meta:before,
+div.timenode .meta:after {
+ content: '';
+ position: absolute;
+ top: 8px;
+ z-index: 2;
+}
+div.timenode .meta:before {
+ background: rgba(61,217,182,0.5);
+ width: 16px;
+ height: 16px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+div.timenode .meta:after {
+ background: #3dd9b6;
+ margin-left: 2px;
+ margin-top: 2px;
+ width: 12px;
+ height: 12px;
+ border-radius: 6px;
+ -webkit-border-radius: 6px;
+ transform: scale(0.5);
+ -webkit-transform: scale(0.5);
+ -khtml-transform: scale(0.5);
+ -moz-transform: scale(0.5);
+ -o-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+div.timenode .meta p {
+ font-weight: bold;
+ margin: 0 0 0 24px;
+}
+div.timenode .body {
+ margin: 4px 0 16px 24px;
+ padding: 16px;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ background: var(--color-block);
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+}
+div.timenode .body:empty {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+div.timenode .body >*:first-child {
+ margin-top: 0.25em;
+}
+div.timenode .body >*:last-child {
+ margin-bottom: 0.25em;
+}
+div.timenode .body .highlight {
+ border: 1px solid #e4e4e4;
+}
+div.timenode:hover .meta {
+ color: var(--color-text);
+}
+div.timenode:hover .meta:before {
+ background: rgba(255,87,34,0.5);
+}
+div.timenode:hover .meta:after {
+ background: #ff5722;
+ transform: scale(1);
+ -webkit-transform: scale(1);
+ -khtml-transform: scale(1);
+ -moz-transform: scale(1);
+ -o-transform: scale(1);
+ -ms-transform: scale(1);
+}
+.article mjx-container {
+ font-family: Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+ padding: 16px 8px;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ min-width: 0 !important;
+}
+.article mjx-container[jax="CHTML"][display="true"],
+.article .has-jax {
+ overflow: auto hidden;
+}
+.article mjx-container + br {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+.fa.red,
+.fas.red,
+.far.red,
+.fad.red,
+.fal.red,
+.fa-solid.red,
+.fa-regular.red,
+.fa-duotone.red,
+.fa-light.red,
+.fa-thin.red,
+.iziToast>.iziToast-body .iziToast-icon.red {
+ color: #f44336;
+}
+.fa.pink,
+.fas.pink,
+.far.pink,
+.fad.pink,
+.fal.pink,
+.fa-solid.pink,
+.fa-regular.pink,
+.fa-duotone.pink,
+.fa-light.pink,
+.fa-thin.pink,
+.iziToast>.iziToast-body .iziToast-icon.pink {
+ color: #e91e63;
+}
+.fa.purple,
+.fas.purple,
+.far.purple,
+.fad.purple,
+.fal.purple,
+.fa-solid.purple,
+.fa-regular.purple,
+.fa-duotone.purple,
+.fa-light.purple,
+.fa-thin.purple,
+.iziToast>.iziToast-body .iziToast-icon.purple {
+ color: #9c27b0;
+}
+.fa.indigo,
+.fas.indigo,
+.far.indigo,
+.fad.indigo,
+.fal.indigo,
+.fa-solid.indigo,
+.fa-regular.indigo,
+.fa-duotone.indigo,
+.fa-light.indigo,
+.fa-thin.indigo,
+.iziToast>.iziToast-body .iziToast-icon.indigo {
+ color: #3f51b5;
+}
+.fa.light-blue,
+.fas.light-blue,
+.far.light-blue,
+.fad.light-blue,
+.fal.light-blue,
+.fa-solid.light-blue,
+.fa-regular.light-blue,
+.fa-duotone.light-blue,
+.fa-light.light-blue,
+.fa-thin.light-blue,
+.iziToast>.iziToast-body .iziToast-icon.light-blue {
+ color: #4ba7ee;
+}
+.fa.deep-blue,
+.fas.deep-blue,
+.far.deep-blue,
+.fad.deep-blue,
+.fal.deep-blue,
+.fa-solid.deep-blue,
+.fa-regular.deep-blue,
+.fa-duotone.deep-blue,
+.fa-light.deep-blue,
+.fa-thin.deep-blue,
+.iziToast>.iziToast-body .iziToast-icon.deep-blue {
+ color: #3367d6;
+}
+.fa.teal,
+.fas.teal,
+.far.teal,
+.fad.teal,
+.fal.teal,
+.fa-solid.teal,
+.fa-regular.teal,
+.fa-duotone.teal,
+.fa-light.teal,
+.fa-thin.teal,
+.iziToast>.iziToast-body .iziToast-icon.teal {
+ color: #009688;
+}
+.fa.light-green,
+.fas.light-green,
+.far.light-green,
+.fad.light-green,
+.fal.light-green,
+.fa-solid.light-green,
+.fa-regular.light-green,
+.fa-duotone.light-green,
+.fa-light.light-green,
+.fa-thin.light-green,
+.iziToast>.iziToast-body .iziToast-icon.light-green {
+ color: #8bc34a;
+}
+.fa.orange,
+.fas.orange,
+.far.orange,
+.fad.orange,
+.fal.orange,
+.fa-solid.orange,
+.fa-regular.orange,
+.fa-duotone.orange,
+.fa-light.orange,
+.fa-thin.orange,
+.iziToast>.iziToast-body .iziToast-icon.orange {
+ color: #ff9800;
+}
+.fa.deep-orange,
+.fas.deep-orange,
+.far.deep-orange,
+.fad.deep-orange,
+.fal.deep-orange,
+.fa-solid.deep-orange,
+.fa-regular.deep-orange,
+.fa-duotone.deep-orange,
+.fa-light.deep-orange,
+.fa-thin.deep-orange,
+.iziToast>.iziToast-body .iziToast-icon.deep-orange {
+ color: #ff5722;
+}
+.fa.brown,
+.fas.brown,
+.far.brown,
+.fad.brown,
+.fal.brown,
+.fa-solid.brown,
+.fa-regular.brown,
+.fa-duotone.brown,
+.fa-light.brown,
+.fa-thin.brown,
+.iziToast>.iziToast-body .iziToast-icon.brown {
+ color: #795548;
+}
+.fa.blue-grey,
+.fas.blue-grey,
+.far.blue-grey,
+.fad.blue-grey,
+.fal.blue-grey,
+.fa-solid.blue-grey,
+.fa-regular.blue-grey,
+.fa-duotone.blue-grey,
+.fa-light.blue-grey,
+.fa-thin.blue-grey,
+.iziToast>.iziToast-body .iziToast-icon.blue-grey {
+ color: #607d8b;
+}
+.fa.yellow,
+.fas.yellow,
+.far.yellow,
+.fad.yellow,
+.fal.yellow,
+.fa-solid.yellow,
+.fa-regular.yellow,
+.fa-duotone.yellow,
+.fa-light.yellow,
+.fa-thin.yellow,
+.iziToast>.iziToast-body .iziToast-icon.yellow {
+ color: #fcec60;
+}
+.fa.TURQUOISE,
+.fas.TURQUOISE,
+.far.TURQUOISE,
+.fad.TURQUOISE,
+.fal.TURQUOISE,
+.fa-solid.TURQUOISE,
+.fa-regular.TURQUOISE,
+.fa-duotone.TURQUOISE,
+.fa-light.TURQUOISE,
+.fa-thin.TURQUOISE,
+.iziToast>.iziToast-body .iziToast-icon.TURQUOISE {
+ color: #1abc9c;
+}
+.fa.EMERALD,
+.fas.EMERALD,
+.far.EMERALD,
+.fad.EMERALD,
+.fal.EMERALD,
+.fa-solid.EMERALD,
+.fa-regular.EMERALD,
+.fa-duotone.EMERALD,
+.fa-light.EMERALD,
+.fa-thin.EMERALD,
+.iziToast>.iziToast-body .iziToast-icon.EMERALD {
+ color: #2ecc71;
+}
+.fa.PETERRIVE,
+.fas.PETERRIVE,
+.far.PETERRIVE,
+.fad.PETERRIVE,
+.fal.PETERRIVE,
+.fa-solid.PETERRIVE,
+.fa-regular.PETERRIVE,
+.fa-duotone.PETERRIVE,
+.fa-light.PETERRIVE,
+.fa-thin.PETERRIVE,
+.iziToast>.iziToast-body .iziToast-icon.PETERRIVE {
+ color: #3498db;
+}
+.fa.AMETHYST,
+.fas.AMETHYST,
+.far.AMETHYST,
+.fad.AMETHYST,
+.fal.AMETHYST,
+.fa-solid.AMETHYST,
+.fa-regular.AMETHYST,
+.fa-duotone.AMETHYST,
+.fa-light.AMETHYST,
+.fa-thin.AMETHYST,
+.iziToast>.iziToast-body .iziToast-icon.AMETHYST {
+ color: #9b59b6;
+}
+.fa.WETASPHALT,
+.fas.WETASPHALT,
+.far.WETASPHALT,
+.fad.WETASPHALT,
+.fal.WETASPHALT,
+.fa-solid.WETASPHALT,
+.fa-regular.WETASPHALT,
+.fa-duotone.WETASPHALT,
+.fa-light.WETASPHALT,
+.fa-thin.WETASPHALT,
+.iziToast>.iziToast-body .iziToast-icon.WETASPHALT {
+ color: #34495e;
+}
+.fa.GREENSEA,
+.fas.GREENSEA,
+.far.GREENSEA,
+.fad.GREENSEA,
+.fal.GREENSEA,
+.fa-solid.GREENSEA,
+.fa-regular.GREENSEA,
+.fa-duotone.GREENSEA,
+.fa-light.GREENSEA,
+.fa-thin.GREENSEA,
+.iziToast>.iziToast-body .iziToast-icon.GREENSEA {
+ color: #16a085;
+}
+.fa.NEPHRITIS,
+.fas.NEPHRITIS,
+.far.NEPHRITIS,
+.fad.NEPHRITIS,
+.fal.NEPHRITIS,
+.fa-solid.NEPHRITIS,
+.fa-regular.NEPHRITIS,
+.fa-duotone.NEPHRITIS,
+.fa-light.NEPHRITIS,
+.fa-thin.NEPHRITIS,
+.iziToast>.iziToast-body .iziToast-icon.NEPHRITIS {
+ color: #27ae60;
+}
+.fa.BELIZEHOLE,
+.fas.BELIZEHOLE,
+.far.BELIZEHOLE,
+.fad.BELIZEHOLE,
+.fal.BELIZEHOLE,
+.fa-solid.BELIZEHOLE,
+.fa-regular.BELIZEHOLE,
+.fa-duotone.BELIZEHOLE,
+.fa-light.BELIZEHOLE,
+.fa-thin.BELIZEHOLE,
+.iziToast>.iziToast-body .iziToast-icon.BELIZEHOLE {
+ color: #2980b9;
+}
+.fa.WISTERIA,
+.fas.WISTERIA,
+.far.WISTERIA,
+.fad.WISTERIA,
+.fal.WISTERIA,
+.fa-solid.WISTERIA,
+.fa-regular.WISTERIA,
+.fa-duotone.WISTERIA,
+.fa-light.WISTERIA,
+.fa-thin.WISTERIA,
+.iziToast>.iziToast-body .iziToast-icon.WISTERIA {
+ color: #8e44ad;
+}
+.fa.MIDNIGHTBLUE,
+.fas.MIDNIGHTBLUE,
+.far.MIDNIGHTBLUE,
+.fad.MIDNIGHTBLUE,
+.fal.MIDNIGHTBLUE,
+.fa-solid.MIDNIGHTBLUE,
+.fa-regular.MIDNIGHTBLUE,
+.fa-duotone.MIDNIGHTBLUE,
+.fa-light.MIDNIGHTBLUE,
+.fa-thin.MIDNIGHTBLUE,
+.iziToast>.iziToast-body .iziToast-icon.MIDNIGHTBLUE {
+ color: #2c3e50;
+}
+.fa.SUNFLOWER,
+.fas.SUNFLOWER,
+.far.SUNFLOWER,
+.fad.SUNFLOWER,
+.fal.SUNFLOWER,
+.fa-solid.SUNFLOWER,
+.fa-regular.SUNFLOWER,
+.fa-duotone.SUNFLOWER,
+.fa-light.SUNFLOWER,
+.fa-thin.SUNFLOWER,
+.iziToast>.iziToast-body .iziToast-icon.SUNFLOWER {
+ color: #f1c40f;
+}
+.fa.CARROT,
+.fas.CARROT,
+.far.CARROT,
+.fad.CARROT,
+.fal.CARROT,
+.fa-solid.CARROT,
+.fa-regular.CARROT,
+.fa-duotone.CARROT,
+.fa-light.CARROT,
+.fa-thin.CARROT,
+.iziToast>.iziToast-body .iziToast-icon.CARROT {
+ color: #e67e22;
+}
+.fa.ALIZARIN,
+.fas.ALIZARIN,
+.far.ALIZARIN,
+.fad.ALIZARIN,
+.fal.ALIZARIN,
+.fa-solid.ALIZARIN,
+.fa-regular.ALIZARIN,
+.fa-duotone.ALIZARIN,
+.fa-light.ALIZARIN,
+.fa-thin.ALIZARIN,
+.iziToast>.iziToast-body .iziToast-icon.ALIZARIN {
+ color: #e74c3c;
+}
+.fa.CLOUDS,
+.fas.CLOUDS,
+.far.CLOUDS,
+.fad.CLOUDS,
+.fal.CLOUDS,
+.fa-solid.CLOUDS,
+.fa-regular.CLOUDS,
+.fa-duotone.CLOUDS,
+.fa-light.CLOUDS,
+.fa-thin.CLOUDS,
+.iziToast>.iziToast-body .iziToast-icon.CLOUDS {
+ color: #ecf0f1;
+}
+.fa.CONCRETE,
+.fas.CONCRETE,
+.far.CONCRETE,
+.fad.CONCRETE,
+.fal.CONCRETE,
+.fa-solid.CONCRETE,
+.fa-regular.CONCRETE,
+.fa-duotone.CONCRETE,
+.fa-light.CONCRETE,
+.fa-thin.CONCRETE,
+.iziToast>.iziToast-body .iziToast-icon.CONCRETE {
+ color: #95a5a6;
+}
+.fa.ORANGE,
+.fas.ORANGE,
+.far.ORANGE,
+.fad.ORANGE,
+.fal.ORANGE,
+.fa-solid.ORANGE,
+.fa-regular.ORANGE,
+.fa-duotone.ORANGE,
+.fa-light.ORANGE,
+.fa-thin.ORANGE,
+.iziToast>.iziToast-body .iziToast-icon.ORANGE {
+ color: #f39c12;
+}
+.fa.PUMPKIN,
+.fas.PUMPKIN,
+.far.PUMPKIN,
+.fad.PUMPKIN,
+.fal.PUMPKIN,
+.fa-solid.PUMPKIN,
+.fa-regular.PUMPKIN,
+.fa-duotone.PUMPKIN,
+.fa-light.PUMPKIN,
+.fa-thin.PUMPKIN,
+.iziToast>.iziToast-body .iziToast-icon.PUMPKIN {
+ color: #d35400;
+}
+.fa.POMEGRANATE,
+.fas.POMEGRANATE,
+.far.POMEGRANATE,
+.fad.POMEGRANATE,
+.fal.POMEGRANATE,
+.fa-solid.POMEGRANATE,
+.fa-regular.POMEGRANATE,
+.fa-duotone.POMEGRANATE,
+.fa-light.POMEGRANATE,
+.fa-thin.POMEGRANATE,
+.iziToast>.iziToast-body .iziToast-icon.POMEGRANATE {
+ color: #c0392b;
+}
+.fa.SILVER,
+.fas.SILVER,
+.far.SILVER,
+.fad.SILVER,
+.fal.SILVER,
+.fa-solid.SILVER,
+.fa-regular.SILVER,
+.fa-duotone.SILVER,
+.fa-light.SILVER,
+.fa-thin.SILVER,
+.iziToast>.iziToast-body .iziToast-icon.SILVER {
+ color: #bdc3c7;
+}
+.fa.ASBESTOS,
+.fas.ASBESTOS,
+.far.ASBESTOS,
+.fad.ASBESTOS,
+.fal.ASBESTOS,
+.fa-solid.ASBESTOS,
+.fa-regular.ASBESTOS,
+.fa-duotone.ASBESTOS,
+.fa-light.ASBESTOS,
+.fa-thin.ASBESTOS,
+.iziToast>.iziToast-body .iziToast-icon.ASBESTOS {
+ color: #7f8c8d;
+}
+.highlight {
+ position: relative;
+}
+.btn-copy {
+ z-index: 1;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: inline-block;
+ cursor: pointer;
+ border: none;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -webkit-appearance: none;
+ font-family: Menlo, Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding: 4px 8px;
+ color: var(--color-meta);
+ background: var(--color-block);
+ border-radius: 3px;
+ -webkit-border-radius: 3px;
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
+ position: absolute;
+ top: 1px;
+ right: 1px;
+ opacity: 0;
+ -webkit-opacity: 0;
+ -moz-opacity: 0;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.btn-copy >i {
+ margin-right: 4px;
+}
+.btn-copy:hover {
+ color: #ff5722;
+ background: #ffeee8;
+}
+.highlight:hover .btn-copy {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+}
+.article pre:hover .btn-copy {
+ opacity: 1;
+ -webkit-opacity: 1;
+ -moz-opacity: 1;
+}
+.hljs:before,
+.highlight:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ color: var(--color-meta);
+ font-size: 13px;
+ padding: 4px 8px;
+}
+.hljs.md:before,
+.highlight.md:before,
+.hljs.markdown:before,
+.highlight.markdown:before {
+ content: "md";
+}
+.hljs.yaml:before,
+.highlight.yaml:before {
+ content: "YAML";
+}
+.hljs.json:before,
+.highlight.json:before {
+ content: "JSON";
+}
+.hljs.html:before,
+.highlight.html:before {
+ content: "HTML";
+}
+.hljs.js:before,
+.highlight.js:before,
+.hljs.javascript:before,
+.highlight.javascript:before {
+ content: "JS";
+}
+.hljs.css:before,
+.highlight.css:before {
+ content: "CSS";
+}
+.hljs.less:before,
+.highlight.less:before {
+ content: "Less";
+}
+.hljs.stylus:before,
+.highlight.stylus:before {
+ content: "Stylus";
+}
+.hljs.bash:before,
+.highlight.bash:before {
+ content: "bash";
+}
+.hljs.shell:before,
+.highlight.shell:before {
+ content: "shell";
+}
+.hljs.sh:before,
+.highlight.sh:before {
+ content: "sh";
+}
+.hljs.ini:before,
+.highlight.ini:before {
+ content: "ini";
+}
+.hljs.c:before,
+.highlight.c:before {
+ content: "C";
+}
+.hljs.cpp:before,
+.highlight.cpp:before {
+ content: "C++";
+}
+.hljs.objc:before,
+.highlight.objc:before,
+.hljs.objectivec:before,
+.highlight.objectivec:before {
+ content: "Objective-C";
+}
+.hljs.swift:before,
+.highlight.swift:before {
+ content: "Swift";
+}
+.hljs.java:before,
+.highlight.java:before {
+ content: "Java";
+}
+.hljs.python:before,
+.highlight.python:before {
+ content: "Python";
+}
+.hljs.php:before,
+.highlight.php:before {
+ content: "PHP";
+}
+.hljs.rust:before,
+.highlight.rust:before {
+ content: "Rust";
+}
+.hljs.sql:before,
+.highlight.sql:before {
+ content: "SQL";
+}
+.hljs.ruby:before,
+.highlight.ruby:before {
+ content: "Ruby";
+}
+.hljs.makefile:before,
+.highlight.makefile:before {
+ content: "Makefile";
+}
+.hljs.go:before,
+.highlight.go:before {
+ content: "Go";
+}
+.hljs.typescript:before,
+.highlight.typescript:before {
+ content: "TypeScript";
+}
+.highlight pre .line,
+.highlight pre .params {
+ color: rgba(68,68,68,0.9);
+}
+.highlight pre .line .addition {
+ color: #3fa33f;
+}
+.highlight pre .line .deletion {
+ color: #ee2b29;
+}
+.highlight pre .marked {
+ background-color: rgba(254,213,66,0.4);
+ padding: 2px 8px 2px 0;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ width: 100%;
+}
+.highlight pre .title,
+.highlight pre .attr,
+.highlight pre .attribute {
+ color: #3f51b5;
+}
+.highlight pre .comment {
+ color: var(--color-meta);
+}
+.highlight pre .keyword,
+.highlight pre .meta-keyword,
+.highlight pre .javascript .function {
+ color: #9c27b0;
+}
+.highlight pre .type,
+.highlight pre .built_in,
+.highlight pre .tag .name {
+ color: #4ba7ee;
+}
+.highlight pre .variable,
+.highlight pre .regexp,
+.highlight pre .ruby .constant,
+.highlight pre .xml .tag .title,
+.highlight pre .xml .pi,
+.highlight pre .xml .doctype,
+.highlight pre .html .doctype,
+.highlight pre .css .id,
+.highlight pre .css .class,
+.highlight pre .css .pseudo {
+ color: #fd8607;
+}
+.highlight pre .number,
+.highlight pre .preprocessor,
+.highlight pre .literal,
+.highlight pre .constant {
+ color: #fd8607;
+}
+.highlight pre .class,
+.highlight pre .ruby .class .title,
+.highlight pre .css .rules .attribute {
+ color: #ff9800;
+}
+.highlight pre .string,
+.highlight pre .meta-string {
+ color: #449e48;
+}
+.highlight pre .value,
+.highlight pre .inheritance,
+.highlight pre .header,
+.highlight pre .ruby .symbol,
+.highlight pre .xml .cdata {
+ color: #4caf50;
+}
+.highlight pre .css .hexcolor {
+ color: #6cc;
+}
+.highlight pre .function,
+.highlight pre .python .decorator,
+.highlight pre .python .title,
+.highlight pre .ruby .function .title,
+.highlight pre .ruby .title .keyword,
+.highlight pre .perl .sub,
+.highlight pre .javascript .title,
+.highlight pre .coffeescript .title {
+ color: #69c;
+}
+.highlight.html .line .tag .name,
+.highlight.css .line .tag .name,
+.highlight.less .line .tag .name,
+.highlight.stylus .line .tag .name,
+.highlight.html .line .selector-tag,
+.highlight.css .line .selector-tag,
+.highlight.less .line .selector-tag,
+.highlight.stylus .line .selector-tag {
+ color: #ee2b29;
+}
+.highlight.html .line .selector-class,
+.highlight.css .line .selector-class,
+.highlight.less .line .selector-class,
+.highlight.stylus .line .selector-class,
+.highlight.html .line .selector-attr,
+.highlight.css .line .selector-attr,
+.highlight.less .line .selector-attr,
+.highlight.stylus .line .selector-attr {
+ color: #fd8607;
+}
+.highlight.html .line .attribute,
+.highlight.css .line .attribute,
+.highlight.less .line .attribute,
+.highlight.stylus .line .attribute {
+ color: #3f51b5;
+}
+.highlight.html .line .number,
+.highlight.css .line .number,
+.highlight.less .line .number,
+.highlight.stylus .line .number {
+ color: #17afca;
+}
+.highlight.objc .line .meta,
+.highlight.objectivec .line .meta,
+.highlight.swift .line .meta,
+.highlight.c .line .meta {
+ color: #9c27b0;
+}
+.highlight.objc .line .meta-string,
+.highlight.objectivec .line .meta-string,
+.highlight.swift .line .meta-string,
+.highlight.c .line .meta-string,
+.highlight.objc .line .string,
+.highlight.objectivec .line .string,
+.highlight.swift .line .string,
+.highlight.c .line .string {
+ color: #fb3f1b;
+}
+.highlight.objc .line .class,
+.highlight.objectivec .line .class,
+.highlight.swift .line .class,
+.highlight.c .line .class {
+ color: rgba(68,68,68,0.9);
+}
+.highlight.objc .line .class .title,
+.highlight.objectivec .line .class .title,
+.highlight.swift .line .class .title,
+.highlight.c .line .class .title {
+ color: #1e80f0;
+}
+.highlight.objc .line .comment,
+.highlight.objectivec .line .comment,
+.highlight.swift .line .comment,
+.highlight.c .line .comment {
+ color: #3fa33f;
+}
+.highlight.json .line .attr {
+ color: #e24f5a;
+}
+.highlight.json .line .literal {
+ color: #3f51b5;
+}
+.highlight.yaml .line .attr {
+ color: #e24f5a;
+}
+pre {
+ position: relative;
+}
+.hljs {
+ margin: -16px !important;
+ padding: 16px !important;
+ -webkit-font-smoothing: auto;
+ -moz-osx-font-smoothing: auto;
+}
+.hljs::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+.hljs::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+.hljs::-webkit-scrollbar-thumb {
+ background: #3dd9b6;
+ cursor: pointer;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+.hljs::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+}
+.highlight {
+ position: relative;
+ width: 100%;
+ margin: 1em 0;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ background: var(--color-block);
+ font-size: 0.8125rem;
+ font-family: Menlo, UbuntuMono, Monaco, monospace, courier, sans-serif;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ line-height: 1.5;
+ -webkit-font-smoothing: auto;
+ -moz-osx-font-smoothing: auto;
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+}
+.highlight:hover {
+ background: var(--color-codeblock);
+}
+.highlight:hover figcaption {
+ transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -khtml-transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -o-transition: all 0.28s ease;
+ -ms-transition: all 0.28s ease;
+ background: #ffeed2;
+}
+.highlight:hover .gutter {
+ background: #ffedd0;
+}
+.highlight figcaption {
+ font-size: 13px;
+ position: sticky;
+ left: 0;
+ padding: 4px 8px 4px 8px;
+ background: #eaeaea;
+ border-top-left-radius: calc(4px - 1px);
+ border-top-right-radius: calc(4px - 1px);
+}
+.highlight >table {
+ overflow: auto;
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: block;
+ margin: 0;
+ background-color: transparent;
+ border: none;
+}
+.highlight >table::-webkit-scrollbar {
+ height: 4px;
+ width: 4px;
+}
+.highlight >table::-webkit-scrollbar-track-piece {
+ background: transparent;
+}
+.highlight >table::-webkit-scrollbar-thumb {
+ background: transparent;
+ cursor: pointer;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+.highlight >table:hover::-webkit-scrollbar-thumb {
+ background: rgba(68,68,68,0.5);
+}
+.highlight >table:hover::-webkit-scrollbar-thumb:hover {
+ background: #ff5722;
+}
+.highlight >table td,
+.highlight >table th {
+ padding: 0;
+ border: none;
+ line-height: 1.5;
+}
+.highlight >table tr {
+ background-color: transparent;
+}
+.highlight >table tr:hover {
+ background-color: transparent;
+}
+.highlight >table pre {
+ overflow-y: hidden;
+}
+.highlight >table .gutter {
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ padding: 0 12px;
+ text-align: right;
+ border-width: 0;
+ margin-left: 0;
+ position: sticky;
+ left: 0;
+ z-index: 1;
+ background: #e9e9e9;
+}
+.highlight >table .gutter pre {
+ color: var(--color-meta);
+}
+.highlight >table pre {
+ background: transparent;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+.highlight >table pre .code:before {
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
+ display: none;
+}
+.highlight >table .code {
+ padding: 20px 16px;
+ vertical-align: top;
+ background-color: transparent;
+}
+.highlight >table .code:before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ color: var(--color-meta);
+ font-size: 13px;
+ padding: 4px 8px;
+}
+.iziToast-texts {
+ max-width: 300px !important;
+ min-width: 200px !important;
+}
+@media screen and (max-width: 500px) {
+ .iziToast-texts {
+ max-width: unset !important;
+ min-width: unset !important;
+ }
+}
+.iziToast-title {
+ margin-bottom: 6px !important;
+ font-size: 1rem !important;
+}
+.iziToast-message {
+ word-break: break-all !important;
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6e3cf91
--- /dev/null
+++ b/index.html
@@ -0,0 +1,4034 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
+Qu...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/app.js b/js/app.js
new file mode 100644
index 0000000..db5f790
--- /dev/null
+++ b/js/app.js
@@ -0,0 +1,1223 @@
+document.addEventListener("DOMContentLoaded", function () {
+ volantis.requestAnimationFrame(() => {
+ VolantisApp.init();
+ VolantisApp.subscribe();
+ VolantisFancyBox.init();
+ highlightKeyWords.startFromURL();
+ locationHash();
+
+ volantis.pjax.push(() => {
+ VolantisApp.pjaxReload();
+ VolantisFancyBox.init();
+ sessionStorage.setItem("domTitle", document.title);
+ highlightKeyWords.startFromURL();
+ }, 'app.js');
+ volantis.pjax.send(() => {
+ volantis.dom.switcher.removeClass('active'); // 关闭移动端激活的搜索框
+ volantis.dom.header.removeClass('z_search-open'); // 关闭移动端激活的搜索框
+ volantis.dom.wrapper.removeClass('sub'); // 跳转页面时关闭二级导航
+ volantis.EventListener.remove() // 移除事件监听器 see: layout/_partial/scripts/global.ejs
+ }, 'app.js');
+ });
+});
+
+/* 锚点定位 */
+const locationHash = () => {
+ if (window.location.hash) {
+ let locationID = decodeURI(window.location.hash.split('#')[1]).replace(/\ /g, '-');
+ let target = document.getElementById(locationID);
+ if (target) {
+ setTimeout(() => {
+ if (window.location.hash.startsWith('#fn')) { // hexo-reference https://github.com/volantis-x/hexo-theme-volantis/issues/647
+ volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant', observer: true })
+ } else {
+ // 锚点中上半部有大片空白 高度大概是 volantis.dom.header.offsetHeight
+ volantis.scroll.to(target, { addTop: 5, behavior: 'instant', observer: true })
+ }
+ }, 1000)
+ }
+ }
+}
+Object.freeze(locationHash);
+
+/* Main */
+const VolantisApp = (() => {
+ const fn = {},
+ COPYHTML = 'COPY ';
+ let scrollCorrection = 80;
+
+ fn.init = () => {
+ if (volantis.dom.header) {
+ scrollCorrection = volantis.dom.header.clientHeight + 16;
+ }
+
+ window.onresize = () => {
+ if (document.documentElement.clientWidth < 500) {
+ volantis.isMobile = 1;
+ } else {
+ volantis.isMobile = 0;
+ }
+ if (volantis.isMobile != volantis.isMobileOld) {
+ fn.setGlobalHeaderMenuEvent();
+ fn.setHeader();
+ fn.setHeaderSearch();
+ }
+ }
+ volantis.scroll.push(fn.scrollEventCallBack, "scrollEventCallBack")
+ }
+
+ fn.event = () => {
+ volantis.dom.$(document.getElementById("scroll-down"))?.on('click', function () {
+ fn.scrolltoElement(volantis.dom.bodyAnchor);
+ });
+
+ // 如果 sidebar 为空,隐藏 sidebar。
+ const sidebar = document.querySelector("#l_side")
+ if (sidebar) {
+ const sectionList = sidebar.querySelectorAll("section")
+ if (!sectionList.length) {
+ document.querySelector("#l_main").classList.add("no_sidebar")
+ }
+ }
+
+ // 站点信息 最后活动日期
+ if (volantis.GLOBAL_CONFIG.sidebar.for_page.includes('webinfo') || volantis.GLOBAL_CONFIG.sidebar.for_post.includes('webinfo')) {
+ const lastupd = volantis.GLOBAL_CONFIG.sidebar.webinfo.lastupd;
+ if (!!document.getElementById('last-update-show') && lastupd.enable && lastupd.friendlyShow) {
+ document.getElementById('last-update-show').innerHTML = fn.utilTimeAgo(volantis.GLOBAL_CONFIG.lastupdate);
+ }
+ }
+
+ // 站点信息 运行时间
+ if (!!document.getElementById('webinfo-runtime-count')) {
+ let BirthDay = new Date(volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.data);
+ let timeold = (new Date().getTime() - BirthDay.getTime());
+ let daysold = Math.floor(timeold / (24 * 60 * 60 * 1000));
+ document.getElementById('webinfo-runtime-count').innerHTML = `${daysold} ${volantis.GLOBAL_CONFIG.sidebar.webinfo.runtime.unit}`;
+ }
+
+ // 消息提示 复制时弹出
+ document.body.oncopy = function () {
+ fn.messageCopyright()
+ };
+ }
+
+ fn.restData = () => {
+ scrollCorrection = volantis.dom.header ? volantis.dom.header.clientHeight + 16 : 80;
+ }
+
+ fn.setIsMobile = () => {
+ if (document.documentElement.clientWidth < 500) {
+ volantis.isMobile = 1;
+ volantis.isMobileOld = 1;
+ } else {
+ volantis.isMobile = 0;
+ volantis.isMobileOld = 0;
+ }
+ }
+
+ // 校正页面定位(被导航栏挡住的区域)
+ fn.scrolltoElement = (elem, correction = scrollCorrection) => {
+ volantis.scroll.to(elem, {
+ top: elem.offsetTop - correction
+ })
+ }
+
+ // 滚动事件回调们
+ fn.scrollEventCallBack = () => {
+ // 【移动端 PC】//////////////////////////////////////////////////////////////////////
+
+ // 显示/隐藏 Header导航 topBtn 【移动端 PC】
+ const showHeaderPoint = volantis.dom.bodyAnchor.offsetTop - scrollCorrection;
+ const scrollTop = volantis.scroll.getScrollTop(); // 滚动条距离顶部的距离
+
+ // topBtn
+ if (volantis.dom.topBtn) {
+ if (scrollTop > volantis.dom.bodyAnchor.offsetTop) {
+ volantis.dom.topBtn.addClass('show');
+ // 向上滚动高亮 topBtn
+ if (volantis.scroll.del > 0) {
+ volantis.dom.topBtn.removeClass('hl');
+ } else {
+ volantis.dom.topBtn.addClass('hl');
+ }
+ } else {
+ volantis.dom.topBtn.removeClass('show').removeClass('hl');
+ }
+ }
+
+ // Header导航
+ if (volantis.dom.header) {
+ if (scrollTop - showHeaderPoint > -1) {
+ volantis.dom.header.addClass('show');
+ } else {
+ volantis.dom.header.removeClass('show');
+ }
+ }
+
+ // 决定一二级导航栏的切换 【向上滚动切换为一级导航栏;向下滚动切换为二级导航栏】 【移动端 PC】
+ if (pdata.ispage && volantis.dom.wrapper) {
+ if (volantis.scroll.del > 0 && scrollTop > 100) { // 向下滚动
+ volantis.dom.wrapper.addClass('sub'); // <---- 二级导航显示
+ } else if (volantis.scroll.del < 0) { // 向上滚动
+ volantis.dom.wrapper.removeClass('sub'); // <---- 取消二级导航显示 一级导航显示
+ }
+ }
+
+ // 【移动端】//////////////////////////////////////////////////////////////////////
+ if (volantis.isMobile) {
+ // 【移动端】 页面滚动 隐藏 移动端toc目录按钮
+ if (pdata.ispage && volantis.dom.tocTarget && volantis.dom.toc) {
+ volantis.dom.tocTarget.removeClass('active');
+ volantis.dom.toc.removeClass('active');
+ }
+ // 【移动端】 滚动时隐藏子菜单
+ if (volantis.dom.mPhoneList) {
+ volantis.dom.mPhoneList.forEach(function (e) {
+ volantis.dom.$(e).hide();
+ })
+ }
+ }
+ }
+
+ // 设置滚动锚点
+ fn.setScrollAnchor = () => {
+ // click topBtn 滚动至bodyAnchor 【移动端 PC】
+ if (volantis.dom.topBtn && volantis.dom.bodyAnchor) {
+ volantis.dom.topBtn.click(e => {
+ e.preventDefault();
+ e.stopPropagation();
+ fn.scrolltoElement(volantis.dom.bodyAnchor);
+ e.stopImmediatePropagation();
+ });
+ }
+
+ }
+
+ // 设置导航栏
+ fn.setHeader = () => {
+ // !!! 此处的Dom对象需要重载 !!!
+ if (!pdata.ispage) return;
+
+ // 填充二级导航文章标题 【移动端 PC】
+ volantis.dom.wrapper.find('.nav-sub .title').html(document.title.split(" - ")[0]);
+
+ // ====== bind events to every btn =========
+ // 评论按钮 【移动端 PC】
+ volantis.dom.comment = volantis.dom.$(document.getElementById("s-comment")); // 评论按钮 桌面端 移动端
+ volantis.dom.commentTarget = volantis.dom.$(document.querySelector('#l_main article#comments')); // 评论区域
+ if (volantis.dom.commentTarget) {
+ volantis.dom.comment.click(e => { // 评论按钮点击后 跳转到评论区域
+ e.preventDefault();
+ e.stopPropagation();
+ fn.scrolltoElement(volantis.dom.commentTarget);
+ e.stopImmediatePropagation();
+ });
+ } else volantis.dom.comment.style.display = 'none'; // 关闭了评论,则隐藏评论按钮
+
+ // 移动端toc目录按钮 【移动端】
+ if (volantis.isMobile) {
+ volantis.dom.toc = volantis.dom.$(document.getElementById("s-toc")); // 目录按钮 仅移动端
+ volantis.dom.tocTarget = volantis.dom.$(document.querySelector('#l_side .toc-wrapper')); // 侧边栏的目录列表
+ if (volantis.dom.tocTarget) {
+ // 点击移动端目录按钮 激活目录按钮 显示侧边栏的目录列表
+ volantis.dom.toc.click((e) => {
+ e.stopPropagation();
+ volantis.dom.tocTarget.toggleClass('active');
+ volantis.dom.toc.toggleClass('active');
+ });
+ // 点击空白 隐藏
+ volantis.dom.$(document).click(function (e) {
+ e.stopPropagation();
+ if (volantis.dom.tocTarget) {
+ volantis.dom.tocTarget.removeClass('active');
+ }
+ volantis.dom.toc.removeClass('active');
+ });
+ } else volantis.dom.toc.style.display = 'none'; // 隐藏toc目录按钮
+ }
+ }
+
+ // 设置导航栏菜单选中状态 【移动端 PC】
+ fn.setHeaderMenuSelection = () => {
+ // !!! 此处的Dom对象需要重载 !!!
+ volantis.dom.headerMenu = volantis.dom.$(document.querySelectorAll('#l_header .navigation,#l_cover .navigation,#l_side .navigation')); // 导航列表
+
+ // 先把已经激活的取消激活
+ volantis.dom.headerMenu.forEach(element => {
+ let li = volantis.dom.$(element).find('li a.active')
+ if (li)
+ li.removeClass('active')
+ let div = volantis.dom.$(element).find('div a.active')
+ if (div)
+ div.removeClass('active')
+ });
+
+ // replace '%' '/' '.'
+ var idname = location.pathname.replace(/\/|%|\./g, '');
+ if (idname.length == 0) {
+ idname = 'home';
+ }
+ var page = idname.match(/page\d{0,}$/g);
+ if (page) {
+ page = page[0];
+ idname = idname.split(page)[0];
+ }
+ var index = idname.match(/index.html/);
+ if (index) {
+ index = index[0];
+ idname = idname.split(index)[0];
+ }
+ // 转义字符如 [, ], ~, #, @
+ idname = idname.replace(/(\[|\]|~|#|@)/g, '\\$1');
+ if (idname && volantis.dom.headerMenu) {
+ volantis.dom.headerMenu.forEach(element => {
+ // idname 不能为数字开头, 加一个 action- 前缀
+ let id = element.querySelector("[active-action=action-" + idname + "]")
+ if (id) {
+ volantis.dom.$(id).addClass('active')
+ }
+ });
+ }
+ }
+
+ // 设置全局事件
+ fn.setGlobalHeaderMenuEvent = () => {
+ if (volantis.isMobile) {
+ // 【移动端】 关闭已经展开的子菜单 点击展开子菜单
+ document.querySelectorAll('#l_header .m-phone li').forEach(function (_e) {
+ if (_e.querySelector(".list-v")) {
+ // 点击菜单
+ volantis.dom.$(_e).click(function (e) {
+ e.stopPropagation();
+ let menuType = ''
+ // 关闭.menu-phone
+ Array.from(e.currentTarget.children).some(val => {
+ if(val.classList.contains('s-menu')) {
+ menuType = 'menu' // 代表点击的是一级菜单外层的icon
+ return
+ }
+ if(val.classList.contains('menuitem')) {
+ menuType = 'item' // 点击的是下拉一级菜单
+ return
+ }
+ })
+ if(menuType === 'item') {
+ // 关闭已经展开的子菜单, 这一步是针对点击多个拥有二级子菜单的一级菜单,关闭其他所有一级菜单的二级菜单
+ // ①
+ e.currentTarget.parentElement.childNodes.forEach(function (e2) {
+ if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {
+ e2.childNodes.forEach(function (e1) {
+ if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {
+ volantis.dom.$(e1).hide()
+ }
+ })
+ }
+ })
+ // 点击展开二级子菜单
+
+ /*
+ 由于采用事件委托,因此此处点击, 两种情况,currentTarget指向菜单按钮a.s-menu和ul的共同父元素li, 第二,指向ul中的li元素,也就是子菜单
+ 区分:情况一的第一个子元素a的类名是s-menu;情况二的子元素a的类名为menuitem
+ 我们要点击外部的menu icon时要关闭的是.menu-phone而不是.menuitem
+ */
+ let array = e.currentTarget.children
+ for (let index = 0; index < array.length; index++) {
+ const element = array[index];
+ if (volantis.dom.$(element).title === 'menu') { // 移动端菜单栏异常
+ volantis.dom.$(element).style.display = "flex" // https://github.com/volantis-x/hexo-theme-volantis/issues/706
+ } else {
+ volantis.dom.$(element).show()
+ }
+ }
+ } else {
+ let menuPhone = document.querySelector('.switcher .menu-phone')
+ let isHiding = window.getComputedStyle(menuPhone).display === 'none'
+ if(isHiding) {
+ volantis.dom.$(menuPhone).show()
+ } else {
+ volantis.dom.$(menuPhone).hide()
+ // 别忘了再执行①
+ // 准备关闭所有二级菜单, 注意此时的e和点击一级菜单时候的e层级不同
+ // 此处好像不能使用变量存储的menuPhone?要重新查询
+ document.querySelector('.switcher .menu-phone').childNodes.forEach(function (e2) {
+ if (Object.prototype.toString.call(e2) == '[object HTMLLIElement]') {
+ e2.childNodes.forEach(function (e1) {
+ if (Object.prototype.toString.call(e1) == '[object HTMLUListElement]') {
+ volantis.dom.$(e1).hide()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ }, 0);
+ }
+ })
+ } else {
+ // 【PC端】 hover时展开子菜单,点击时[target.baseURI==origin时]隐藏子菜单? 现有逻辑大部分情况不隐藏子菜单
+ document.querySelectorAll('#wrapper .m-pc li > a[href]').forEach(function (e) {
+ volantis.dom.$(e.parentElement).click(function (e) {
+ e.stopPropagation();
+ if (e.target.origin == e.target.baseURI) {
+ document.querySelectorAll('#wrapper .m-pc .list-v').forEach(function (e) {
+ volantis.dom.$(e).hide(); // 大概率不会执行
+ })
+ }
+ }, 0);
+ })
+ }
+ fn.setPageHeaderMenuEvent();
+ }
+
+ // 【移动端】隐藏子菜单
+ fn.setPageHeaderMenuEvent = () => {
+ if (!volantis.isMobile) return
+ // 【移动端】 点击空白处隐藏子菜单
+ volantis.dom.$(document).click(function (e) {
+ volantis.dom.mPhoneList.forEach(function (e) {
+ volantis.dom.$(e).hide();
+ })
+ });
+ }
+
+ // 设置导航栏搜索框 【移动端】
+ fn.setHeaderSearch = () => {
+ if (!volantis.isMobile) return;
+ if (!volantis.dom.switcher) return;
+ // 点击移动端搜索按钮
+ volantis.dom.switcher.click(function (e) {
+ e.stopPropagation();
+ volantis.dom.header.toggleClass('z_search-open'); // 激活移动端搜索框
+ volantis.dom.switcher.toggleClass('active'); // 移动端搜索按钮
+ }, false); // false : pjax 不移除监听
+ // 点击空白取消激活
+ volantis.dom.$(document).click(function (e) {
+ volantis.dom.header.removeClass('z_search-open');
+ volantis.dom.switcher.removeClass('active');
+ }, false); // false : pjax 不移除监听
+ // 移动端点击搜索框 停止事件传播
+ volantis.dom.search.click(function (e) {
+ e.stopPropagation();
+ }, false); // false : pjax 不移除监听
+ }
+
+ // 设置 tabs 标签 【移动端 PC】
+ fn.setTabs = () => {
+ let tabs = document.querySelectorAll('#l_main .tabs .nav-tabs')
+ if (!tabs) return
+ tabs.forEach(function (e) {
+ e.querySelectorAll('a').forEach(function (e) {
+ volantis.dom.$(e).on('click', (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ const $tab = volantis.dom.$(e.target.parentElement.parentElement.parentElement);
+ $tab.find('.nav-tabs .active').removeClass('active');
+ volantis.dom.$(e.target.parentElement).addClass('active');
+ $tab.find('.tab-content .active').removeClass('active');
+ $tab.find(e.target.className).addClass('active');
+ return false;
+ });
+ })
+ })
+ }
+
+ // hexo-reference 页脚跳转 https://github.com/volantis-x/hexo-theme-volantis/issues/647
+ fn.footnotes = () => {
+ let ref = document.querySelectorAll('#l_main .footnote-backref, #l_main .footnote-ref > a');
+ ref.forEach(function (e, i) {
+ ref[i].click = () => { }; // 强制清空原 click 事件
+ volantis.dom.$(e).on('click', (e) => {
+ e.stopPropagation();
+ e.preventDefault();
+ let targetID = decodeURI(e.target.hash.split('#')[1]).replace(/\ /g, '-');
+ let target = document.getElementById(targetID);
+ if (target) {
+ volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })
+ }
+ });
+ })
+ }
+
+ // 工具类:代码块复制
+ fn.utilCopyCode = (Selector) => {
+ document.querySelectorAll(Selector).forEach(node => {
+ const test = node.insertAdjacentHTML("beforebegin", COPYHTML);
+ const _BtnCopy = node.previousSibling;
+ _BtnCopy.onclick = e => {
+ e.stopPropagation();
+ const _icon = _BtnCopy.querySelector('i');
+ const _span = _BtnCopy.querySelector('span');
+
+ node.focus();
+ const range = new Range();
+ range.selectNodeContents(node);
+ document.getSelection().removeAllRanges();
+ document.getSelection().addRange(range);
+
+ const str = document.getSelection().toString();
+ fn.utilWriteClipText(str).then(() => {
+ fn.messageCopyright();
+ _BtnCopy.classList.add('copied');
+ _icon.classList.remove('fa-copy');
+ _icon.classList.add('fa-check-circle');
+ _span.innerText = "COPIED";
+ setTimeout(() => {
+ _icon.classList.remove('fa-check-circle');
+ _icon.classList.add('fa-copy');
+ _span.innerText = "COPY";
+ }, 2000)
+ }).catch(e => {
+ VolantisApp.message('系统提示', e, {
+ icon: 'fa fa-exclamation-circle red'
+ });
+ _BtnCopy.classList.add('copied-failed');
+ _icon.classList.remove('fa-copy');
+ _icon.classList.add('fa-exclamation-circle');
+ _span.innerText = "COPY FAILED";
+ setTimeout(() => {
+ _icon.classList.remove('fa-exclamation-circle');
+ _icon.classList.add('fa-copy');
+ _span.innerText = "COPY";
+ })
+ })
+ }
+ });
+ }
+
+ // 工具类:复制字符串到剪切板
+ fn.utilWriteClipText = (str) => {
+ return navigator.clipboard
+ .writeText(str)
+ .then(() => {
+ return Promise.resolve()
+ })
+ .catch(e => {
+ const input = document.createElement('textarea');
+ input.setAttribute('readonly', 'readonly');
+ document.body.appendChild(input);
+ input.innerHTML = str;
+ input.select();
+ try {
+ let result = document.execCommand('copy')
+ document.body.removeChild(input);
+ if (!result || result === 'unsuccessful') {
+ return Promise.reject('复制文本失败!')
+ } else {
+ return Promise.resolve()
+ }
+ } catch (e) {
+ document.body.removeChild(input);
+ return Promise.reject(
+ '当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作!'
+ )
+ }
+ })
+ }
+
+ // 工具类:返回时间间隔
+ fn.utilTimeAgo = (dateTimeStamp) => {
+ const minute = 1e3 * 60, hour = minute * 60, day = hour * 24, week = day * 7, month = day * 30;
+ const now = new Date().getTime();
+ const diffValue = now - dateTimeStamp;
+ const minC = diffValue / minute,
+ hourC = diffValue / hour,
+ dayC = diffValue / day,
+ weekC = diffValue / week,
+ monthC = diffValue / month;
+ if (diffValue < 0) {
+ result = ""
+ } else if (monthC >= 1 && monthC < 7) {
+ result = " " + parseInt(monthC) + " 月前"
+ } else if (weekC >= 1 && weekC < 4) {
+ result = " " + parseInt(weekC) + " 周前"
+ } else if (dayC >= 1 && dayC < 7) {
+ result = " " + parseInt(dayC) + " 天前"
+ } else if (hourC >= 1 && hourC < 24) {
+ result = " " + parseInt(hourC) + " 小时前"
+ } else if (minC >= 1 && minC < 60) {
+ result = " " + parseInt(minC) + " 分钟前"
+ } else if (diffValue >= 0 && diffValue <= minute) {
+ result = "刚刚"
+ } else {
+ const datetime = new Date();
+ datetime.setTime(dateTimeStamp);
+ const Nyear = datetime.getFullYear();
+ const Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
+ const Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
+ const Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
+ const Nminute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
+ const Nsecond = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
+ result = Nyear + "-" + Nmonth + "-" + Ndate
+ }
+ return result;
+ }
+
+ // 消息提示:标准
+ fn.message = (title, message, option = {}, done = null) => {
+ if (typeof iziToast === "undefined") {
+ volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)
+ volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {
+ tozashMessage(title, message, option, done);
+ });
+ } else {
+ tozashMessage(title, message, option, done);
+ }
+ function tozashMessage(title, message, option, done) {
+ const {
+ icon,
+ time,
+ position,
+ transitionIn,
+ transitionOut,
+ messageColor,
+ titleColor,
+ backgroundColor,
+ zindex,
+ displayMode
+ } = option;
+ iziToast.show({
+ layout: '2',
+ icon: 'Fontawesome',
+ closeOnEscape: 'true',
+ displayMode: displayMode || 'replace',
+ transitionIn: transitionIn || volantis.GLOBAL_CONFIG.plugins.message.transitionIn,
+ transitionOut: transitionOut || volantis.GLOBAL_CONFIG.plugins.message.transitionOut,
+ messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,
+ titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,
+ backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,
+ zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,
+ icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.default,
+ timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.default,
+ position: position || volantis.GLOBAL_CONFIG.plugins.message.position,
+ title: title,
+ message: message,
+ onClosed: () => {
+ if (done) done();
+ },
+ });
+ }
+ }
+
+ // 消息提示:询问
+ fn.question = (title, message, option = {}, success = null, cancel = null, done = null) => {
+ if (typeof iziToast === "undefined") {
+ volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)
+ volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {
+ tozashQuestion(title, message, option, success, cancel, done);
+ });
+ } else {
+ tozashQuestion(title, message, option, success, cancel, done);
+ }
+
+ function tozashQuestion(title, message, option, success, cancel, done) {
+ const {
+ icon,
+ time,
+ position,
+ transitionIn,
+ transitionOut,
+ messageColor,
+ titleColor,
+ backgroundColor,
+ zindex
+ } = option;
+ iziToast.question({
+ id: 'question',
+ icon: 'Fontawesome',
+ close: false,
+ overlay: true,
+ displayMode: 'once',
+ position: 'center',
+ messageColor: messageColor || volantis.GLOBAL_CONFIG.plugins.message.messageColor,
+ titleColor: titleColor || volantis.GLOBAL_CONFIG.plugins.message.titleColor,
+ backgroundColor: backgroundColor || volantis.GLOBAL_CONFIG.plugins.message.backgroundColor,
+ zindex: zindex || volantis.GLOBAL_CONFIG.plugins.message.zindex,
+ icon: icon || volantis.GLOBAL_CONFIG.plugins.message.icon.quection,
+ timeout: time || volantis.GLOBAL_CONFIG.plugins.message.time.quection,
+ title: title,
+ message: message,
+ buttons: [
+ ['是 ', (instance, toast) => {
+ instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');
+ if (success) success(instance, toast)
+ }],
+ ['否 ', (instance, toast) => {
+ instance.hide({ transitionOut: transitionOut || 'fadeOut' }, toast, 'button');
+ if (cancel) cancel(instance, toast)
+ }]
+ ],
+ onClosed: (instance, toast, closedBy) => {
+ if (done) done(instance, toast, closedBy);
+ }
+ });
+ }
+ }
+
+ // 消息提示:隐藏
+ fn.hideMessage = (done = null) => {
+ const toast = document.querySelector('.iziToast');
+ if (!toast) {
+ if (done) done()
+ return;
+ }
+
+ if (typeof iziToast === "undefined") {
+ volantis.css(volantis.GLOBAL_CONFIG.plugins.message.css)
+ volantis.js(volantis.GLOBAL_CONFIG.plugins.message.js, () => {
+ hideMessage(done);
+ });
+ } else {
+ hideMessage(done);
+ }
+
+ function hideMessage(done) {
+ iziToast.hide({}, toast);
+ if (done) done();
+ }
+ }
+
+ // 消息提示:复制
+ let messageCopyrightShow = 0;
+ fn.messageCopyright = () => {
+ // 消息提示 复制时弹出
+ if (volantis.GLOBAL_CONFIG.plugins.message.enable
+ && volantis.GLOBAL_CONFIG.plugins.message.copyright.enable
+ && messageCopyrightShow < 1) {
+ messageCopyrightShow++;
+ VolantisApp.message(volantis.GLOBAL_CONFIG.plugins.message.copyright.title,
+ volantis.GLOBAL_CONFIG.plugins.message.copyright.message, {
+ icon: volantis.GLOBAL_CONFIG.plugins.message.copyright.icon,
+ transitionIn: 'flipInX',
+ transitionOut: 'flipOutX',
+ displayMode: 1
+ });
+ }
+ }
+
+ return {
+ init: () => {
+ fn.init();
+ fn.event();
+ },
+ subscribe: () => {
+ fn.setIsMobile();
+ fn.setHeader();
+ fn.setHeaderMenuSelection();
+ fn.setGlobalHeaderMenuEvent();
+ fn.setHeaderSearch();
+ fn.setScrollAnchor();
+ fn.setTabs();
+ fn.footnotes();
+ },
+ pjaxReload: () => {
+ fn.event();
+ fn.restData();
+ fn.setHeader();
+ fn.setHeaderMenuSelection();
+ fn.setPageHeaderMenuEvent();
+ fn.setScrollAnchor();
+ fn.setTabs();
+ fn.footnotes();
+
+ // 移除小尾巴的移除
+ document.querySelector("#l_header .nav-main").querySelectorAll('.list-v:not(.menu-phone)').forEach(function (e) {
+ e.removeAttribute("style")
+ })
+ document.querySelector("#l_header .menu-phone.list-v").removeAttribute("style");
+ messageCopyrightShow = 0;
+ },
+ utilCopyCode: fn.utilCopyCode,
+ utilWriteClipText: fn.utilWriteClipText,
+ utilTimeAgo: fn.utilTimeAgo,
+ message: fn.message,
+ question: fn.question,
+ hideMessage: fn.hideMessage,
+ messageCopyright: fn.messageCopyright,
+ scrolltoElement: fn.scrolltoElement
+ }
+})()
+Object.freeze(VolantisApp);
+
+/* FancyBox */
+const VolantisFancyBox = (() => {
+ const fn = {};
+
+ fn.loadFancyBox = (done) => {
+ volantis.css(volantis.GLOBAL_CONFIG.plugins.fancybox.css);
+ volantis.js(volantis.GLOBAL_CONFIG.plugins.fancybox.js).then(() => {
+ if (done) done();
+ })
+ }
+
+ /**
+ * 加载及处理
+ *
+ * @param {*} checkMain 是否只处理文章区域的文章
+ * @param {*} done FancyBox 加载完成后的动作,默认执行分组绑定
+ * @returns
+ */
+ fn.init = (checkMain = true, done = fn.groupBind) => {
+ if (!document.querySelector(".md .gallery img, .fancybox") && checkMain) return;
+ if (typeof Fancybox === "undefined") {
+ fn.loadFancyBox(done);
+ } else {
+ done();
+ }
+ }
+
+ /**
+ * 图片元素预处理
+ *
+ * @param {*} selectors 选择器
+ * @param {*} name 分组
+ */
+ fn.elementHandling = (selectors, name) => {
+ const nodeList = document.querySelectorAll(selectors);
+ nodeList.forEach($item => {
+ if ($item.hasAttribute('fancybox')) return;
+ $item.setAttribute('fancybox', '');
+ const $link = document.createElement('a');
+ $link.setAttribute('href', $item.src);
+ $link.setAttribute('data-caption', $item.alt);
+ $link.setAttribute('data-fancybox', name);
+ $link.classList.add('fancybox');
+ $link.append($item.cloneNode());
+ $item.replaceWith($link);
+ })
+ }
+
+ /**
+ * 原生绑定
+ *
+ * @param {*} selectors 选择器
+ */
+ fn.bind = (selectors) => {
+ fn.init(false, () => {
+ Fancybox.bind(selectors, {
+ groupAll: true,
+ Hash: false,
+ hideScrollbar: false,
+ Thumbs: {
+ autoStart: false,
+ },
+ caption: function (fancybox, carousel, slide) {
+ return slide.$trigger.alt || null
+ }
+ });
+ });
+ }
+
+ /**
+ * 分组绑定
+ *
+ * @param {*} groupName 分组名称
+ */
+ fn.groupBind = (groupName = null) => {
+ const group = new Set();
+
+ document.querySelectorAll(".gallery").forEach(ele => {
+ if (ele.querySelector("img")) {
+ group.add(ele.getAttribute('data-group') || 'default');
+ }
+ })
+
+ if (!!groupName) group.add(groupName);
+
+ for (const iterator of group) {
+ Fancybox.unbind('[data-fancybox="' + iterator + '"]');
+ Fancybox.bind('[data-fancybox="' + iterator + '"]', {
+ Hash: false,
+ hideScrollbar: false,
+ Thumbs: {
+ autoStart: false,
+ }
+ });
+ }
+ }
+
+ return {
+ init: fn.init,
+ bind: fn.bind,
+ groupBind: (selectors, groupName = 'default') => {
+ try {
+ fn.elementHandling(selectors, groupName);
+ fn.init(false, () => {
+ fn.groupBind(groupName)
+ });
+ } catch (error) {
+ console.error(error)
+ }
+ }
+ }
+})()
+Object.freeze(VolantisFancyBox);
+
+// highlightKeyWords 与 搜索功能搭配 https://github.com/next-theme/hexo-theme-next/blob/eb194a7258058302baf59f02d4b80b6655338b01/source/js/third-party/search/local-search.js
+// Question: 锚点稳定性未知
+// ToDo: 查找模式
+// 0. (/////////要知道浏览器自带全页面查找功能 CTRL + F)
+// 1. 右键开启查找模式 / 导航栏菜单开启?? / CTRL + F ???
+// 2. 查找模式面板 (可拖动? or 固定?)
+// 3. keyword mark id 从 0 开始编号 查找下一处 highlightKeyWords.scrollToNextHighlightKeywordMark() 查找上一处 scrollToPrevHighlightKeywordMark() 循环查找(取模%)
+// 4. 可输入修改 查找关键词 keywords(type:list)
+// 5. 区分大小写 caseSensitive (/ 全字匹配?? / 正则匹配??)
+// 6. 在选定区域中查找 querySelector ??
+// 7. 关闭查找模式
+// 8. 搜索跳转 (URL 入口) 自动开启查找模式 调用 scrollToNextHighlightKeywordMark()
+const highlightKeyWords = (() => {
+ let fn = {}
+ fn.markNum = 0
+ fn.markNextId = -1
+ fn.startFromURL = () => {
+ const params = decodeURI(new URL(location.href).searchParams.get('keyword'));
+ const keywords = params ? params.split(' ') : [];
+ const post = document.querySelector('#l_main');
+ if (keywords.length == 1 && keywords[0] == "null") {
+ return;
+ }
+ fn.start(keywords, post); // 渲染耗时较长
+ fn.scrollToFirstHighlightKeywordMark()
+ }
+ fn.scrollToFirstHighlightKeywordMark = () => {
+ volantis.cleanContentVisibility();
+ let target = fn.scrollToNextHighlightKeywordMark("0");
+ if (!target) {
+ volantis.requestAnimationFrame(fn.scrollToFirstHighlightKeywordMark)
+ }
+ }
+ fn.scrollToNextHighlightKeywordMark = (id) => {
+ // Next Id
+ let input = id || (fn.markNextId + 1) % fn.markNum;
+ fn.markNextId = parseInt(input)
+ let target = document.getElementById("keyword-mark-" + fn.markNextId);
+ if (!target) {
+ fn.markNextId = (fn.markNextId + 1) % fn.markNum;
+ target = document.getElementById("keyword-mark-" + fn.markNextId);
+ }
+ if (target) {
+ volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })
+ }
+ // Current target
+ return target
+ }
+ fn.scrollToPrevHighlightKeywordMark = (id) => {
+ // Prev Id
+ let input = id || (fn.markNextId - 1 + fn.markNum) % fn.markNum;
+ fn.markNextId = parseInt(input)
+ let target = document.getElementById("keyword-mark-" + fn.markNextId);
+ if (!target) {
+ fn.markNextId = (fn.markNextId - 1 + fn.markNum) % fn.markNum;
+ target = document.getElementById("keyword-mark-" + fn.markNextId);
+ }
+ if (target) {
+ volantis.scroll.to(target, { addTop: - volantis.dom.header.offsetHeight - 5, behavior: 'instant' })
+ }
+ // Current target
+ return target
+ }
+ fn.start = (keywords, querySelector) => {
+ fn.markNum = 0
+ if (!keywords.length || !querySelector || (keywords.length == 1 && keywords[0] == "null")) return;
+ console.log(keywords);
+ const walk = document.createTreeWalker(querySelector, NodeFilter.SHOW_TEXT, null);
+ const allNodes = [];
+ while (walk.nextNode()) {
+ if (!walk.currentNode.parentNode.matches('button, select, textarea')) allNodes.push(walk.currentNode);
+ }
+ allNodes.forEach(node => {
+ const [indexOfNode] = fn.getIndexByWord(keywords, node.nodeValue);
+ if (!indexOfNode.length) return;
+ const slice = fn.mergeIntoSlice(0, node.nodeValue.length, indexOfNode);
+ fn.highlightText(node, slice, 'keyword');
+ fn.highlightStyle()
+ });
+ }
+ fn.getIndexByWord = (words, text, caseSensitive = false) => {
+ const index = [];
+ const included = new Set();
+ words.forEach(word => {
+ const div = document.createElement('div');
+ div.innerText = word;
+ word = div.innerHTML;
+
+ const wordLen = word.length;
+ if (wordLen === 0) return;
+ let startPosition = 0;
+ let position = -1;
+ if (!caseSensitive) {
+ text = text.toLowerCase();
+ word = word.toLowerCase();
+ }
+ while ((position = text.indexOf(word, startPosition)) > -1) {
+ index.push({ position, word });
+ included.add(word);
+ startPosition = position + wordLen;
+ }
+ });
+ index.sort((left, right) => {
+ if (left.position !== right.position) {
+ return left.position - right.position;
+ }
+ return right.word.length - left.word.length;
+ });
+ return [index, included];
+ };
+ fn.mergeIntoSlice = (start, end, index) => {
+ let item = index[0];
+ let { position, word } = item;
+ const hits = [];
+ const count = new Set();
+ while (position + word.length <= end && index.length !== 0) {
+ count.add(word);
+ hits.push({
+ position,
+ length: word.length
+ });
+ const wordEnd = position + word.length;
+
+ index.shift();
+ while (index.length !== 0) {
+ item = index[0];
+ position = item.position;
+ word = item.word;
+ if (wordEnd > position) {
+ index.shift();
+ } else {
+ break;
+ }
+ }
+ }
+ return {
+ hits,
+ start,
+ end,
+ count: count.size
+ };
+ };
+ fn.highlightText = (node, slice, className) => {
+ const val = node.nodeValue;
+ let index = slice.start;
+ const children = [];
+ for (const { position, length } of slice.hits) {
+ const text = document.createTextNode(val.substring(index, position));
+ index = position + length;
+ let mark = document.createElement('mark');
+ mark.className = className;
+ mark = fn.highlightStyle(mark)
+ mark.appendChild(document.createTextNode(val.substr(position, length)));
+ children.push(text, mark);
+ }
+ node.nodeValue = val.substring(index, slice.end);
+ children.forEach(element => {
+ node.parentNode.insertBefore(element, node);
+ });
+ }
+ fn.highlightStyle = (mark) => {
+ if (!mark) return;
+ mark.id = "keyword-mark-" + fn.markNum;
+ fn.markNum++;
+ mark.style.background = "transparent";
+ mark.style["border-bottom"] = "1px dashed #ff2a2a";
+ mark.style["color"] = "#ff2a2a";
+ mark.style["font-weight"] = "bold";
+ return mark
+ }
+ fn.cleanHighlightStyle = () => {
+ document.querySelectorAll(".keyword").forEach(mark => {
+ mark.style.background = "transparent";
+ mark.style["border-bottom"] = null;
+ mark.style["color"] = null;
+ mark.style["font-weight"] = null;
+ })
+ }
+ return {
+ start: (keywords, querySelector) => {
+ fn.start(keywords, querySelector)
+ },
+ startFromURL: () => {
+ fn.startFromURL()
+ },
+ scrollToNextHighlightKeywordMark: (id) => {
+ fn.scrollToNextHighlightKeywordMark(id)
+ },
+ scrollToPrevHighlightKeywordMark: (id) => {
+ fn.scrollToPrevHighlightKeywordMark(id)
+ },
+ cleanHighlightStyle: () => {
+ fn.cleanHighlightStyle()
+ },
+ }
+})()
+Object.freeze(highlightKeyWords);
+
+/* DOM 控制 */
+const DOMController = {
+ /**
+ * 控制元素显隐
+ */
+ visible: (ele, type = true) => {
+ if (ele) ele.style.display = type === true ? 'block' : 'none';
+ },
+
+ /**
+ * 移除元素
+ */
+ remove: (param) => {
+ const node = document.querySelectorAll(param);
+ node.forEach(ele => {
+ ele.remove();
+ })
+ },
+
+ removeList: (list) => {
+ list.forEach(param => {
+ DOMController.remove(param)
+ })
+ },
+
+ /**
+ * 设置属性
+ */
+ setAttribute: (param, attrName, attrValue) => {
+ const node = document.querySelectorAll(param);
+ node.forEach(ele => {
+ ele.setAttribute(attrName, attrValue)
+ })
+ },
+
+ setAttributeList: (list) => {
+ list.forEach(item => {
+ DOMController.setAttribute(item[0], item[1], item[2])
+ })
+ },
+
+ /**
+ * 设置样式
+ */
+ setStyle: (param, styleName, styleValue) => {
+ const node = document.querySelectorAll(param);
+ node.forEach(ele => {
+ ele.style[styleName] = styleValue;
+ })
+ },
+
+ setStyleList: (list) => {
+ list.forEach(item => {
+ DOMController.setStyle(item[0], item[1], item[2])
+ })
+ },
+
+ fadeIn: (e) => {
+ if (!e) return;
+ e.style.visibility = "visible";
+ e.style.opacity = 1;
+ e.style.display = "block";
+ e.style.transition = "all 0.5s linear";
+ return e
+ },
+
+ fadeOut: (e) => {
+ if (!e) return;
+ e.style.visibility = "hidden";
+ e.style.opacity = 0;
+ e.style.display = "none";
+ e.style.transition = "all 0.5s linear";
+ return e
+ },
+
+ fadeToggle: (e) => {
+ if (!e) return;
+ if (e.style.visibility == "hidden") {
+ e = DOMController.fadeIn(e)
+ } else {
+ e = DOMController.fadeOut(e)
+ }
+ return e
+ },
+
+ fadeToggleList: (list) => {
+ list.forEach(param => {
+ DOMController.fadeToggle(param)
+ })
+ },
+
+ hasClass: (e, c) => {
+ if (!e) return;
+ return e.className.match(new RegExp('(\\s|^)' + c + '(\\s|$)'));
+ },
+
+ addClass: (e, c) => {
+ if (!e) return;
+ e.classList.add(c);
+ return e
+ },
+
+ removeClass: (e, c) => {
+ if (!e) return;
+ e.classList.remove(c);
+ return e
+ },
+
+ toggleClass: (e, c) => {
+ if (!e) return;
+ if (DOMController.hasClass(e, c)) {
+ DOMController.removeClass(e, c)
+ } else {
+ DOMController.addClass(e, c)
+ }
+ return e
+ },
+
+ toggleClassList: (list) => {
+ list.forEach(item => {
+ DOMController.toggleClass(item[0], item[1])
+ })
+ }
+}
+Object.freeze(DOMController);
+
+const VolantisRequest = {
+ timeoutFetch: (url, ms, requestInit) => {
+ const controller = new AbortController()
+ requestInit.signal?.addEventListener('abort', () => controller.abort())
+ let promise = fetch(url, { ...requestInit, signal: controller.signal })
+ if (ms > 0) {
+ const timer = setTimeout(() => controller.abort(), ms)
+ promise.finally(() => { clearTimeout(timer) })
+ }
+ promise = promise.catch((err) => {
+ throw ((err || {}).name === 'AbortError') ? new Error(`Fetch timeout: ${url}`) : err
+ })
+ return promise
+ },
+
+ Fetch: async (url, requestInit, timeout = 15000) => {
+ const resp = await VolantisRequest.timeoutFetch(url, timeout, requestInit);
+ if (!resp.ok) throw new Error(`Fetch error: ${url} | ${resp.status}`);
+ let json = await resp.json()
+ if (!json.success) throw json
+ return json
+ },
+
+ POST: async (url, data) => {
+ const requestInit = {
+ method: 'POST',
+ }
+ if (data) {
+ const formData = new FormData();
+ Object.keys(data).forEach(key => formData.append(key, String(data[key])))
+ requestInit.body = formData;
+ }
+ const json = await VolantisRequest.Fetch(url, requestInit)
+ return json.data;
+ },
+
+ Get: async (url, data) => {
+ const json = await VolantisRequest.Fetch(url + (data ? (`?${new URLSearchParams(data)}`) : ''), {
+ method: 'GET'
+ })
+ }
+}
+Object.freeze(VolantisRequest);
diff --git a/js/plugins/aplayer.js b/js/plugins/aplayer.js
new file mode 100644
index 0000000..36f6d7d
--- /dev/null
+++ b/js/plugins/aplayer.js
@@ -0,0 +1,186 @@
+/**
+ * 右键音乐
+ * */
+const RightMenuAplayer = (() => {
+ let playStatus; // 播放器状态
+ const APlayer = {}; // 右键音乐所控制的播放器
+ const fn = {};
+
+ fn.checkAPlayer = () => {
+ if (playStatus === undefined || APlayer.player === undefined) {
+ fn.setAPlayerObject();
+ } else if (APlayer.observer === undefined) {
+ fn.setAPlayerObserver();
+ }
+ }
+
+ // 设置全局播放器所对应的 aplyer 对象
+ fn.setAPlayerObject = () => {
+ let meting = document.querySelectorAll('.footer meting-js');
+ if (meting.length == 0) {
+ meting = document.querySelectorAll('meting-js');
+ }
+ APlayer.player = undefined;
+ meting.forEach((item, index) => {
+ if (item.meta.id == volantis.GLOBAL_CONFIG.plugins.aplayer.id && item.aplayer && APlayer.player === undefined) {
+ APlayer.player = item.aplayer;
+ fn.setAPlayerObserver();
+ fn.updateTitle();
+ }
+ });
+ }
+
+ // 事件监听
+ fn.setAPlayerObserver = () => {
+ try {
+ APlayer.player.on('play', function (e) {
+ fn.updateAPlayerControllerStatus(e);
+ APlayer.status = 'play';
+ });
+ APlayer.player.on('pause', function (e) {
+ fn.updateAPlayerControllerStatus(e);
+ APlayer.status = 'pause';
+ });
+ APlayer.player.on('volumechange', function (e) {
+ fn.onUpdateAPlayerVolume(e);
+ });
+ APlayer.player.on('loadstart', function (e) {
+ fn.updateTitle(e);
+ });
+
+ // 监听音量手势
+ APlayer.volumeBarWrap = document.getElementsByClassName('nav volume')[0].children[0];
+ APlayer.volumeBar = APlayer.volumeBarWrap.children[0];
+
+ const thumbMove = (e) => {
+ fn.updateAPlayerVolume(e);
+ };
+
+ const thumbUp = (e) => {
+ APlayer.volumeBarWrap.classList.remove('aplayer-volume-bar-wrap-active');
+ document.removeEventListener('mouseup', thumbUp);
+ document.removeEventListener('mousemove', thumbMove);
+ fn.updateAPlayerVolume(e);
+ };
+
+ APlayer.volumeBarWrap.addEventListener('mousedown', (event) => {
+ event.stopPropagation();
+ APlayer.volumeBarWrap.classList.add('aplayer-volume-bar-wrap-active');
+ document.addEventListener('mousemove', thumbMove);
+ document.addEventListener('mouseup', thumbUp);
+ });
+
+ APlayer.volumeBarWrap.addEventListener('click', (event) => {
+ event.stopPropagation();
+ });
+
+ fn.updateAPlayerControllerStatus();
+ fn.onUpdateAPlayerVolume();
+ APlayer.observer = true;
+ } catch (error) {
+ console.log(error);
+ APlayer.observer = undefined;
+ }
+ }
+
+ fn.updateAPlayerVolume = (e) => {
+ let percentage = ((e.clientX || e.changedTouches[0].clientX) -
+ APlayer.volumeBar.getBoundingClientRect().left) / APlayer.volumeBar.clientWidth;
+ percentage = Math.max(percentage, 0);
+ percentage = Math.min(percentage, 1);
+ APlayer.player.volume(percentage);
+ }
+
+ fn.onUpdateAPlayerVolume = () => {
+ try {
+ APlayer.volumeBar.children[0].style.width = APlayer.player.audio.volume * 100 + '%';
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 更新控制器状态
+ fn.updateAPlayerControllerStatus = () => {
+ try {
+ if (APlayer.player.audio.paused) {
+ playStatus = 'pause';
+ document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-play');
+ document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-pause');
+ } else {
+ playStatus = 'play';
+ document.getElementsByClassName('nav toggle')[0].children[0].classList.remove('fa-play');
+ document.getElementsByClassName('nav toggle')[0].children[0].classList.add('fa-pause');
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 播放/暂停
+ fn.aplayerToggle = () => {
+ fn.checkAPlayer();
+ try {
+ APlayer.player.toggle();
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 上一曲
+ fn.aplayerBackward = () => {
+ fn.checkAPlayer();
+ try {
+ APlayer.player.skipBack();
+ APlayer.player.play();
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 下一曲
+ fn.aplayerForward = () => {
+ fn.checkAPlayer();
+ try {
+ APlayer.player.skipForward();
+ APlayer.player.play();
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 调节音量
+ fn.aplayerVolume = (percent) => {
+ fn.checkAPlayer();
+ try {
+ APlayer.player.volume(percent);
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ // 更新音乐标题
+ fn.updateTitle = () => {
+ fn.checkAPlayer();
+ try {
+ const index = APlayer.player.list.index;
+ const obj = APlayer.player.list.audios[index];
+ document.getElementsByClassName('nav music-title')[0].innerHTML = obj.title;
+ } catch (error) {
+ //console.log(error);
+ }
+ }
+
+ return {
+ checkAPlayer: fn.checkAPlayer,
+ aplayerBackward: fn.aplayerBackward,
+ aplayerToggle: fn.aplayerToggle,
+ aplayerForward: fn.aplayerForward,
+ APlayer: APlayer
+ }
+})()
+
+Object.freeze(RightMenuAplayer);
+
+volantis.requestAnimationFrame(() => {
+ RightMenuAplayer.checkAPlayer();
+});
diff --git a/js/plugins/parallax.js b/js/plugins/parallax.js
new file mode 100644
index 0000000..c170b19
--- /dev/null
+++ b/js/plugins/parallax.js
@@ -0,0 +1,191 @@
+let Parallax = {};
+Parallax.options = {};
+Parallax.options.speed = 0.25;
+Parallax.options.zIndex = -100;
+Parallax.options.fade = 1500;
+Parallax.slidein = () => {
+ let slider = Parallax.mirrors[0].slider;
+ if (Parallax.mirrors.length >= 2) {
+ slider = Parallax.mirrors[1].slider;
+ }
+ var opac = parseFloat(slider.style.opacity);
+ if (opac !== 1) {
+ if (Parallax.mirrors.length >= 2) {
+ opac = opac + 0.1;
+ slider.style.opacity = opac;
+ setTimeout(Parallax.slidein, Parallax.options.fade / 10);
+ }else{
+ slider.style.opacity = 1;
+ }
+ } else {
+ if (Parallax.mirrors.length >= 2) {
+ Parallax.mirrors[0].mirror.remove();
+ Parallax.mirrors.shift();
+ }
+ }
+};
+Parallax.start = () => {
+ let mirror = document.createElement("div");
+ mirror.classList.add("parallax-mirror");
+ mirror.style.visibility = "hidden";
+ mirror.style.zIndex = Parallax.options.zIndex;
+ mirror.style.position = "fixed";
+ mirror.style.top = 0;
+ mirror.style.left = 0;
+ mirror.style.overflow = "hidden";
+ Parallax.window.appendChild(mirror);
+ let slider = document.createElement("img");
+ slider.src = Parallax.options.src;
+ slider.alt = "parallax";
+ slider.classList.add("parallax-slider");
+ slider.style.opacity = 0;
+ mirror.appendChild(slider);
+ if (!Parallax.mirrors) {
+ Parallax.mirrors = [];
+ }
+ let mirrorItem = {};
+ mirrorItem.mirror = mirror;
+ mirrorItem.slider = slider;
+ Parallax.mirrors.push(mirrorItem);
+ Parallax.slidein();
+ slider.addEventListener(
+ "load",
+ function () {
+ Parallax.update();
+ },
+ false
+ );
+};
+Parallax.init = () => {
+ function loadDimensions() {
+ Parallax.wH = document.documentElement.clientHeight;
+ Parallax.wW = document.documentElement.clientWidth;
+ }
+ function getScrollTop() {
+ var scrollPos;
+ if (window.pageYOffset) {
+ scrollPos = window.pageYOffset;
+ } else if (document.compatMode && document.compatMode != "BackCompat") {
+ scrollPos = document.documentElement.scrollTop;
+ } else if (document.body) {
+ scrollPos = document.body.scrollTop;
+ }
+ return scrollPos;
+ }
+ function loadScrollPosition() {
+ const winScrollTop = getScrollTop();
+ Parallax.sT = Math.max(0, winScrollTop);
+ Parallax.sL = Math.max(0, document.body.scrollLeft);
+ Parallax.overScroll = Math.min(winScrollTop, 0);
+ }
+ window.addEventListener(
+ "resize",
+ function () {
+ loadDimensions();
+ Parallax.update();
+ },
+ false
+ );
+ loadDimensions();
+ let lastPosition = -1;
+ (function loop() {
+ const yoffset = getScrollTop();
+ if (lastPosition !== yoffset) {
+ lastPosition = yoffset;
+ loadScrollPosition();
+ Parallax.update();
+ }
+ window.requestAnimationFrame =
+ window.requestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.webkitRequestAnimationFrame;
+ window.requestAnimationFrame(loop);
+ })();
+};
+
+Parallax.refreshItem = (slider) => {
+ Parallax.options.aspectRatio =
+ slider.naturalWidth / (slider.naturalHeight || 1);
+ const aspect = Parallax.options.aspectRatio || 1;
+ Parallax.options.boxWidth = Parallax.window.clientWidth;
+ Parallax.options.boxHeight = Parallax.window.clientHeight;
+ Parallax.options.boxOffsetTop = Parallax.window.scrollTop;
+ Parallax.options.boxOffsetLeft = Parallax.window.scrollLeft;
+ Parallax.options.boxOffsetBottom =
+ Parallax.options.boxOffsetTop + Parallax.options.boxHeight;
+ const winHeight = Parallax.wH;
+ const maxOffset = Parallax.options.boxOffsetTop;
+ const minOffset = Math.max(
+ Parallax.options.boxOffsetTop + Parallax.options.boxHeight - winHeight,
+ 0
+ );
+ const imageHeightMin =
+ (Parallax.options.boxHeight +
+ (maxOffset - minOffset) * (1 - Parallax.options.speed)) |
+ 0;
+ const imageOffsetMin =
+ ((Parallax.options.boxOffsetTop - maxOffset) *
+ (1 - Parallax.options.speed)) |
+ 0;
+ let margin;
+ if (Parallax.options.boxWidth < imageHeightMin * aspect) {
+ Parallax.options.imageWidth = (imageHeightMin * aspect) | 0;
+ Parallax.options.imageHeight = imageHeightMin;
+ Parallax.options.offsetBaseTop = imageOffsetMin;
+ margin = Parallax.options.imageWidth - Parallax.options.boxWidth;
+ Parallax.options.offsetLeft = (-margin / 2) | 0;
+ } else {
+ Parallax.options.imageWidth = Parallax.options.boxWidth;
+ Parallax.options.imageHeight = (Parallax.options.boxWidth / aspect) | 0;
+ Parallax.options.offsetLeft = 0;
+ margin = Parallax.options.imageHeight - imageHeightMin;
+ Parallax.options.offsetBaseTop = (imageOffsetMin - margin / 2) | 0;
+ }
+};
+Parallax.renderItem = (mirror, slider) => {
+ const scrollTop = Parallax.sT;
+ const scrollLeft = Parallax.sL;
+ const scrollBottom = scrollTop + Parallax.wH;
+ if (
+ Parallax.options.boxOffsetBottom > scrollTop &&
+ Parallax.options.boxOffsetTop <= scrollBottom
+ ) {
+ Parallax.options.visibility = "visible";
+ Parallax.options.mirrorTop = Parallax.options.boxOffsetTop - scrollTop;
+ Parallax.options.mirrorLeft = Parallax.options.boxOffsetLeft - scrollLeft;
+ Parallax.options.offsetTop =
+ Parallax.options.offsetBaseTop -
+ Parallax.options.mirrorTop * (1 - Parallax.options.speed);
+ } else {
+ Parallax.options.visibility = "hidden";
+ }
+ mirror.style.transform =
+ "translate3d(" +
+ Parallax.options.mirrorLeft +
+ "px, " +
+ Parallax.options.mirrorTop +
+ "px, 0px)";
+ mirror.style.visibility = Parallax.options.visibility;
+ mirror.style.height = Parallax.options.boxHeight + "px";
+ mirror.style.width = Parallax.options.boxWidth + "px";
+
+ slider.style.transform =
+ "translate3d(" +
+ Parallax.options.offsetLeft +
+ "px, " +
+ Parallax.options.offsetTop +
+ "px, 0px)";
+ slider.style.position = "absolute";
+ slider.style.height = Parallax.options.imageHeight + "px";
+ slider.style.width = Parallax.options.imageWidth + "px";
+ slider.style.maxWidth = "none";
+};
+Parallax.update = () => {
+ if (!Parallax.mirrors) {
+ return
+ }
+ Parallax.mirrors.forEach((e) => {
+ Parallax.refreshItem(e.slider);
+ Parallax.renderItem(e.mirror, e.slider);
+ });
+};
diff --git a/js/plugins/rightMenu.js b/js/plugins/rightMenu.js
new file mode 100644
index 0000000..27d7c77
--- /dev/null
+++ b/js/plugins/rightMenu.js
@@ -0,0 +1,577 @@
+const RightMenu = (() => {
+ const
+ rightMenuConfig = volantis.GLOBAL_CONFIG.plugins.rightmenu,
+ messageRightMenu = volantis.GLOBAL_CONFIG.plugins.message.enable && volantis.GLOBAL_CONFIG.plugins.message.rightmenu.enable;
+
+ const
+ fn = {},
+ _rightMenuWrapper = document.getElementById('rightmenu-wrapper'),
+ _rightMenuContent = document.getElementById('rightmenu-content'),
+ _printHtml = document.getElementById('printHtml'),
+ _menuMusic = document.getElementById('menuMusic'),
+ _readingModel = document.getElementById('readingModel'),
+ _readBkg = document.getElementById('read_bkg');
+
+ const
+ _menuLoad = document.querySelectorAll('.menuLoad-Content'),
+ _menuOption = document.querySelector('.menu-Option'),
+ _searchWord = document.querySelector('.menu-Option[data-fn-type="searchWord"]'),
+ _copyText = document.querySelector('.menu-Option[data-fn-type="copyText"]'),
+ _copyPaste = document.querySelector('.menu-Option[data-fn-type="copyPaste"]'),
+ _copySelect = document.querySelector('.menu-Option[data-fn-type="copySelect"]'),
+ _copyCut = document.querySelector('.menu-Option[data-fn-type="copyCut"]'),
+ _copyHref = document.querySelector('.menu-Option[data-fn-type="copyHref"]'),
+ _copySrc = document.querySelector('.menu-Option[data-fn-type="copySrc"]'),
+ _copyImg = document.querySelector('.menu-Option[data-fn-type="copyImg"]'),
+ _openTab = document.querySelector('.menu-Option[data-fn-type="openTab"]'),
+ _backward = document.querySelector('#menuMusic .backward'),
+ _toggle = document.querySelector('#menuMusic .toggle'),
+ _forward = document.querySelector('#menuMusic .forward');
+
+ const urlRegx = /^((https|http)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
+
+ fn.init = () => {
+ DOMController.visible(_menuMusic, false);
+ DOMController.visible(_menuOption, false);
+ if (_readBkg) _readBkg.parentNode.removeChild(_readBkg);
+
+ const readBkg = document.createElement("div");
+ readBkg.className = "common_read_bkg common_read_hide";
+ readBkg.id = "read_bkg";
+ window.document.body.appendChild(readBkg);
+ }
+
+ fn.initEvent = () => {
+ window.document.oncontextmenu = (event) => {
+ if (event.ctrlKey || document.body.offsetWidth <= 500) {
+ fn.hideMenu();
+ return true;
+ }
+ return fn.popMenu(event);
+ }
+
+ _rightMenuWrapper.oncontextmenu = (event) => {
+ event.stopPropagation();
+ event.preventDefault();
+ return false;
+ }
+
+ window.removeEventListener('blur', fn.hideMenu);
+ window.addEventListener('blur', fn.hideMenu);
+ document.body.removeEventListener('click', fn.hideMenu);
+ document.body.addEventListener('click', fn.hideMenu);
+
+ if (_forward && _toggle && _forward) {
+ _backward.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerBackward();
+ }
+ _toggle.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerToggle();
+ }
+ _forward.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerForward();
+ }
+ }
+ }
+
+ // 菜单位置设定
+ fn.popMenu = (event) => {
+ let mouseClientX = event.clientX;
+ let mouseClientY = event.clientY;
+ let screenWidth = document.documentElement.clientWidth || document.body.clientWidth;
+ let screenHeight = document.documentElement.clientHeight || document.body.clientHeight;
+
+ try {
+ fn.setMenuItem(event);
+ DOMController.visible(_rightMenuWrapper);
+ _rightMenuWrapper.focus();
+ _rightMenuWrapper.style.zIndex = '-2147483648';
+ let menuWidth = _rightMenuContent.offsetWidth;
+ let menuHeight = _rightMenuContent.offsetHeight;
+ let showLeft = mouseClientX + menuWidth > screenWidth ? mouseClientX - menuWidth + 10 : mouseClientX;
+ let showTop = mouseClientY + menuHeight > screenHeight ? mouseClientY - menuHeight + 10 : mouseClientY;
+ showTop = mouseClientY + menuHeight > screenHeight && showTop < menuHeight && mouseClientY < menuHeight ?
+ showTop + (screenHeight - menuHeight - showTop - 10) : showTop;
+ _rightMenuWrapper.style.left = showLeft + "px";
+ _rightMenuWrapper.style.top = showTop + "px";
+ _rightMenuWrapper.style.zIndex = '2147483648';
+ if (volantis.GLOBAL_CONFIG.plugins.message.rightmenu.notice) fn.showMessage();
+ } catch (error) {
+ _rightMenuWrapper.blur();
+ console.error(error);
+ return true;
+ }
+
+ return false;
+ }
+
+ // 消息提示
+ fn.showMessage = () => {
+ const NoticeRightMenu = localStorage.getItem('NoticeRightMenu') === 'true';
+ if (messageRightMenu && !NoticeRightMenu)
+ VolantisApp.message('右键菜单', '唤醒原系统菜单请使用:Ctrl + 右键 ', {
+ icon: rightMenuConfig.faicon + ' fa-exclamation-square red',
+ time: 9000
+ }, () => {
+ localStorage.setItem('NoticeRightMenu', 'true')
+ });
+ }
+
+ // 菜单项设置
+ fn.setMenuItem = (event) => {
+ let optionFlag = false;
+ const eventTarget = event.target;
+ const selectText = window.getSelection().toString();
+ DOMController.visible(_openTab, false); // 隐藏新标签页打开
+
+ // 判断是否是输入框
+ if (eventTarget.tagName.toLowerCase() === 'input' || eventTarget.tagName.toLowerCase() === 'textarea') {
+ const inputStr = eventTarget.value;
+
+ // 全选
+ if (inputStr.length > 0) {
+ DOMController.visible(_copySelect);
+ _copySelect.onclick = () => {
+ event.preventDefault();
+ eventTarget.select();
+ }
+ } else {
+ DOMController.visible(_copySelect, false);
+ }
+
+ // 剪切
+ if (selectText) {
+ DOMController.visible(_copyCut);
+ _copyCut.onclick = () => {
+ const statrPos = eventTarget.selectionStart;
+ const endPos = eventTarget.selectionEnd;
+ fn.copyString(selectText);
+ eventTarget.value = inputStr.substring(0, statrPos) + inputStr.substring(endPos, inputStr.length);
+ eventTarget.selectionStart = statrPos;
+ eventTarget.selectionEnd = statrPos;
+ eventTarget.focus();
+ }
+ } else {
+ DOMController.visible(_copyCut, false);
+ }
+
+ // 粘贴
+ fn.readClipboard().then(text => {
+ // 如果剪切板存在内容
+ if (!!text) {
+ DOMController.visible(_copyPaste);
+ _copyPaste.onclick = () => {
+ fn.insertAtCaret(eventTarget, text);
+ }
+ } else {
+ DOMController.visible(_copyPaste, false);
+ }
+ }).catch((err) => {
+ console.error(err);
+ DOMController.visible(_copyPaste, false);
+ });
+ } else {
+ DOMController.visible(_copySelect, false);
+ DOMController.visible(_copyPaste, false);
+ DOMController.visible(_copyCut, false);
+ }
+
+ // 新标签打开链接
+ const eventHref = eventTarget.href;
+ if (!!eventHref && urlRegx.test(eventHref)) {
+ optionFlag = true;
+ DOMController.visible(_copyHref);
+ DOMController.visible(_openTab);
+ if (_copyHref) _copyHref.onclick = () => {
+ fn.copyString(eventHref);
+ }
+ _openTab.onclick = () => {
+ window.open(eventHref);
+ }
+ } else {
+ DOMController.visible(_copyHref, false);
+ }
+
+ // 新标签打开图片 & 复制图片链接
+ const eventSrc = eventTarget.currentSrc;
+ if (!!eventSrc && urlRegx.test(eventSrc)) {
+ optionFlag = true;
+ DOMController.visible(_copySrc);
+ DOMController.visible(_openTab);
+
+ _copySrc.onclick = () => {
+ fn.copyString(eventSrc);
+ }
+
+ _openTab.onclick = () => {
+ window.open(eventSrc);
+ }
+ } else {
+ DOMController.visible(_copySrc, false);
+ }
+
+ // 复制图片
+ if (!!eventSrc && urlRegx.test(eventSrc) && eventSrc.trimEnd().endsWith('.png')) {
+ optionFlag = true;
+ DOMController.visible(_copyImg);
+
+ _copyImg.onclick = () => {
+ fn.writeClipImg(event, flag => {
+ if (flag && messageRightMenu) VolantisApp.message('系统提示', '图片复制成功!', {
+ icon: rightMenuConfig.faicon + ' fa-images'
+ });
+ }, (error) => {
+ if (messageRightMenu) VolantisApp.message('系统提示', '复制失败:' + error, {
+ icon: rightMenuConfig.faicon + ' fa-exclamation-square red'
+ });
+ })
+ }
+ } else {
+ DOMController.visible(_copyImg, false);
+ }
+
+ // 复制文本
+ if (selectText) {
+ optionFlag = true;
+ DOMController.visible(_copyText);
+ DOMController.visible(_searchWord);
+
+ _copyText.onclick = () => {
+ fn.copyString(selectText);
+ }
+
+ !!_searchWord && (_searchWord.onclick = () => {
+ OpenSearch(selectText);
+ })
+ } else {
+ DOMController.visible(_copyText, false);
+ DOMController.visible(_searchWord, false);
+ }
+
+ // 打印
+ const _printArticle = document.querySelector('#post.article') || null;
+ const pathName = window.location.pathname;
+ if (!!_printArticle) {
+ DOMController.visible(_printHtml);
+ DOMController.visible(_readingModel);
+
+ if (_printHtml) {
+ _printHtml.onclick = () => {
+ if (window.location.pathname === pathName) {
+ const message = '是否打印当前页面?建议打印时勾选背景图形 ';
+ if (messageRightMenu) VolantisApp.question('', message, {}, () => {
+ fn.printHtml();
+ })
+ } else {
+ fn.hideMenu();
+ }
+ }
+ }
+
+ if (_readingModel) {
+ _readingModel.onclick = () => {
+ if (window.location.pathname === pathName) {
+ fn.readingModel();
+ } else {
+ fn.readingModel();
+ }
+ }
+ }
+
+ } else {
+ DOMController.visible(_printHtml, false);
+ DOMController.visible(_readingModel, false);
+ }
+
+ if (volantis.GLOBAL_CONFIG.plugins.aplayer.enable
+ && typeof RightMenuAplayer !== 'undefined'
+ && RightMenuAplayer.APlayer.player !== undefined) {
+ if (rightMenuConfig.music_alwaysShow) {
+ DOMController.visible(_menuMusic);
+ } else if (RightMenuAplayer.APlayer.status === 'play' || RightMenuAplayer.APlayer.status === 'undefined') {
+ optionFlag = true;
+ DOMController.visible(_menuMusic);
+ } else {
+ DOMController.visible(_menuMusic, false);
+ }
+ } else {
+ DOMController.visible(_menuMusic, false);
+ }
+
+ _menuLoad.forEach(ele => {
+ DOMController.visible(ele, !optionFlag);
+ })
+
+ if (volantis.GLOBAL_CONFIG.plugins.aplayer.enable
+ && rightMenuConfig.layout.includes('music')) {
+ RightMenuAplayer.checkAPlayer();
+ }
+ }
+
+ // 隐藏菜单
+ fn.hideMenu = () => {
+ DOMController.visible(_rightMenuWrapper, false);
+ }
+
+ // 复制字符串
+ fn.copyString = (str) => {
+ VolantisApp.utilWriteClipText(str)
+ .then(() => {
+ if (messageRightMenu) {
+ VolantisApp.messageCopyright();
+ }
+ }).catch(e => {
+ if (messageRightMenu) {
+ VolantisApp.message('系统提示', e, {
+ icon: rightMenuConfig.faicon + ' fa-exclamation-square red'
+ });
+ }
+ })
+ }
+
+ // 写入文本到剪切板
+ fn.writeClipText = (str) => {
+ try {
+ return navigator.clipboard
+ .writeText(str)
+ .then(() => {
+ return Promise.resolve()
+ })
+ .catch(err => {
+ return Promise.reject(err)
+ })
+ } catch (e) {
+ const input = document.createElement('input');
+ input.setAttribute('readonly', 'readonly');
+ document.body.appendChild(input);
+ input.setAttribute('value', str);
+ input.select();
+ try {
+ let result = document.execCommand('copy')
+ document.body.removeChild(input);
+ if (!result || result === 'unsuccessful') {
+ return Promise.reject('复制文本失败!')
+ } else {
+ return Promise.resolve()
+ }
+ } catch (e) {
+ document.body.removeChild(input);
+ return Promise.reject(
+ '当前浏览器不支持复制功能,请检查更新或更换其他浏览器操作!'
+ )
+ }
+ }
+ }
+
+ // 写入图片到剪切板
+ fn.writeClipImg = async function (event, success, error) {
+ const eventSrc = rightMenuConfig.customPicUrl.enable ?
+ event.target.currentSrc.replace(rightMenuConfig.customPicUrl.old, rightMenuConfig.customPicUrl.new) :
+ event.target.currentSrc;
+ const parentElement = event.target.parentElement;
+ try {
+ const data = await fetch(eventSrc);
+ const blob = await data.blob();
+ await navigator.clipboard
+ .write([
+ new ClipboardItem({
+ [blob.type]: blob
+ })
+ ]).then(() => {
+ success(true);
+ }, (e) => {
+ console.error('图片复制失败:', e);
+ error(e);
+ });
+ } catch (e) {
+ const dom = document;
+ try {
+ if (dom.body.createTextRange) {
+ const textRange = document.body.createTextRange();
+ textRange.moveToElementText(parentElement);
+ textRange.select();
+ } else if (window.getSelection) {
+ const selection = window.getSelection();
+ const range = document.createRange();
+ range.selectNodeContents(parentElement);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ }
+ document.execCommand('copy');
+ window.getSelection().removeAllRanges();
+ success(false);
+ } catch (e) {
+ console.error(e);
+ error('不支持复制当前图片!');
+ }
+ }
+ }
+
+ // 请求读取剪切板
+ fn.readClipboard = async () => {
+ const result = await navigator.permissions.query({
+ name: 'clipboard-read'
+ });
+ if (result.state === 'granted' || result.state === 'prompt') {
+ // 修改为 .read() 可以获取剪切板中的文字/图片
+ // 返回的是 ClipboardItem
+ return navigator.clipboard
+ .readText()
+ .then(text => text)
+ .catch(err => Promise.reject(err));
+ }
+ return Promise.reject(result);
+ }
+
+ // 粘贴文本
+ fn.insertAtCaret = (elemt, value) => {
+ const startPos = elemt.selectionStart,
+ endPos = elemt.selectionEnd;
+ if (document.selection) {
+ elemt.focus();
+ var sel = document.selection.createRange();
+ sel.text = value;
+ elemt.focus();
+ } else {
+ if (startPos || startPos == '0') {
+ var scrollTop = elemt.scrollTop;
+ elemt.value = elemt.value.substring(0, startPos) + value + elemt.value.substring(endPos, elemt.value.length);
+ elemt.focus();
+ elemt.selectionStart = startPos + value.length;
+ elemt.selectionEnd = startPos + value.length;
+ elemt.scrollTop = scrollTop;
+ } else {
+ elemt.value += value;
+ elemt.focus();
+ }
+ }
+ }
+
+ // 执行打印页面
+ fn.printHtml = () => {
+ if (volantis.isReadModel) fn.readingModel();
+ DOMController.setAttribute('details', 'open', 'true');
+ DOMController.remove('.cus-article-bkg');
+ DOMController.remove('.iziToast-overlay');
+ DOMController.remove('.iziToast-wrapper');
+ DOMController.remove('.prev-next');
+ DOMController.remove('footer');
+ DOMController.remove('#l_header');
+ DOMController.remove('#l_cover');
+ DOMController.remove('#l_side');
+ DOMController.remove('#comments');
+ DOMController.remove('#s-top');
+ DOMController.remove('#BKG');
+ DOMController.remove('#rightmenu-wrapper');
+ DOMController.remove('.nav-tabs');
+ DOMController.remove('.parallax-mirror');
+ DOMController.remove('.new-meta-item.share');
+ DOMController.remove('div.footer');
+ DOMController.setStyle('body', 'backgroundColor', 'unset');
+ DOMController.setStyle('#l_main', 'width', '100%');
+ DOMController.setStyle('#post', 'boxShadow', 'none');
+ DOMController.setStyle('#post', 'background', 'none');
+ DOMController.setStyle('#post', 'padding', '0');
+ DOMController.setStyle('h1', 'textAlign', 'center');
+ DOMController.setStyle('h1', 'fontWeight', '600');
+ DOMController.setStyle('h1', 'fontSize', '2rem');
+ DOMController.setStyle('h1', 'marginBottom', '20px');
+ DOMController.setStyle('.tab-pane', 'display', 'block');
+ DOMController.setStyle('.tab-content', 'borderTop', 'none');
+ DOMController.setStyle('.highlight>table pre', 'whiteSpace', 'pre-wrap');
+ DOMController.setStyle('.highlight>table pre', 'wordBreak', 'break-all');
+ DOMController.setStyle('.fancybox img', 'height', 'auto');
+ DOMController.setStyle('.fancybox img', 'weight', 'auto');
+
+ setTimeout(() => {
+ window.print();
+ document.body.innerHTML = '';
+ window.location.reload();
+ }, 50);
+ }
+
+ // 阅读模式
+ fn.readingModel = () => {
+ if (typeof ScrollReveal === 'function') ScrollReveal().clean('#comments');
+ DOMController.fadeToggle(document.querySelector('#l_header'))
+ DOMController.fadeToggle(document.querySelector('footer'))
+ DOMController.fadeToggle(document.querySelector('#s-top'))
+ DOMController.fadeToggle(document.querySelector('.article-meta#bottom'))
+ DOMController.fadeToggle(document.querySelector('.prev-next'))
+ DOMController.fadeToggle(document.querySelector('#l_side'))
+ DOMController.fadeToggle(document.querySelector('#comments'))
+
+ DOMController.toggleClass(document.querySelector('#l_main'), 'common_read')
+ DOMController.toggleClass(document.querySelector('#l_main'), 'common_read_main')
+ DOMController.toggleClass(document.querySelector('#l_body'), 'common_read')
+ DOMController.toggleClass(document.querySelector('#safearea'), 'common_read')
+ DOMController.toggleClass(document.querySelector('#pjax-container'), 'common_read')
+ DOMController.toggleClass(document.querySelector('#read_bkg'), 'common_read_hide')
+ DOMController.toggleClass(document.querySelector('h1'), 'common_read_h1')
+ DOMController.toggleClass(document.querySelector('#post'), 'post_read')
+ DOMController.toggleClass(document.querySelector('#l_cover'), 'read_cover')
+ DOMController.toggleClass(document.querySelector('.widget.toc-wrapper'), 'post_read')
+
+ volantis.isReadModel = volantis.isReadModel === undefined ? true : !volantis.isReadModel;
+ if (volantis.isReadModel) {
+ const option = {
+ backgroundColor: 'var(--color-read-post)',
+ icon: rightMenuConfig.faicon + ' fa-book-reader',
+ time: 5000
+ }
+ if (messageRightMenu) VolantisApp.message('系统提示', '阅读模式已开启,您可以点击屏幕空白处退出。', option);
+ document.querySelector('#l_body').removeEventListener('click', fn.readingModel);
+ document.querySelector('#l_body').addEventListener('click', (event) => {
+ if (DOMController.hasClass(event.target, 'common_read')) {
+ fn.readingModel();
+ }
+ });
+ } else {
+ document.querySelector('#l_body').removeEventListener('click', fn.readingModel);
+ document.querySelector('#post').removeEventListener('click', fn.readingModel);
+ }
+ }
+
+ return {
+ init: (notice = false) => {
+ fn.init();
+ fn.initEvent();
+ if (notice && messageRightMenu) VolantisApp.message('系统提示', '自定义右键注册成功。');
+ },
+ destroy: (notice = false) => {
+ fn.hideMenu();
+ window.document.oncontextmenu = () => {
+ return true
+ };
+ if (notice && messageRightMenu) VolantisApp.message('系统提示', '自定义右键注销成功。');
+ },
+ hideMenu: fn.hideMenu,
+ readingModel: fn.readingModel
+ }
+})()
+
+Object.freeze(RightMenu);
+
+volantis.requestAnimationFrame(() => {
+ if (document.readyState !== 'loading') {
+ RightMenu.init();
+
+ volantis.pjax.send(() => {
+ RightMenu.hideMenu();
+ })
+ } else {
+ document.addEventListener("DOMContentLoaded", function () {
+ RightMenu.init();
+
+ volantis.pjax.send(() => {
+ RightMenu.hideMenu();
+ })
+ })
+ }
+});
diff --git a/js/plugins/rightMenus.js b/js/plugins/rightMenus.js
new file mode 100644
index 0000000..cdb9999
--- /dev/null
+++ b/js/plugins/rightMenus.js
@@ -0,0 +1,618 @@
+
+const RightMenus = {
+ defaultEvent: ['copyText', 'copyLink', 'copyPaste', 'copyAll', 'copyCut', 'copyImg', 'printMode', 'readMode'],
+ defaultGroup: ['navigation', 'inputBox', 'seletctText', 'elementCheck', 'elementImage', 'articlePage'],
+ messageRightMenu: volantis.GLOBAL_CONFIG.plugins.message.enable && volantis.GLOBAL_CONFIG.plugins.message.rightmenu.enable,
+ corsAnywhere: volantis.GLOBAL_CONFIG.plugins.rightmenus.options.corsAnywhere,
+ urlRegx: /^((https|http)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
+ imgRegx: /\.(jpe?g|png|webp|svg|gif|jifi)(-|_|!|\?|\/)?.*$/,
+
+ /**
+ * 加载右键菜单
+ */
+ initialMenu: () => {
+ RightMenus.fun.init();
+ volantis.pjax.send(() => {
+ RightMenus.fun.hideMenu();
+ if (volantis.isReadModel) RightMenus.fun.readMode();
+ })
+ },
+
+ /**
+ * 读取剪切板
+ * @returns text
+ */
+ readClipboard: async () => {
+ let clipboardText;
+ const result = await navigator.permissions.query({ name: 'clipboard-read' });
+ switch (result.state) {
+ case 'granted':
+ case 'prompt':
+ clipboardText = await navigator.clipboard.readText()
+ break;
+ default:
+ window.clipboardRead = false;
+ break;
+ }
+ return clipboardText;
+ },
+
+ /**
+ * 写入文本到剪切板
+ * @param {String} text
+ */
+ writeClipText: text => {
+ return navigator.clipboard
+ .writeText(text)
+ .then(() => {
+ return Promise.resolve()
+ })
+ .catch(err => {
+ return Promise.reject(err)
+ })
+ },
+
+ /**
+ * 写入图片到剪切板
+ * @param {*} link
+ * @param {*} success
+ * @param {*} error
+ */
+ writeClipImg: async (link, success, error) => {
+ const image = new Image;
+ image.crossOrigin = "Anonymous";
+ image.addEventListener('load', () => {
+ let canvas = document.createElement("canvas");
+ let context = canvas.getContext("2d");
+ canvas.width = image.width;
+ canvas.height = image.height;
+ context.drawImage(image, 0, 0);
+ canvas.toBlob(blob => {
+ navigator.clipboard.write([
+ new ClipboardItem({ 'image/png': blob })
+ ]).then(e => {
+ success(e)
+ }).catch(e => {
+ error(e)
+ })
+ }, 'image/png')
+ }, false)
+ image.src = `${link}?(lll¬ω¬)`;
+ },
+
+ /**
+ * 粘贴文本到剪切板
+ * @param {*} elemt
+ * @param {*} value
+ */
+ insertAtCaret: (elemt, value) => {
+ const startPos = elemt.selectionStart,
+ endPos = elemt.selectionEnd;
+ if (document.selection) {
+ elemt.focus();
+ var sel = document.selection.createRange();
+ sel.text = value;
+ elemt.focus();
+ } else {
+ if (startPos || startPos == '0') {
+ var scrollTop = elemt.scrollTop;
+ elemt.value = elemt.value.substring(0, startPos) + value + elemt.value.substring(endPos, elemt.value.length);
+ elemt.focus();
+ elemt.selectionStart = startPos + value.length;
+ elemt.selectionEnd = startPos + value.length;
+ elemt.scrollTop = scrollTop;
+ } else {
+ elemt.value += value;
+ elemt.focus();
+ }
+ }
+ }
+}
+
+/**
+ * 事件处理区域
+ */
+RightMenus.fun = (() => {
+ const rightMenuConfig = volantis.GLOBAL_CONFIG.plugins.rightmenus;
+
+ const
+ fn = {},
+ _rightMenuWrapper = document.getElementById('rightmenu-wrapper'),
+ _rightMenuContent = document.getElementById('rightmenu-content'),
+ _rightMenuList = document.querySelectorAll('#rightmenu-content li.menuLoad-Content'),
+ _rightMenuListWithHr = document.querySelectorAll('#rightmenu-content li, #rightmenu-content hr, #menuMusic'),
+ _readBkg = document.getElementById('read_bkg'),
+ _menuMusic = document.getElementById('menuMusic'),
+ _backward = document.querySelector('#menuMusic .backward'),
+ _toggle = document.querySelector('#menuMusic .toggle'),
+ _forward = document.querySelector('#menuMusic .forward');
+
+ // 公共数据
+ let globalData = {
+ mouseEvent: null,
+ isInputBox: false,
+ selectText: '',
+ inputValue: '',
+ isLink: false,
+ linkUrl: '',
+ isMediaLink: false,
+ mediaLinkUrl: '',
+ isImage: false,
+ isArticle: false,
+ pathName: '',
+ isReadClipboard: true,
+ isShowMusic: false,
+ statusCheck: false
+ }
+ const globalDataBackup = Object.assign({}, globalData);
+
+ /**
+ * 初始化监听事件处理
+ */
+ fn.initEvent = () => {
+ fn.elementAppend();
+ fn.contextmenu();
+ fn.menuEvent();
+ }
+
+ /**
+ * 预置元素设定
+ */
+ fn.elementAppend = () => {
+ // 阅读模式
+ if (_readBkg) _readBkg.parentNode.removeChild(_readBkg);
+ const readBkg = document.createElement("div");
+ readBkg.className = "common_read_bkg common_read_hide";
+ readBkg.id = "read_bkg";
+ window.document.body.appendChild(readBkg);
+ }
+
+ /**
+ * 右键菜单位置设定
+ * @param {*} event
+ */
+ fn.menuPosition = (event) => {
+ try {
+ let mouseClientX = event.clientX;
+ let mouseClientY = event.clientY;
+ let screenWidth = document.documentElement.clientWidth || document.body.clientWidth;
+ let screenHeight = document.documentElement.clientHeight || document.body.clientHeight;
+
+ _rightMenuWrapper.style.display = 'block';
+ fn.menuControl(event);
+
+ let menuWidth = _rightMenuContent.offsetWidth;
+ let menuHeight = _rightMenuContent.offsetHeight;
+ let showLeft = mouseClientX + menuWidth > screenWidth ? mouseClientX - menuWidth + 10 : mouseClientX;
+ let showTop = mouseClientY + menuHeight > screenHeight ? mouseClientY - menuHeight + 10 : mouseClientY;
+ showTop = mouseClientY + menuHeight > screenHeight && showTop < menuHeight && mouseClientY < menuHeight ?
+ showTop + (screenHeight - menuHeight - showTop - 10) : showTop;
+ _rightMenuWrapper.style.left = `${showLeft}px`;
+ _rightMenuWrapper.style.top = `${showTop}px`;
+ if (volantis.GLOBAL_CONFIG.plugins.message.rightmenu.notice) fn.menuNotic();
+ } catch (error) {
+ console.error(error);
+ fn.hideMenu();
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 菜单项控制
+ * @param {*} event
+ */
+ fn.menuControl = (event) => {
+ fn.globalDataSet(event);
+ if (!!_menuMusic) _menuMusic.style.display = globalData.isShowMusic ? 'block' : 'none';
+ _rightMenuList.forEach(item => {
+ item.style.display = 'none';
+ const nodeName = item.firstElementChild.nodeName;
+ const groupName = item.firstElementChild.getAttribute('data-group');
+ const itemEvent = item.firstElementChild.getAttribute('data-event');
+ if (globalData.statusCheck || globalData.isArticle) {
+ switch (groupName) {
+ case 'inputBox':
+ if (globalData.isInputBox) {
+ item.style.display = 'block';
+ if (itemEvent === 'copyCut' && !globalData.selectText) item.style.display = 'none';
+ if (itemEvent === 'copyAll' && !globalData.inputValue) item.style.display = 'none';
+ if (itemEvent === 'copyPaste' && !globalData.isReadClipboard) item.style.display = 'none';
+ }
+ break;
+ case 'seletctText':
+ if (!!globalData.selectText) item.style.display = 'block';
+ break;
+ case 'elementCheck':
+ if (globalData.isLink || globalData.isMediaLink) item.style.display = 'block';
+ break;
+ case 'elementImage':
+ if (globalData.isImage) item.style.display = 'block';
+ break;
+ case 'articlePage':
+ if (globalData.isArticle) item.style.display = 'block';
+ break;
+ default:
+ item.style.display = nodeName === 'A'
+ ? globalData.isArticle && !globalData.statusCheck && rightMenuConfig.options.articleShowLink
+ ? 'block'
+ : 'none'
+ : 'block';
+ break;
+ }
+ } else if (nodeName === 'A' || RightMenus.defaultGroup.every(item => { return groupName !== item })) {
+ item.style.display = 'block';
+ }
+ })
+
+ // 执行外部事件
+ volantis.mouseEvent = event;
+ volantis.rightmenu.method.handle.start()
+
+ // 过滤 HR 元素
+ let elementHrItem = { item: null, hide: true };
+ _rightMenuListWithHr.forEach((item) => {
+ if (item.nodeName === "HR") {
+ item.style.display = 'block';
+ if (!elementHrItem.item) {
+ elementHrItem.item = item;
+ return;
+ }
+ if (elementHrItem.hide || elementHrItem.item.nextElementSibling.nodeName === "hr") {
+ elementHrItem.item.style.display = 'none';
+ }
+ elementHrItem.item = item;
+ elementHrItem.hide = true;
+ } else {
+ if (item.style.display === 'block' && elementHrItem.hide) {
+ elementHrItem.hide = false;
+ }
+ }
+ })
+ if (!!elementHrItem.item && elementHrItem.hide) elementHrItem.item.style.display = 'none';
+ }
+
+ /**
+ * 元素状态判断/全局数据设置
+ * @param {*} event
+ */
+ fn.globalDataSet = (event) => {
+ globalData = Object.assign({}, globalDataBackup);
+ globalData.mouseEvent = event;
+ globalData.selectText = window.getSelection().toString();
+
+ // 判断是否为输入框
+ if (event.target.tagName.toLowerCase() === 'input' || event.target.tagName.toLowerCase() === 'textarea') {
+ globalData.isInputBox = true;
+ globalData.inputValue = event.target.value;
+ }
+
+ // 判断是否允许读取剪切板
+ if (globalData.isInputBox && window.clipboardRead === false) {
+ globalData.isReadClipboard = false;
+ }
+
+ // 判断是否包含链接
+ if (!!event.target.href && RightMenus.urlRegx.test(event.target.href)) {
+ globalData.isLink = true;
+ globalData.linkUrl = event.target.href;
+ }
+
+ // 判断是否包含媒体链接
+ if (!!event.target.currentSrc && RightMenus.urlRegx.test(event.target.currentSrc)) {
+ globalData.isMediaLink = true;
+ globalData.mediaLinkUrl = event.target.currentSrc;
+ }
+
+ // 判断是否为图片地址
+ if (globalData.isMediaLink && RightMenus.imgRegx.test(globalData.mediaLinkUrl)) {
+ globalData.isImage = true;
+ }
+
+ // 判断是否为文章页面
+ if (!!(document.querySelector('#post.article') || null)) {
+ globalData.isArticle = true;
+ globalData.pathName = window.location.pathname;
+ }
+
+ // 判断是否显示音乐控制器
+ if (volantis.GLOBAL_CONFIG.plugins.aplayer?.enable
+ && typeof RightMenuAplayer !== 'undefined'
+ && RightMenuAplayer.APlayer.player !== undefined) {
+ if (rightMenuConfig.options.musicAlwaysShow
+ || RightMenuAplayer.APlayer.status === 'play'
+ || RightMenuAplayer.APlayer.status === 'undefined') {
+ globalData.isShowMusic = true;
+ }
+ }
+
+ // 设定校验状态
+ if (!!globalData.selectText || globalData.isInputBox || globalData.isLink || globalData.isMediaLink) {
+ globalData.statusCheck = true;
+ }
+ }
+
+ /**
+ * 全局右键监听函数
+ */
+ fn.contextmenu = () => {
+ window.document.oncontextmenu = (event) => {
+ if (event.ctrlKey || document.body.offsetWidth <= 500) {
+ fn.hideMenu();
+ return true;
+ }
+ return fn.menuPosition(event);
+ }
+
+ _rightMenuWrapper.oncontextmenu = (event) => {
+ event.stopPropagation();
+ event.preventDefault();
+ return false;
+ }
+
+ window.removeEventListener('blur', fn.hideMenu);
+ window.addEventListener('blur', fn.hideMenu);
+ document.body.removeEventListener('click', fn.hideMenu);
+ document.body.addEventListener('click', fn.hideMenu);
+ }
+
+ /**
+ * 菜单项事件处理函数
+ */
+ fn.menuEvent = () => {
+ _rightMenuList.forEach(item => {
+ let eventName = item.firstElementChild.getAttribute('data-event');
+ const id = item.firstElementChild.getAttribute('id');
+ const groupName = item.firstElementChild.getAttribute('data-group');
+ if (item.firstElementChild.nodeName === "A") return;
+ item.addEventListener('click', () => {
+ try {
+ if (RightMenus.defaultEvent.every(item => { return eventName !== item })) {
+ if (groupName === 'seletctText') {
+ RightMenusFunction[id](globalData.selectText)
+ } else if (groupName === 'elementCheck') {
+ RightMenusFunction[id](globalData.isLink ? globalData.linkUrl : globalData.mediaLinkUrl)
+ } else if (groupName === 'elementImage') {
+ RightMenusFunction[id](globalData.mediaLinkUrl)
+ } else {
+ RightMenusFunction[id]()
+ }
+ } else {
+ fn[eventName]()
+ }
+ } catch (error) {
+ if (volantis.GLOBAL_CONFIG.debug === "rightMenus") {
+ console.error({
+ id: id,
+ error: error,
+ globalData: globalData,
+ groupName: groupName,
+ eventName: eventName
+ });
+ }
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.message('错误提示', error, {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-exclamation-square red',
+ time: '15000'
+ });
+ }
+ }
+ })
+ })
+
+ if (_forward && _toggle && _forward) {
+ _backward.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerBackward();
+ }
+ _toggle.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerToggle();
+ }
+ _forward.onclick = (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ RightMenuAplayer.aplayerForward();
+ }
+ }
+ }
+
+ /**
+ * 隐藏菜单显示
+ */
+ fn.hideMenu = () => {
+ _rightMenuWrapper.style.display = null;
+ _rightMenuWrapper.style.left = null;
+ _rightMenuWrapper.style.top = null;
+ }
+
+ /**
+ * 右键菜单覆盖提示
+ */
+ fn.menuNotic = () => {
+ const NoticeRightMenu = localStorage.getItem('NoticeRightMenu') === 'true';
+ if (RightMenus.messageRightMenu && !NoticeRightMenu)
+ VolantisApp.message('右键菜单', '唤醒原系统菜单请使用:Ctrl + 右键 ', {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-exclamation-square red',
+ displayMode: 1,
+ time: 9000
+ }, () => {
+ localStorage.setItem('NoticeRightMenu', 'true')
+ });
+ }
+
+ fn.copyText = () => {
+ VolantisApp.utilWriteClipText(globalData.selectText)
+ .then(() => {
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.messageCopyright();
+ }
+ }).catch(e => {
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.message('系统提示', e, {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-exclamation-square red',
+ displayMode: 1,
+ time: 9000
+ });
+ }
+ })
+ }
+
+ fn.copyLink = () => {
+ VolantisApp.utilWriteClipText(globalData.linkUrl || globalData.mediaLinkUrl)
+ .then(() => {
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.messageCopyright();
+ }
+ }).catch(e => {
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.message('系统提示', e, {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-exclamation-square red',
+ displayMode: 1,
+ time: 9000
+ });
+ }
+ })
+ }
+
+ fn.copyAll = () => {
+ globalData.mouseEvent.target.select();
+ }
+
+ fn.copyPaste = async () => {
+ const result = await RightMenus.readClipboard() || '';
+ if (RightMenus.messageRightMenu && window.clipboardRead === false) {
+ VolantisApp.message('系统提示', '未授予剪切板读取权限!');
+ } else if (RightMenus.messageRightMenu && result === '') {
+ VolantisApp.message('系统提示', '仅支持复制文本内容!');
+ } else {
+ RightMenus.insertAtCaret(globalData.mouseEvent.target, result);
+ }
+ }
+
+ fn.copyCut = () => {
+ const statrPos = globalData.mouseEvent.target.selectionStart;
+ const endPos = globalData.mouseEvent.target.selectionEnd;
+ const inputStr = globalData.inputValue;
+ fn.copyText(globalData.selectText);
+ globalData.mouseEvent.target.value = inputStr.substring(0, statrPos) + inputStr.substring(endPos, inputStr.length);
+ globalData.mouseEvent.target.selectionStart = statrPos;
+ globalData.mouseEvent.target.selectionEnd = statrPos;
+ globalData.mouseEvent.target.focus();
+ }
+
+ fn.copyImg = () => {
+ if (volantis.GLOBAL_CONFIG.plugins.message.rightmenu.notice) {
+ VolantisApp.message('系统提示', '复制中,请等待。', {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-images'
+ })
+ }
+ RightMenus.writeClipImg(globalData.mediaLinkUrl, e => {
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.hideMessage();
+ VolantisApp.message('系统提示', '图片复制成功!', {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-images'
+ });
+ }
+ }, (e) => {
+ console.error(e);
+ if (RightMenus.messageRightMenu) {
+ VolantisApp.hideMessage();
+ VolantisApp.message('系统提示', '复制失败:' + e, {
+ icon: rightMenuConfig.options.iconPrefix + ' fa-exclamation-square red',
+ time: 9000
+ });
+ }
+ })
+ }
+
+ fn.printMode = () => {
+ if (window.location.pathname === globalData.pathName) {
+ if (RightMenus.messageRightMenu) {
+ const message = '是否打印当前页面?建议打印时勾选背景图形 '
+ VolantisApp.question('', message, { time: 9000 }, () => { fn.printHtml() })
+ } else {
+ fn.printHtml()
+ }
+ }
+ }
+
+ fn.printHtml = () => {
+ if (volantis.isReadModel) fn.readMode();
+ DOMController.setAttribute('details', 'open', 'true');
+ DOMController.removeList([
+ '.cus-article-bkg', '.iziToast-overlay', '.iziToast-wrapper', '.prev-next',
+ 'footer', '#l_header', '#l_cover', '#l_side', '#comments', '#s-top', '#BKG',
+ '#rightmenu-wrapper', '.nav-tabs', '.parallax-mirror', '.new-meta-item.share', 'div.footer'
+ ]);
+ DOMController.setStyleList([
+ ['body', 'backgroundColor', 'unset'], ['#l_main', 'width', '100%'], ['#post', 'boxShadow', 'none'],
+ ['#post', 'background', 'none'], ['#post', 'padding', '0'], ['h1', 'textAlign', 'center'],
+ ['h1', 'fontWeight', '600'], ['h1', 'fontSize', '2rem'], ['h1', 'marginBottom', '20px'],
+ ['.tab-pane', 'display', 'block'], ['.tab-content', 'borderTop', 'none'], ['.highlight>table pre', 'whiteSpace', 'pre-wrap'],
+ ['.highlight>table pre', 'wordBreak', 'break-all'], ['.fancybox img', 'height', 'auto'], ['.fancybox img', 'weight', 'auto']
+ ]);
+ setTimeout(() => {
+ window.print();
+ document.body.innerHTML = '';
+ window.location.reload();
+ }, 50);
+ }
+
+ fn.readMode = () => {
+ if (typeof ScrollReveal === 'function') ScrollReveal().clean('#comments');
+ DOMController.fadeToggleList([
+ document.querySelector('#l_header'), document.querySelector('footer'),
+ document.querySelector('#s-top'), document.querySelector('.article-meta#bottom'),
+ document.querySelector('.prev-next'), document.querySelector('#l_side'),
+ document.querySelector('#comments')
+ ]);
+ DOMController.toggleClassList([
+ [document.querySelector('#l_main'), 'common_read'], [document.querySelector('#l_main'), 'common_read_main'],
+ [document.querySelector('#l_body'), 'common_read'], [document.querySelector('#safearea'), 'common_read'],
+ [document.querySelector('#pjax-container'), 'common_read'], [document.querySelector('#read_bkg'), 'common_read_hide'],
+ [document.querySelector('h1'), 'common_read_h1'], [document.querySelector('#post'), 'post_read'],
+ [document.querySelector('#l_cover'), 'read_cover'], [document.querySelector('.widget.toc-wrapper'), 'post_read']
+ ]);
+ DOMController.setStyle('.copyright.license', 'margin', '15px 0');
+ volantis.isReadModel = volantis.isReadModel === undefined ? true : !volantis.isReadModel;
+ if (volantis.isReadModel) {
+ if (RightMenus.messageRightMenu) VolantisApp.message('系统提示', '阅读模式已开启,您可以点击屏幕空白处退出。', {
+ backgroundColor: 'var(--color-read-post)',
+ icon: rightMenuConfig.options.iconPrefix + ' fa-book-reader',
+ displayMode: 1,
+ time: 5000
+ });
+ document.querySelector('#l_body').removeEventListener('click', fn.readMode);
+ document.querySelector('#l_body').addEventListener('click', (event) => {
+ if (DOMController.hasClass(event.target, 'common_read')) {
+ fn.readMode();
+ }
+ });
+ } else {
+ document.querySelector('#l_body').removeEventListener('click', fn.readMode);
+ document.querySelector('#post').removeEventListener('click', fn.readMode);
+ DOMController.setStyle('.prev-next', 'display', 'flex');
+ DOMController.setStyle('.copyright.license', 'margin', '15px -40px');
+ }
+ }
+
+ return {
+ init: fn.initEvent,
+ hideMenu: fn.hideMenu,
+ readMode: fn.readMode
+ }
+})()
+
+Object.freeze(RightMenus);
+volantis.requestAnimationFrame(() => {
+ if (document.readyState !== 'loading') {
+ RightMenus.initialMenu();
+ } else {
+ document.addEventListener("DOMContentLoaded", function () {
+ RightMenus.initialMenu();
+ })
+ }
+});
diff --git a/js/plugins/tags/contributors.js b/js/plugins/tags/contributors.js
new file mode 100644
index 0000000..f94e880
--- /dev/null
+++ b/js/plugins/tags/contributors.js
@@ -0,0 +1,92 @@
+const ContributorsJS = {
+ requestAPI: (url, callback, timeout) => {
+ let retryTimes = 5;
+
+ function request() {
+ return new Promise((resolve, reject) => {
+ let status = 0; // 0 等待 1 完成 2 超时
+ let timer = setTimeout(() => {
+ if (status === 0) {
+ status = 2;
+ timer = null;
+ reject('请求超时');
+ if (retryTimes == 0) {
+ timeout();
+ }
+ }
+ }, 5000);
+ fetch(url).then(function (response) {
+ if (status !== 2) {
+ clearTimeout(timer);
+ resolve(response);
+ timer = null;
+ status = 1;
+ }
+ if (response.ok) {
+ return response.json();
+ }
+ throw new Error('Network response was not ok.');
+ }).then(function (data) {
+ retryTimes = 0;
+ callback(data);
+ }).catch(function (error) {
+ if (retryTimes > 0) {
+ retryTimes -= 1;
+ setTimeout(() => {
+ request();
+ }, 5000);
+ } else {
+ timeout();
+ }
+ });
+ });
+ }
+ request();
+ },
+ layout: (cfg) => {
+ const el = cfg.el;
+ ContributorsJS.requestAPI(cfg.api, function (data) {
+ el.querySelector('.loading-wrap').remove();
+ var cellALL = "";
+ (data || []).forEach((item, i) => {
+ var user = '';
+ cellALL += user;
+ });
+ el.querySelector('.group-body').innerHTML = cellALL;
+ }, function () {
+ try {
+ el.querySelector('.loading-wrap svg').remove();
+ el.querySelector('.loading-wrap p').innerText('加载失败,请稍后重试。');
+ } catch (e) { }
+ });
+ },
+ start: () => {
+ const els = document.getElementsByClassName('contributorsjs-wrap');
+ for (var i = 0; i < els.length; i++) {
+ const el = els[i];
+ const api = el.getAttribute('api');
+ if (api == null) {
+ continue;
+ }
+ var cfg = new Object();
+ cfg.el = el;
+ cfg.api = api;
+ cfg.class = el.getAttribute('class');
+ cfg.avatar = volantis.GLOBAL_CONFIG.default.avatar;
+ ContributorsJS.layout(cfg);
+ }
+ }
+}
+
+
+
+ContributorsJS.start();
+document.addEventListener('pjax:complete', function () {
+ ContributorsJS.start();
+});
\ No newline at end of file
diff --git a/js/plugins/tags/friends.js b/js/plugins/tags/friends.js
new file mode 100644
index 0000000..349595a
--- /dev/null
+++ b/js/plugins/tags/friends.js
@@ -0,0 +1,93 @@
+const FriendsJS = {
+ requestAPI: (url, callback, timeout) => {
+ let retryTimes = 5;
+
+ function request() {
+ return new Promise((resolve, reject) => {
+ let status = 0; // 0 等待 1 完成 2 超时
+ let timer = setTimeout(() => {
+ if (status === 0) {
+ status = 2;
+ timer = null;
+ reject('请求超时');
+ if (retryTimes == 0) {
+ timeout();
+ }
+ }
+ }, 5000);
+ fetch(url).then(function (response) {
+ if (status !== 2) {
+ clearTimeout(timer);
+ resolve(response);
+ timer = null;
+ status = 1;
+ }
+ if (response.ok) {
+ return response.json();
+ }
+ throw new Error('Network response was not ok.');
+ }).then(function (data) {
+ retryTimes = 0;
+ callback(data);
+ }).catch(function (error) {
+ if (retryTimes > 0) {
+ retryTimes -= 1;
+ setTimeout(() => {
+ request();
+ }, 5000);
+ } else {
+ timeout();
+ }
+ });
+ });
+ }
+ request();
+ },
+ layout: (cfg) => {
+ const el = cfg.el;
+ FriendsJS.requestAPI(cfg.api, function (data) {
+ el.querySelector('.loading-wrap').remove();
+ const arr = data.content;
+ var cellALL = "";
+ arr.forEach((item, i) => {
+ var user = '';
+ cellALL += user;
+ });
+ el.querySelector('.group-body').innerHTML = cellALL;
+ }, function () {
+ try {
+ el.querySelector('.loading-wrap svg').remove();
+ el.querySelector('.loading-wrap p').innerText('加载失败,请稍后重试。');
+ } catch (e) { }
+ });
+ },
+ start: () => {
+ const els = document.getElementsByClassName('friendsjs-wrap');
+ for (var i = 0; i < els.length; i++) {
+ const el = els[i];
+ const api = el.getAttribute('api');
+ if (api == null) {
+ continue;
+ }
+ var cfg = new Object();
+ cfg.el = el;
+ cfg.api = api;
+ cfg.class = el.getAttribute('class');
+ cfg.avatar = volantis.GLOBAL_CONFIG.default.avatar;
+ FriendsJS.layout(cfg);
+ }
+ }
+}
+
+
+
+FriendsJS.start();
+document.addEventListener('pjax:complete', function () {
+ FriendsJS.start();
+});
\ No newline at end of file
diff --git a/js/plugins/tags/sites.js b/js/plugins/tags/sites.js
new file mode 100644
index 0000000..6abbffa
--- /dev/null
+++ b/js/plugins/tags/sites.js
@@ -0,0 +1,96 @@
+const SitesJS = {
+ requestAPI: (url, callback, timeout) => {
+ let retryTimes = 5;
+
+ function request() {
+ return new Promise((resolve, reject) => {
+ let status = 0; // 0 等待 1 完成 2 超时
+ let timer = setTimeout(() => {
+ if (status === 0) {
+ status = 2;
+ timer = null;
+ reject('请求超时');
+ if (retryTimes == 0) {
+ timeout();
+ }
+ }
+ }, 5000);
+ fetch(url).then(function (response) {
+ if (status !== 2) {
+ clearTimeout(timer);
+ resolve(response);
+ timer = null;
+ status = 1;
+ }
+ if (response.ok) {
+ return response.json();
+ }
+ throw new Error('Network response was not ok.');
+ }).then(function (data) {
+ retryTimes = 0;
+ callback(data);
+ }).catch(function (error) {
+ if (retryTimes > 0) {
+ retryTimes -= 1;
+ setTimeout(() => {
+ request();
+ }, 5000);
+ } else {
+ timeout();
+ }
+ });
+ });
+ }
+ request();
+ },
+ layout: (cfg) => {
+ const el = cfg.el;
+ SitesJS.requestAPI(cfg.api, function (data) {
+ el.querySelector('.loading-wrap').remove();
+ const arr = data.content;
+ var cellALL = "";
+ arr.forEach((item, i) => {
+ var cell = '';
+ cellALL += cell;
+ });
+ el.querySelector('.group-body').innerHTML = cellALL;
+ }, function () {
+ try {
+ el.querySelector('.loading-wrap svg').remove();
+ el.querySelector('.loading-wrap p').innerText('加载失败,请稍后重试。');
+ } catch (e) { }
+ });
+ },
+ start: (cfg) => {
+ const els = document.getElementsByClassName('sitesjs-wrap');
+ for (var i = 0; i < els.length; i++) {
+ const el = els[i];
+ const api = el.getAttribute('api');
+ if (api == null) {
+ continue;
+ }
+ var cfg = new Object();
+ cfg.class = el.getAttribute('class');
+ cfg.el = el;
+ cfg.api = api;
+ cfg.avatar = volantis.GLOBAL_CONFIG.default.link;
+ cfg.screenshot = volantis.GLOBAL_CONFIG.default.cover;
+ SitesJS.layout(cfg);
+ }
+ }
+}
+
+
+SitesJS.start();
+document.addEventListener('pjax:complete', function () {
+ SitesJS.start();
+});
\ No newline at end of file
diff --git a/js/search/hexo.js b/js/search/hexo.js
new file mode 100644
index 0000000..dbe2cdf
--- /dev/null
+++ b/js/search/hexo.js
@@ -0,0 +1,192 @@
+let SearchService = (() => {
+ const fn = {};
+ fn.queryText = null;
+ fn.data = null;
+ fn.template = `
+`;
+ fn.init = () => {
+ let div = document.createElement("div");
+ div.innerHTML += fn.template;
+ document.body.append(div);
+ document.querySelectorAll(".u-search-form").forEach((e) => {
+ e.addEventListener("submit", fn.onSubmit, false);
+ });
+ let uSearchModalInput = document.querySelector("#u-search-modal-input");
+ uSearchModalInput.addEventListener("input", fn.onSubmit);
+ document
+ .querySelector("#u-search-btn-close")
+ .addEventListener("click", fn.close, false);
+ document
+ .querySelector("#modal-overlay")
+ .addEventListener("click", fn.close, false);
+ };
+ fn.onSubmit = (event) => {
+ event.preventDefault();
+ let input = event.target.querySelector(".u-search-input");
+ if (input) {
+ fn.queryText = input.value;
+ } else {
+ fn.queryText = event.target.value;
+ }
+
+ if (fn.queryText) {
+ fn.search();
+ }
+ };
+ fn.search = async () => {
+ document.querySelectorAll(".u-search-input").forEach((e) => {
+ e.value = fn.queryText;
+ });
+ document.querySelector("#u-search").style.display = "block";
+ if (!fn.data) {
+ fn.data = await fn.fetchData();
+ }
+ let results = "";
+ results += fn.buildResultList(fn.data.pages);
+ results += fn.buildResultList(fn.data.posts);
+ document.querySelector("#u-search .modal-results").innerHTML = results;
+ window.pjax && pjax.refresh(document.querySelector("#u-search"));
+ document.addEventListener("keydown", function f(event) {
+ if (event.code === "Escape") {
+ fn.close();
+ document.removeEventListener("keydown", f);
+ }
+ });
+ };
+ fn.close = () => {
+ document.querySelector("#u-search").style.display = "none";
+ };
+ fn.fetchData = () => {
+ return fetch(SearchServiceDataPath)
+ .then((response) => response.text())
+ .then((res) => {
+ const data = JSON.parse(res);
+ // console.log(data);
+ return data;
+ });
+ };
+ fn.buildResultList = (data) => {
+ let html = "";
+ data.forEach((post) => {
+ if (post.text) {
+ post.text = post.text.replace(/12345\d*/g, "") // 简易移除代码行号
+ }
+ if (!post.title && post.text) {
+ post.title = post.text.trim().slice(0, 15)
+ }
+ if (fn.contentSearch(post)) {
+ html += fn.buildResult(post.permalink, post.title, post.digest);
+ }
+ });
+ return html;
+ };
+ fn.contentSearch = (post) => {
+ let post_title = post.title.trim().toLowerCase();
+ let post_content = post.text.trim().toLowerCase();
+ let keywords = fn.queryText
+ .trim()
+ .toLowerCase()
+ .split(/[-\s]+/);
+ let foundMatch = false;
+ let index_title = -1;
+ let index_content = -1;
+ let first_occur = -1;
+ if (post_title && post_content) {
+ keywords.forEach((word, index) => {
+ index_title = post_title.indexOf(word);
+ index_content = post_content.indexOf(word);
+ if (index_title < 0 && index_content < 0) {
+ foundMatch = false;
+ } else {
+ foundMatch = true;
+ if (index_content < 0) {
+ index_content = 0;
+ }
+ if (index === 0) {
+ first_occur = index_content;
+ }
+ }
+ if (foundMatch) {
+ post_content = post.text.trim();
+ let start = 0;
+ let end = 0;
+ if (first_occur >= 0) {
+ start = Math.max(first_occur - 40, 0);
+ end =
+ start === 0
+ ? Math.min(200, post_content.length)
+ : Math.min(first_occur + 120, post_content.length);
+ let match_content = post_content.substring(start, end);
+ keywords.forEach(function (keyword) {
+ let regS = new RegExp(keyword, "gi");
+ match_content = match_content.replace(
+ regS,
+ "" + keyword + " "
+ );
+ });
+ post.digest = match_content + "......";
+ } else {
+ end = Math.min(200, post_content.length);
+ post.digest = post_content.trim().substring(0, end);
+ }
+ }
+ });
+ }
+ return foundMatch;
+ };
+ fn.buildResult = (url, title, digest) => {
+ let result = fn.getUrlRelativePath(url);
+ let html = "";
+ html += "";
+ html +=
+ "";
+ html += "" + title + " ";
+ if (digest !== "") html += "" + digest + " ";
+ html += " ";
+ html += " ";
+ return html;
+ };
+ fn.getUrlRelativePath = function (url) {
+ let arrUrl = url.split("//");
+ let start = arrUrl[1].indexOf("/");
+ let relUrl = arrUrl[1].substring(start);
+ if (relUrl.indexOf("?") != -1) {
+ relUrl = relUrl.split("?")[0];
+ }
+ return relUrl;
+ };
+ return {
+ init: () => {
+ fn.init();
+ },
+ setQueryText: (queryText) => {
+ fn.queryText = queryText;
+ },
+ search: () => {
+ fn.search();
+ },
+ };
+})();
+Object.freeze(SearchService);
+
+SearchService.init();
+document.addEventListener("pjax:success", SearchService.init);
+document.addEventListener("pjax:send", function () {
+ document.querySelector("#u-search").style.display = "none";
+});
diff --git a/page/2/index.html b/page/2/index.html
new file mode 100644
index 0000000..9c3ecbc
--- /dev/null
+++ b/page/2/index.html
@@ -0,0 +1,3966 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/page/3/index.html b/page/3/index.html
new file mode 100644
index 0000000..3f0a256
--- /dev/null
+++ b/page/3/index.html
@@ -0,0 +1,3966 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/page/4/index.html b/page/4/index.html
new file mode 100644
index 0000000..5e1a8a7
--- /dev/null
+++ b/page/4/index.html
@@ -0,0 +1,3576 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/placeholder b/placeholder
deleted file mode 100644
index e69de29..0000000
diff --git a/source/_data/author.yml b/source/_data/author.yml
new file mode 100644
index 0000000..9057d2c
--- /dev/null
+++ b/source/_data/author.yml
@@ -0,0 +1,17 @@
+SecureNexusLab:
+ name: SecureNexusLab
+ avatar: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/avatar/avatar.png
+ url: https://s11.ax1x.com/2024/02/09/pF3MDBT.jpg
+
+i3g1nner:
+ name: i3g1nner
+ avatar: https://s11.ax1x.com/2024/02/05/pFlxnXV.png
+ url: https://i3eg1nner.github.io/
+
+
+彦语:
+ name: 彦语
+ avatar: https://pic.imgdb.cn/item/65c596989f345e8d03b00186.jpg
+ url: https://yanyusec.github.io/
+
+
diff --git a/source/_data/friends.yml b/source/_data/friends.yml
new file mode 100644
index 0000000..34a4332
--- /dev/null
+++ b/source/_data/friends.yml
@@ -0,0 +1,118 @@
+- group: Web安全小组 # 分组标题
+ description: # 分组描述
+ items:
+ - title: 彦语 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596989f345e8d03b00186.jpg # 头像
+ url: https://yanyusec.github.io/ # 链接
+ description: '趁赤诚仍在,趁年华尚好' # 描述
+ - title: i3eg1nner # 名称
+ avatar: https://pic.imgdb.cn/item/65c596a79f345e8d03b01a39.png # 头像
+ url: https://i3eg1nner.github.io/ # 链接
+ description: '生命不息,折腾不止' # 描述
+ - title: 【白】 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596999f345e8d03b001e7.png # 头像
+ url: http://www.wangehacker.cn # 链接
+ description: '热爱的事情,一定有所收获' # 描述
+ - title: 怕踩的土豆雷 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596839f345e8d03afde99.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: 'Try Harder' # 描述
+ - title: 安稳 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596849f345e8d03afdf5e.jpg # 头像
+ url: https://tddddddddd.github.io # 链接
+ description: '关关难过关关过' # 描述
+ - title: root # 名称
+ avatar: https://pic.imgdb.cn/item/65c596849f345e8d03afdf23.png # 头像
+ url: https://chenchanghui.github.io # 链接
+ description: '越努力,越幸运' # 描述
+ - title: 浅忆 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596909f345e8d03aff347.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '人若无名,便可潜心练剑' # 描述
+ - title: 佛系白猫 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596909f345e8d03aff367.png # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '拯救世界,保护地球' # 描述
+ - title: whistleH # 名称
+ avatar: https://pic.imgdb.cn/item/65c596909f345e8d03aff3cb.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '天青色等烟雨,而我在等你' # 描述
+
+- group: 二进制小组 # 分组标题
+ description: # 分组描述
+ items:
+ - title: MOUCHEN # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+ - title: Kidder1 # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://kidder1.github.io/ # 链接
+ description: ' ' # 描述
+ - title: unpWn4bl3 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596849f345e8d03afe0a1.png # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '想要一觉醒来年入百洞' # 描述
+ - title: 郭小白QAQ # 名称
+ avatar: https://pic.imgdb.cn/item/65c596859f345e8d03afe0fd.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '精彩不亮丽,起落是无常' # 描述
+ - title: re1wn # 名称
+ avatar: https://pic.imgdb.cn/item/65c596909f345e8d03aff3a3.jpg # 头像
+ url: https://blog.csdn.net/weixin_45055269 # 链接
+ description: '一个热爱信息安全的小白' # 描述
+
+ - title: 4n4gar1ka # 名称
+ avatar: https://pic.imgdb.cn/item/65c596989f345e8d03b00153.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '无法驾驭自身的人,将永远是奴隶' # 描述
+ - title: Jarvis # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+
+ - title: Arrebol # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+
+
+- group: 团队支持小组 # 分组标题
+ description: # 分组描述
+ items:
+ - title: rainki # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+ - title: 水母 # 名称
+ avatar: https://pic.imgdb.cn/item/65c596909f345e8d03aff30f.png # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: '好好学习' # 描述
+ - title: Swizzer # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+ - title: TBK # 名称
+ avatar: https://pic.imgdb.cn/item/65c596989f345e8d03b000df.jpg # 头像
+ url: https://blog.csdn.net/qq_43390703 # 链接
+ description: '嘿嘿嘿,阿巴阿巴' # 描述
+ - title: 安修 # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://anxiu.cloud # 链接
+ description: ' ' # 描述
+ - title: joker # 名称
+ avatar: https://pic.imgdb.cn/item/65c596989f345e8d03b00117.jpg # 头像
+ url: https://blog.csdn.net/m0_66935689 # 链接
+ description: '非淡泊无以明志,非宁静无以致远' # 描述
+ - title: To0of # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+ - title: Ethan # 名称
+ avatar: https://pic.imgdb.cn/item/65c5969e9f345e8d03b00b7f.jpg # 头像
+ url: https://securenexuslab.github.io/ # 链接
+ description: ' ' # 描述
+
+
+
+
diff --git a/source/_posts/bad-usb.md b/source/_posts/bad-usb.md
new file mode 100644
index 0000000..78f9534
--- /dev/null
+++ b/source/_posts/bad-usb.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: BadUSB制作教程
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-07-27 00:10:52
+tags:
+- 社区分享
+- BadUSB
+categories:
+- 社区分享
+---
+
+分享人:root
+
+
\ No newline at end of file
diff --git a/source/_posts/broken-access-control.md b/source/_posts/broken-access-control.md
new file mode 100644
index 0000000..b35c4f0
--- /dev/null
+++ b/source/_posts/broken-access-control.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 越权漏洞知识
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-05 10:00:00
+tags:
+- 社区分享
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:白色键盘
+
+
\ No newline at end of file
diff --git a/source/_posts/crypt-introduction.md b/source/_posts/crypt-introduction.md
new file mode 100644
index 0000000..fc43c98
--- /dev/null
+++ b/source/_posts/crypt-introduction.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Crypto入门
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- 密码学
+categories:
+- 社区分享
+---
+
+分享人:Keyboard
+
+
\ No newline at end of file
diff --git a/source/_posts/csrf.md b/source/_posts/csrf.md
new file mode 100644
index 0000000..6784fcf
--- /dev/null
+++ b/source/_posts/csrf.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: csrf漏洞讲解与实战
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:Enc3l
+
+
\ No newline at end of file
diff --git a/source/_posts/datacon.md b/source/_posts/datacon.md
new file mode 100644
index 0000000..3426da1
--- /dev/null
+++ b/source/_posts/datacon.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: DataCon经验分享
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-15 00:36:28
+tags:
+- 社区分享
+- DataCon
+categories:
+- 社区分享
+---
+
+分享人:MOUCHEN
+
+
\ No newline at end of file
diff --git a/source/_posts/elf-file-format.md b/source/_posts/elf-file-format.md
new file mode 100644
index 0000000..5ef1e34
--- /dev/null
+++ b/source/_posts/elf-file-format.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: elf文件格式解析
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-07-27 00:10:52
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:antel0p3
+
+
\ No newline at end of file
diff --git a/source/_posts/fuzz-introduction.md b/source/_posts/fuzz-introduction.md
new file mode 100644
index 0000000..92591a1
--- /dev/null
+++ b/source/_posts/fuzz-introduction.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: Fuzz模糊测试系列分享(一)模糊测试简介
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- FUZZ
+categories:
+- 社区分享
+---
+
+分享人:TBK
+
+
+
\ No newline at end of file
diff --git a/source/_posts/fuzz-libfuzz-introduction.md b/source/_posts/fuzz-libfuzz-introduction.md
new file mode 100644
index 0000000..f2cdcf1
--- /dev/null
+++ b/source/_posts/fuzz-libfuzz-introduction.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Fuzz模糊测试系列分享(三)libfuzz简介
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-10-30 21:56:32
+tags:
+- 社区分享
+- FUZZ
+categories:
+- 社区分享
+---
+
+分享人:TBK
+
+
\ No newline at end of file
diff --git a/source/_posts/fuzz-libfuzz-sourcecode.md b/source/_posts/fuzz-libfuzz-sourcecode.md
new file mode 100644
index 0000000..f40feb4
--- /dev/null
+++ b/source/_posts/fuzz-libfuzz-sourcecode.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Fuzz模糊测试系列分享(四)libfuzz源码解读
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-02 10:00:00
+tags:
+- 社区分享
+- FUZZ
+categories:
+- 社区分享
+---
+
+分享人:TBK
+
+
\ No newline at end of file
diff --git a/source/_posts/fuzz-tester.md b/source/_posts/fuzz-tester.md
new file mode 100644
index 0000000..fbc63db
--- /dev/null
+++ b/source/_posts/fuzz-tester.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Fuzz模糊测试系列分享(二)手写一个模糊测试器
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-10-14 16:22:32
+tags:
+- 社区分享
+- FUZZ
+categories:
+- 社区分享
+---
+
+分享人:TBK
+
+
\ No newline at end of file
diff --git a/source/_posts/hardswap-uniswap.md b/source/_posts/hardswap-uniswap.md
new file mode 100644
index 0000000..a0f374f
--- /dev/null
+++ b/source/_posts/hardswap-uniswap.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Hardhat框架与Uniswap交易代码
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-01 20:50:00
+tags:
+- 社区分享
+- 智能合约
+categories:
+- 社区分享
+---
+
+分享人:流竹君雅
+
+
\ No newline at end of file
diff --git a/source/_posts/hello-world.md b/source/_posts/hello-world.md
new file mode 100644
index 0000000..5b7a7b3
--- /dev/null
+++ b/source/_posts/hello-world.md
@@ -0,0 +1,43 @@
+---
+title: Hello World
+author: SecureNexusLab
+readmore: true
+typora-root-url: ./..
+---
+Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).
+
+## Quick Start
+
+### Create a new post
+
+``` bash
+$ hexo new "My New Post"
+```
+
+More info: [Writing](https://hexo.io/docs/writing.html)
+
+### Run server
+
+``` bash
+$ hexo server
+```
+
+More info: [Server](https://hexo.io/docs/server.html)
+
+### Generate static files
+
+``` bash
+$ hexo generate
+```
+
+More info: [Generating](https://hexo.io/docs/generating.html)
+
+### Deploy to remote sites
+
+``` bash
+$ hexo deploy
+```
+
+More info: [Deployment](https://hexo.io/docs/one-command-deployment.html)
+
+![image-20240206015250320](/images/hello-world/image-20240206015250320.png)
\ No newline at end of file
diff --git a/source/_posts/iot-firmware-guide.md b/source/_posts/iot-firmware-guide.md
new file mode 100644
index 0000000..24da7b4
--- /dev/null
+++ b/source/_posts/iot-firmware-guide.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 物联网固件分析指南
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-11 11:04:19
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:gxh191
+
+
\ No newline at end of file
diff --git a/source/_posts/iot-firmware.md b/source/_posts/iot-firmware.md
new file mode 100644
index 0000000..66262df
--- /dev/null
+++ b/source/_posts/iot-firmware.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 物联网固件仿真与漏洞挖掘基础思路
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-23 21:00:00
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:re1wn
+
+
\ No newline at end of file
diff --git a/source/_posts/iot-re.md b/source/_posts/iot-re.md
new file mode 100644
index 0000000..691cf16
--- /dev/null
+++ b/source/_posts/iot-re.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: IoT:手把手带你复现两个漏洞
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-20 10:30:00
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:zer0_1s
+
+
\ No newline at end of file
diff --git a/source/_posts/logical-flaw.md b/source/_posts/logical-flaw.md
new file mode 100644
index 0000000..b0b5a9f
--- /dev/null
+++ b/source/_posts/logical-flaw.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: 逻辑漏洞和src小技巧
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-10-27 23:12:10
+tags:
+- 社区分享
+- Web安全
+- SRC
+categories:
+- 社区分享
+---
+
+分享人:彦语
+
+
\ No newline at end of file
diff --git a/source/_posts/mevbot.md b/source/_posts/mevbot.md
new file mode 100644
index 0000000..dd84759
--- /dev/null
+++ b/source/_posts/mevbot.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: MEVBot Exploit
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-05 20:50:00
+tags:
+- 社区分享
+- 智能合约
+categories:
+- 社区分享
+---
+
+分享人:LCatro
+
+
\ No newline at end of file
diff --git a/source/_posts/nodejs.md b/source/_posts/nodejs.md
new file mode 100644
index 0000000..c39bd6c
--- /dev/null
+++ b/source/_posts/nodejs.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Node.js原型链污染
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2024-01-18 18:08:34
+tags:
+- 社区分享
+- Node.js
+categories:
+- 社区分享
+---
+
+分享人:蒙面阿强
+
+
\ No newline at end of file
diff --git a/source/_posts/php-unserialize.md b/source/_posts/php-unserialize.md
new file mode 100644
index 0000000..a56aba0
--- /dev/null
+++ b/source/_posts/php-unserialize.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: PHP反序列化漏洞
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-07-24 01:04:04
+tags:
+- 社区分享
+- PHP
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:p5ych
+
+
\ No newline at end of file
diff --git a/source/_posts/postgraduate-job.md b/source/_posts/postgraduate-job.md
new file mode 100644
index 0000000..17a4acb
--- /dev/null
+++ b/source/_posts/postgraduate-job.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 科普篇——关于考研、保研和找工作
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2024-01-07 21:01:47
+tags:
+- 社区分享
+- 科普
+categories:
+- 社区分享
+---
+
+分享人:rainki
+
+
\ No newline at end of file
diff --git a/source/_posts/robot-study.md b/source/_posts/robot-study.md
new file mode 100644
index 0000000..9201432
--- /dev/null
+++ b/source/_posts/robot-study.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: Robot学习经历分享
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-21 10:00:00
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:阳仔
+
+
\ No newline at end of file
diff --git a/source/_posts/shell.md b/source/_posts/shell.md
new file mode 100644
index 0000000..2d527d5
--- /dev/null
+++ b/source/_posts/shell.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 服务器反弹shell
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-07-24 10:18:47
+tags:
+- 社区分享
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:邓祺
+
+
\ No newline at end of file
diff --git a/source/_posts/sql-bypass.md b/source/_posts/sql-bypass.md
new file mode 100644
index 0000000..78a2708
--- /dev/null
+++ b/source/_posts/sql-bypass.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: SQL注入防御绕过方法(SQL bypass)
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-10-26 12:10:00
+tags:
+- 社区分享
+- Web安全
+- Bypass
+categories:
+- 社区分享
+---
+
+分享人:白玉京
+
+
\ No newline at end of file
diff --git a/source/_posts/ssrf.md b/source/_posts/ssrf.md
new file mode 100644
index 0000000..bd43e96
--- /dev/null
+++ b/source/_posts/ssrf.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: 从零开始的SSRF
+author: i3g1nner
+cover: true
+sidebar: []
+readmore: true
+date: 2024-01-31 17:10:20
+tags:
+- 社区分享
+- SSRF
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:i3g1nner
+
+
\ No newline at end of file
diff --git a/source/_posts/ssti.md b/source/_posts/ssti.md
new file mode 100644
index 0000000..04e8248
--- /dev/null
+++ b/source/_posts/ssti.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: SSTI服务端模板注入
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-11-14 17:17:02
+tags:
+- 社区分享
+- Web安全
+- SSTI
+categories:
+- 社区分享
+---
+
+分享人:i3eg1nner
+
+
\ No newline at end of file
diff --git a/source/_posts/stack-overflow.md b/source/_posts/stack-overflow.md
new file mode 100644
index 0000000..5661d45
--- /dev/null
+++ b/source/_posts/stack-overflow.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 安全机制与栈溢出基础
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:antel0p3
+
+
\ No newline at end of file
diff --git a/source/_posts/steganography.md b/source/_posts/steganography.md
new file mode 100644
index 0000000..da1b2ad
--- /dev/null
+++ b/source/_posts/steganography.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 文件隐写
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- MISC
+categories:
+- 社区分享
+---
+
+分享人:F0rga1n
+
+
\ No newline at end of file
diff --git a/source/_posts/symbolic-execution.md b/source/_posts/symbolic-execution.md
new file mode 100644
index 0000000..716180f
--- /dev/null
+++ b/source/_posts/symbolic-execution.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: 简单了解符号执行
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-20 16:41:46
+tags:
+- 社区分享
+- 二进制安全
+- 符号执行
+categories:
+- 社区分享
+---
+
+分享人:Celeste_GXB
+
+
\ No newline at end of file
diff --git a/source/_posts/tools.md b/source/_posts/tools.md
new file mode 100644
index 0000000..8897b00
--- /dev/null
+++ b/source/_posts/tools.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: 二进制分析工具
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-07-26 23:17:59
+tags:
+- 社区分享
+- 工具
+- 二进制安全
+categories:
+- 社区分享
+---
+
+分享人:antel0p3
+
+
\ No newline at end of file
diff --git a/source/_posts/upload-file-introduvtion.md b/source/_posts/upload-file-introduvtion.md
new file mode 100644
index 0000000..f2222a5
--- /dev/null
+++ b/source/_posts/upload-file-introduvtion.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 文件上传漏洞基础
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-08 00:28:51
+tags:
+- 社区分享
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:mjc
+
+
\ No newline at end of file
diff --git a/source/_posts/upload-file-sp.md b/source/_posts/upload-file-sp.md
new file mode 100644
index 0000000..dfb7571
--- /dev/null
+++ b/source/_posts/upload-file-sp.md
@@ -0,0 +1,19 @@
+---
+layout: page
+title: 文件上传另类应用
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-20 16:27:54
+tags:
+- 社区分享
+- Web安全
+- 文件上传
+categories:
+- 社区分享
+---
+
+分享人:老梁
+
+
diff --git a/source/_posts/v2x-introduction.md b/source/_posts/v2x-introduction.md
new file mode 100644
index 0000000..19f1d87
--- /dev/null
+++ b/source/_posts/v2x-introduction.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: 车联网安全入门分享
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-12-27 15:54:23
+tags:
+- 社区分享
+- 车联网安全
+categories:
+- 社区分享
+---
+
+分享人:风间映川
+
+
\ No newline at end of file
diff --git a/source/_posts/windows-pe.md b/source/_posts/windows-pe.md
new file mode 100644
index 0000000..7f3c0b5
--- /dev/null
+++ b/source/_posts/windows-pe.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: windows权限提升
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-03 23:18:32
+tags:
+- 社区分享
+- Windows提权
+categories:
+- 社区分享
+---
+
+分享人:D4wn
+
+
\ No newline at end of file
diff --git a/source/_posts/xss-introduction.md b/source/_posts/xss-introduction.md
new file mode 100644
index 0000000..da40af0
--- /dev/null
+++ b/source/_posts/xss-introduction.md
@@ -0,0 +1,18 @@
+---
+layout: page
+title: xss漏洞原理基础与实战
+author: SecureNexusLab
+cover: true
+sidebar: []
+readmore: true
+date: 2023-08-04 12:00:00
+tags:
+- 社区分享
+- Web安全
+categories:
+- 社区分享
+---
+
+分享人:cheng_xing
+
+
\ No newline at end of file
diff --git a/source/about/index.md b/source/about/index.md
new file mode 100644
index 0000000..d9f7827
--- /dev/null
+++ b/source/about/index.md
@@ -0,0 +1,11 @@
+---
+layout: docs
+seo_title: 关于
+bottom_meta: false
+sidebar: []
+twikoo:
+ placeholder: 有什么想对我说的呢?
+---
+
+
+欢迎加入我们:343380539(QQ群),一起建立一个知识分享社群~
\ No newline at end of file
diff --git a/source/categories/index.md b/source/categories/index.md
new file mode 100644
index 0000000..e5ab835
--- /dev/null
+++ b/source/categories/index.md
@@ -0,0 +1,5 @@
+---
+layout: category
+index: true
+title: 所有分类
+---
\ No newline at end of file
diff --git a/source/contributors/index.md b/source/contributors/index.md
new file mode 100644
index 0000000..8367844
--- /dev/null
+++ b/source/contributors/index.md
@@ -0,0 +1,12 @@
+---
+layout: friends # 必须
+title: SecureNexusLab团队 # 可选,这是友链页的标题
+author: SecureNexusLab
+---
+
+近期成绩:
+edusrc 总提交漏洞数量: 97 | 江西财经大学、同济大学、辽宁交通学院等漏洞报送证书 | cnvd漏洞若干 | 漏洞盒子公益src月榜前15 | 百度src月榜23 | 在腾讯src、新氧src等企业安全应急响应中心提交过漏洞,目前主要精力在挖掘企业src | datacon 漏洞挖掘赛道第四名 | 多个物联网固件0day漏洞
+
+
+
+
diff --git a/source/tags/index.md b/source/tags/index.md
new file mode 100644
index 0000000..5ba5487
--- /dev/null
+++ b/source/tags/index.md
@@ -0,0 +1,5 @@
+---
+layout: tag
+index: true
+title: 所有标签
+---
\ No newline at end of file
diff --git a/tags/BadUSB/index.html b/tags/BadUSB/index.html
new file mode 100644
index 0000000..ceca284
--- /dev/null
+++ b/tags/BadUSB/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: BadUSB - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/Bypass/index.html b/tags/Bypass/index.html
new file mode 100644
index 0000000..b482005
--- /dev/null
+++ b/tags/Bypass/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: Bypass - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/DataCon/index.html b/tags/DataCon/index.html
new file mode 100644
index 0000000..4aac8b0
--- /dev/null
+++ b/tags/DataCon/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: DataCon - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/FUZZ/index.html b/tags/FUZZ/index.html
new file mode 100644
index 0000000..ab7c001
--- /dev/null
+++ b/tags/FUZZ/index.html
@@ -0,0 +1,3577 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: FUZZ - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/MISC/index.html b/tags/MISC/index.html
new file mode 100644
index 0000000..04f8e73
--- /dev/null
+++ b/tags/MISC/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: MISC - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/Node-js/index.html b/tags/Node-js/index.html
new file mode 100644
index 0000000..baddf1d
--- /dev/null
+++ b/tags/Node-js/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: Node.js - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/PHP/index.html b/tags/PHP/index.html
new file mode 100644
index 0000000..9b72202
--- /dev/null
+++ b/tags/PHP/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: PHP - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/SRC/index.html b/tags/SRC/index.html
new file mode 100644
index 0000000..bb20ce6
--- /dev/null
+++ b/tags/SRC/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: SRC - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/SSRF/index.html b/tags/SSRF/index.html
new file mode 100644
index 0000000..060639d
--- /dev/null
+++ b/tags/SSRF/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: SSRF - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/SSTI/index.html b/tags/SSTI/index.html
new file mode 100644
index 0000000..d28d0a4
--- /dev/null
+++ b/tags/SSTI/index.html
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: SSTI - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/Web\345\256\211\345\205\250/index.html" "b/tags/Web\345\256\211\345\205\250/index.html"
new file mode 100644
index 0000000..62cb560
--- /dev/null
+++ "b/tags/Web\345\256\211\345\205\250/index.html"
@@ -0,0 +1,3989 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: Web安全 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 / 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/Web\345\256\211\345\205\250/page/2/index.html" "b/tags/Web\345\256\211\345\205\250/page/2/index.html"
new file mode 100644
index 0000000..c180a4b
--- /dev/null
+++ "b/tags/Web\345\256\211\345\205\250/page/2/index.html"
@@ -0,0 +1,3388 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: Web安全 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2 / 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/Windows\346\217\220\346\235\203/index.html" "b/tags/Windows\346\217\220\346\235\203/index.html"
new file mode 100644
index 0000000..6e72111
--- /dev/null
+++ "b/tags/Windows\346\217\220\346\235\203/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: Windows提权 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/index.html b/tags/index.html
new file mode 100644
index 0000000..25c99bd
--- /dev/null
+++ b/tags/index.html
@@ -0,0 +1,3214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 所有标签 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\344\272\214\350\277\233\345\210\266\345\256\211\345\205\250/index.html" "b/tags/\344\272\214\350\277\233\345\210\266\345\256\211\345\205\250/index.html"
new file mode 100644
index 0000000..eb82cf7
--- /dev/null
+++ "b/tags/\344\272\214\350\277\233\345\210\266\345\256\211\345\205\250/index.html"
@@ -0,0 +1,3841 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 二进制安全 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\345\257\206\347\240\201\345\255\246/index.html" "b/tags/\345\257\206\347\240\201\345\255\246/index.html"
new file mode 100644
index 0000000..4898c36
--- /dev/null
+++ "b/tags/\345\257\206\347\240\201\345\255\246/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 密码学 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\345\267\245\345\205\267/index.html" "b/tags/\345\267\245\345\205\267/index.html"
new file mode 100644
index 0000000..95f50db
--- /dev/null
+++ "b/tags/\345\267\245\345\205\267/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 工具 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\346\226\207\344\273\266\344\270\212\344\274\240/index.html" "b/tags/\346\226\207\344\273\266\344\270\212\344\274\240/index.html"
new file mode 100644
index 0000000..e1bd4ee
--- /dev/null
+++ "b/tags/\346\226\207\344\273\266\344\270\212\344\274\240/index.html"
@@ -0,0 +1,3380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 文件上传 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\346\231\272\350\203\275\345\220\210\347\272\246/index.html" "b/tags/\346\231\272\350\203\275\345\220\210\347\272\246/index.html"
new file mode 100644
index 0000000..f2b277d
--- /dev/null
+++ "b/tags/\346\231\272\350\203\275\345\220\210\347\272\246/index.html"
@@ -0,0 +1,3445 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 智能合约 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\244\276\345\214\272\345\210\206\344\272\253/index.html" "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/index.html"
new file mode 100644
index 0000000..28a1a0d
--- /dev/null
+++ "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/index.html"
@@ -0,0 +1,3989 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3g1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:蒙面阿强
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:老梁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:gxh191
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:LCatro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:流竹君雅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:re1wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html" "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html"
new file mode 100644
index 0000000..38524bc
--- /dev/null
+++ "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/2/index.html"
@@ -0,0 +1,3970 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:阳仔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:zer0_1s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:MOUCHEN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:i3eg1nner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白色键盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:彦语
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:白玉京
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html" "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html"
new file mode 100644
index 0000000..3889574
--- /dev/null
+++ "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/3/index.html"
@@ -0,0 +1,3970 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:mjc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Keyboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Enc3l
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:TBK
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:F0rga1n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:cheng_xing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:D4wn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:root
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html" "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html"
new file mode 100644
index 0000000..7fbb102
--- /dev/null
+++ "b/tags/\347\244\276\345\214\272\345\210\206\344\272\253/page/4/index.html"
@@ -0,0 +1,3516 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 社区分享 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:antel0p3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:邓祺
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:p5ych
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\247\221\346\231\256/index.html" "b/tags/\347\247\221\346\231\256/index.html"
new file mode 100644
index 0000000..06c6605
--- /dev/null
+++ "b/tags/\347\247\221\346\231\256/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 科普 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:rainki
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\347\254\246\345\217\267\346\211\247\350\241\214/index.html" "b/tags/\347\254\246\345\217\267\346\211\247\350\241\214/index.html"
new file mode 100644
index 0000000..4669746
--- /dev/null
+++ "b/tags/\347\254\246\345\217\267\346\211\247\350\241\214/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 符号执行 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:Celeste_GXB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/tags/\350\275\246\350\201\224\347\275\221\345\256\211\345\205\250/index.html" "b/tags/\350\275\246\350\201\224\347\275\221\345\256\211\345\205\250/index.html"
new file mode 100644
index 0000000..b24e6e2
--- /dev/null
+++ "b/tags/\350\275\246\350\201\224\347\275\221\345\256\211\345\205\250/index.html"
@@ -0,0 +1,3379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag: 车联网安全 - SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, your browser cannot access this site
+
This page requires browser support (enable) JavaScript
+
Learn more >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享人:风间映川
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SecureNexusLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+