diff --git a/source/css/barrager.css b/source/css/barrager.css
new file mode 100644
index 0000000..ba52628
--- /dev/null
+++ b/source/css/barrager.css
@@ -0,0 +1,81 @@
+.barrage {
+ position: fixed;
+ bottom: 70px;
+ right: -500px;
+ display: inline-block;
+ width: 500px;
+ z-index: 99999
+}
+
+.barrage_box {
+ background-color: rgba(0, 0, 0, .5);
+ padding-right: 8px;
+ height: 40px;
+ display: inline-block;
+ border-radius: 25px;
+ transition: all .3s;
+}
+
+.barrage_box .portrait {
+ display: inline-block;
+ margin-top: 4px;
+ margin-left: 4px;
+ width: 32px;
+ height: 32px;
+ border-radius: 50%;
+ overflow: hidden;
+}
+
+.barrage_box .portrait img {
+ width: 100%;
+ height: 100%;
+}
+
+.barrage_box div.p a {
+ margin-right: 2px;
+ font-size: 14px;
+ color: #fff;
+ line-height: 40px;
+ margin-left: 18px;
+}
+
+.barrage_box div.p a:hover {
+ text-decoration: underline;
+}
+
+.barrage_box .close {
+ visibility: hidden;
+ opacity: 0;
+ text-align: center;
+ width: 25px;
+ height: 25px;
+ margin-left: 20px;
+ border-radius: 50%;
+ background: rgba(255, 255, 255, .1);
+ margin-top: 8px;
+ background-image: url(/medias/barrager/close.png);
+}
+
+.barrage_box:hover .close {
+ visibility: visible;
+ opacity: 1;
+}
+
+.barrage_box .close a {
+ display: block;
+}
+
+.barrage_box .close .icon-close {
+ font-size: 14px;
+ color: rgba(255, 255, 255, .5);
+ display: inline-block;
+ margin-top: 5px;
+}
+
+.barrage .z {
+ float: left !important;
+}
+
+.barrage a {
+ text-decoration: none;
+}
\ No newline at end of file
diff --git a/source/css/bb.css b/source/css/bb.css
new file mode 100644
index 0000000..65ee179
--- /dev/null
+++ b/source/css/bb.css
@@ -0,0 +1,125 @@
+div.timenode {
+ position: relative;
+}
+
+div.timenode:before,
+div.timenode:after {
+ content: '';
+ z-index: 1;
+ position: absolute;
+ background: rgba(68, 215, 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(68, 215, 182, 0.5);
+ width: 16px;
+ height: 16px;
+ border-radius: 8px;
+}
+
+div.timenode .meta:after {
+ background: #44d7b6;
+ margin-left: 2px;
+ margin-top: 2px;
+ width: 12px;
+ height: 12px;
+ border-radius: 6px;
+ transform: scale(0.5);
+ transition: all 0.28s ease;
+ -moz-transition: all 0.28s ease;
+ -webkit-transition: all 0.28s ease;
+ -o-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;
+ background: var(--color-block);
+ display: inline-block;
+}
+
+div.timenode .body:empty {
+ 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);
+}
+
+div.timenode .body {
+ margin: 0 0 0 24px;
+ padding: 16px;
+ border-radius: 8px;
+ background: #f6f6f6;
+ display: inline-block;
+}
+
+div.timenode time {
+ margin-left: 20px;
+}
diff --git a/source/css/gallery.css b/source/css/gallery.css
new file mode 100644
index 0000000..a257f7d
--- /dev/null
+++ b/source/css/gallery.css
@@ -0,0 +1,86 @@
+.gallery-wrapper{
+ padding-top: 30px;
+ }
+ .gallery-wrapper .gallery-box{
+ padding: 5px !important;
+ }
+
+ .gallery-wrapper .gallery-item {
+ display: block;
+ overflow: hidden;
+ background-color: #fff;
+ padding: 5px;
+ padding-bottom: 0;
+ position: relative;
+ -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ }
+
+ .gallery-cover-box{
+ width: 100%;
+ padding-top: 60%;
+ text-align: center;
+ overflow: hidden;
+ position: relative;
+ background: center center no-repeat;
+ -webkit-background-size: cover;
+ background-size: cover;
+ }
+
+ .gallery-cover-box .gallery-cover-img {
+ display: inline-block;
+ width: 100%;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%,-50%);
+ }
+ .gallery-item .gallery-name{
+ font-size: 14px;
+ line-height: 24px;
+ text-align: center;
+ color: #666;
+ margin: 0;
+ }
+
+ .waterfall {
+ column-count: 3;
+ column-gap: 1em;
+ }
+ .photo-wrapper{
+ padding-top: 20px;
+ }
+ .photo-item {
+ display: block;
+ padding: 10px;
+ padding-bottom: 0;
+ margin-bottom: 14px;
+ font-size: 0;
+ -moz-page-break-inside: avoid;
+ -webkit-column-break-inside: avoid;
+ break-inside: avoid;
+ background: white;
+ -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22);
+ }
+ .photo-item img {
+ width: 100%;
+ }
+ .photo-item .photo-name{
+ font-size: 14px;
+ line-height: 30px;
+ text-align: center;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ border-top: 1px solid #dddddd;
+ }
+
+ /*适配移动端布局*/
+ @media only screen and (max-width: 601px) {
+ .waterfall {
+ column-count: 2;
+ column-gap: 1em;
+ }
+ }
\ No newline at end of file
diff --git a/source/css/gitment.css b/source/css/gitment.css
new file mode 100644
index 0000000..25015c2
--- /dev/null
+++ b/source/css/gitment.css
@@ -0,0 +1,321 @@
+#gitment-content {
+ padding: 1px 20px;
+}
+
+.gitment-card {
+ margin-top: 20px;
+}
+
+.gitment-container {
+ color: #34495e !important;
+}
+
+.gitment-container .gitment-header-like-btn {
+ color: #ab47bc;
+}
+
+.gitment-container .gitment-header-like-btn svg {
+ fill: #ab47bc;
+}
+
+.gitment-header-container span {
+ color: #ab47bc;
+}
+
+.gitment-container .gitment-header-issue-link {
+ color: #ab47bc;
+ font-weight: 500;
+}
+
+.gitment-container a.gitment-header-issue-link,
+a.gitment-header-issue-link:visited {
+ color: #ab47bc;
+}
+
+.gitment-container .gitment-comment-main {
+ border: 1px solid #e1bee7;
+ border-radius: 5px;
+}
+
+.gitment-container .gitment-comment-main .gitment-comment-header {
+ background-color: #fff;
+}
+
+.gitment-container .gitment-comment-main .gitment-comment-like-btn {
+ color: #ab47bc;
+}
+
+.gitment-container .gitment-comment-main .gitment-comment-like-btn svg {
+ fill: #ab47bc;
+ stroke: #ab47bc;
+ stroke-width: 2px;
+}
+
+.gitment-editor-container .gitment-editor-avatar .gitment-github-icon {
+ background-color: #ab47bc;
+}
+
+.gitment-editor-container .gitment-editor-main {
+ border: 1px solid #e1bee7;
+ border-radius: 3px;
+}
+
+.gitment-editor-container .gitment-editor-header {
+ border-bottom: 0;
+ border-radius: 3px;
+}
+
+.gitment-editor-main::after,
+.gitment-comment-main::after {
+ border-right-color: #ab47bc !important;
+}
+
+.gitment-editor-main .gitment-editor-tabs {
+ margin-left: 0;
+ padding-left: 10px;
+ background: linear-gradient(60deg, #ab47bc, #7b1fa2);
+}
+
+.gitment-editor-main .gitment-editor-tabs .gitment-editor-tab {
+ color: #fff;
+ border-radius: 3px;
+}
+
+.gitment-editor-main .gitment-editor-tabs .gitment-selected {
+ background-color: rgba(255, 255, 255, 0.2);
+ transition: 0.3s background-color 0.2s;
+ border: 0 !important;
+ color: #fff !important;
+ font-weight: 500;
+}
+
+.gitment-editor-main .gitment-editor-login {
+ margin-top: -40px;
+ color: #ccc;
+}
+
+.gitment-editor-main .gitment-editor-login .gitment-editor-login-link {
+ color: #fff;
+}
+
+.gitment-comments-init-btn:disabled,
+.gitment-editor-submit:disabled {
+ background-color: #DFDFDF !important;
+ color: #9F9F9F !important;
+ border-radius: 0.2rem;
+ box-shadow: 0 2px 2px 0 rgba(153, 153, 153, 0.14), 0 3px 1px -2px rgba(153, 153, 153, 0.2), 0 1px 5px 0 rgba(153, 153, 153, 0.12) !important;
+}
+
+.gitment-editor-footer .gitment-editor-submit, .gitment-comments-init-btn {
+ color: #fff;
+ background-color: #9c27b0;
+ border-color: #9c27b0;
+ border-radius: 0.2rem;
+ box-shadow: 0 2px 2px 0 rgba(156, 39, 176, 0.14), 0 3px 1px -2px rgba(156, 39, 176, 0.2), 0 1px 5px 0 rgba(156, 39, 176, 0.12);
+}
+
+.gitment-footer-container {
+ color: #34495e !important;
+}
+
+.gitment-comments-pagination .gitment-comments-page-item {
+ display: inline-block;
+ cursor: pointer;
+ margin: 4px 5px;
+ padding: .25rem .5rem;
+ background-color: #9c27b0;
+ color: #fff;
+ border: 0;
+ border-radius: 2px !important;
+ box-shadow: 0 4px 5px 0 rgba(156, 39, 176, 0.14), 0 1px 10px 0 rgba(156, 39, 176, 0.12), 0 2px 4px -1px rgba(156, 39, 176, 0.2);
+}
+
+.gitment-footer-container a {
+ padding: 0 2px;
+ color: #ab47bc !important;
+ font-weight: 500;
+}
+
+.gitment-comment-main .gitment-markdown p {
+ color: #34495e;
+}
+
+.gitment-markdown p {
+ margin: 2px 2px 10px;
+ font-size: 1.05rem;
+ line-height: 1.78rem;
+}
+
+.gitment-markdown blockquote p {
+ text-indent: 0.2rem;
+}
+
+.gitment-markdown a {
+ padding: 0 2px;
+ color: #42b983;
+ font-weight: 500;
+ text-decoration: underline;
+}
+
+.gitment-markdown img {
+ max-width: 100%;
+ height: auto;
+ cursor: pointer;
+}
+
+.gitment-markdown ol li {
+ list-style-type: decimal;
+}
+
+.gitment-markdown ol,
+ul {
+ display: block;
+ padding-left: 2em;
+ word-spacing: 0.05rem;
+}
+
+.gitment-markdown ul li,
+ol li {
+ display: list-item;
+ line-height: 1.8rem;
+ font-size: 1rem;
+}
+
+.gitment-markdown ul li {
+ list-style-type: disc;
+}
+
+.gitment-markdown ul ul li {
+ list-style-type: circle;
+}
+
+.gitment-markdown table, th, td {
+ padding: 12px 13px;
+ border: 1px solid #dfe2e5;
+}
+
+.gitment-markdown table, th, td {
+ border: 0;
+}
+
+table tr:nth-child(2n), thead {
+ background-color: #fafafa;
+}
+
+.gitment-markdown table th {
+ background-color: #f2f2f2;
+ min-width: 80px;
+}
+
+.gitment-markdown table td {
+ min-width: 80px;
+}
+
+.gitment-markdown h1 {
+ font-size: 1.85rem;
+ font-weight: bold;
+ line-height: 2.2rem;
+}
+
+.gitment-markdown h2 {
+ font-size: 1.65rem;
+ font-weight: bold;
+ line-height: 1.9rem;
+}
+
+.gitment-markdown h3 {
+ font-size: 1.45rem;
+ font-weight: bold;
+ line-height: 1.7rem;
+}
+
+.gitment-markdown h4 {
+ font-size: 1.25rem;
+ font-weight: bold;
+ line-height: 1.5rem;
+}
+
+.gitment-markdown h5 {
+ font-size: 1.1rem;
+ font-weight: bold;
+ line-height: 1.4rem;
+}
+
+.gitment-markdown h6 {
+ font-size: 1rem;
+ line-height: 1.3rem;
+}
+
+.gitment-markdown p {
+ font-size: 1rem;
+ line-height: 1.5rem;
+}
+
+.gitment-markdown hr {
+ margin: 12px 0;
+ border: 0;
+ border-top: 1px solid #ccc;
+}
+
+.gitment-markdown blockquote {
+ margin: 15px 0;
+ border-left: 5px solid #42b983;
+ padding: 1rem 0.8rem 1rem 0.8rem;
+ color: #666;
+ background-color: rgba(66, 185, 131, .1);
+}
+
+.gitment-markdown pre {
+ padding: 1.2em;
+ margin: .5em 0;
+ background: #272822;
+ overflow: auto;
+ border-radius: 0.3em;
+ tab-size: 4;
+}
+
+.gitment-markdown code {
+ padding: 1px 1px;
+ font-size: 0.92rem;
+ color: #e96900;
+ background-color: #f8f8f8;
+ border-radius: 2px;
+}
+
+.gitment-markdown pre code {
+ padding: 0;
+ color: #e8eaf6;
+ background-color: #272822;
+}
+
+.gitment-markdown pre[class*="language-"] {
+ padding: 1.2em;
+ margin: .5em 0;
+}
+
+.gitment-markdown code[class*="language-"],
+pre[class*="language-"] {
+ color: #e8eaf6;
+}
+
+.gitment-markdown b,
+strong {
+ font-weight: bold;
+}
+
+.gitment-markdown dfn {
+ font-style: italic;
+}
+
+.gitment-markdown small {
+ font-size: 85%;
+}
+
+.gitment-markdown cite {
+ font-style: normal;
+}
+
+.gitment-markdown mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
\ No newline at end of file
diff --git a/source/css/matery.css b/source/css/matery.css
new file mode 100644
index 0000000..d8135d6
--- /dev/null
+++ b/source/css/matery.css
@@ -0,0 +1,2157 @@
+/*全局基础样式*/
+/*小屏幕下(手机类)的样式*/
+@media only screen and (max-width: 601px) {
+ .container {
+ width: 95%;
+ }
+}
+
+/*中等屏幕下(平板类)的样式*/
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+ .container {
+ width: 90%;
+ }
+}
+
+/*大屏幕下(桌面类)的样式*/
+@media only screen and (min-width: 993px) {
+ .container {
+ width: 90%;
+ max-width: 1125px;
+ }
+
+ .head-container {
+ position: absolute;
+ padding: 0 30px;
+ width: 100%;
+ }
+
+ .post-container {
+ width: 90%;
+ margin: 0 auto;
+ max-width: 1250px;
+ }
+}
+
+body {
+ background-color: #eaeaea;
+ margin: 0;
+ color: #34495e;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+h1 {
+ margin: 48px 0 22px -5px;
+ font-size: 2.0rem;
+ font-weight: bold;
+ line-height: 2.0rem;
+}
+
+h2 {
+ margin: 42px 0 18px -5px;
+ font-size: 1.8rem;
+ font-weight: bold;
+ line-height: 1.8rem;
+}
+
+h3 {
+ margin: 38px 0 15px -4px;
+ font-size: 1.6rem;
+ font-weight: bold;
+ line-height: 1.7rem;
+}
+
+h4 {
+ margin: 32px 0 12px -4px;
+ font-size: 1.45rem;
+ font-weight: bold;
+ line-height: 1.45rem;
+}
+
+h5 {
+ margin: 28px 0 8px -4px;
+ font-size: 1.2rem;
+ font-weight: bold;
+ line-height: 1.2rem;
+}
+
+h6 {
+ margin: 22px 0 4px -4px;
+ font-size: 1.1rem;
+ line-height: 1.1rem;
+}
+
+p {
+ font-size: 1rem;
+ line-height: 1.5rem;
+}
+
+hr {
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #ccc;
+}
+
+blockquote {
+ border-left: 5px solid #78909c;
+ padding: 1rem 0.8rem 0.2rem 0.8rem;
+ color: #666;
+ background-color: rgba(66, 185, 131, .1);
+}
+
+pre {
+ padding: 2rem 1rem 1rem 3rem !important;
+ border-radius: 0.35rem;
+ tab-size: 4;
+}
+
+.code-area::after {
+ content: " ";
+ position: absolute;
+ border-radius: 50%;
+ background: #ff5f56;
+ width: 12px;
+ height: 12px;
+ top: 0;
+ left: 12px;
+ margin-top: 12px;
+ -webkit-box-shadow: 20px 0 #ffbd2e, 40px 0 #27c93f;
+ box-shadow: 20px 0 #ffbd2e, 40px 0 #27c93f;
+}
+
+code {
+ padding: 1px 5px;
+ top: 13px !important;
+ font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace;
+ font-size: 0.91rem;
+ color: #e96900;
+ background-color: #f8f8f8;
+ border-radius: 2px;
+}
+
+.code_copy {
+ position: absolute;
+ top: 0.7rem;
+ right: 25px;
+ z-index: 1;
+ filter: invert(50%);
+ cursor: pointer;
+}
+
+.codecopy_notice {
+ position: absolute;
+ top: 0.7rem;
+ right: 6px;
+ z-index: 1;
+ filter: invert(50%);
+ opacity: 0;
+}
+
+.code_lang {
+ position: absolute;
+ top: 1.2rem;
+ right: 46px;
+ line-height: 0;
+ font-weight: bold;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ z-index: 1;
+ filter: invert(50%);
+ cursor: pointer;
+}
+
+.code-expand {
+ position: absolute;
+ top: 4px;
+ right: 0;
+ filter: invert(50%);
+ padding: 7px;
+ z-index: 999 !important;
+ cursor: pointer;
+ transition: all .3s;
+ transform: rotate(0deg);
+}
+
+.code-closed .code-expand {
+ transform: rotate(-180deg) !important;
+ transition: all .3s;
+}
+
+.code-closed pre::before {
+ height: 0;
+}
+
+pre code {
+ padding: 0;
+ color: #e8eaf6;
+ background-color: #272822;
+}
+
+/* 键盘 kbd 标签样式 */
+kbd {
+ margin: 0 3px;
+ padding: 3px 5px;
+ border-radius: 3px;
+ border: 1px solid #b4b4b4;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 2px 1px 0 rgba(255, 255, 255, 0.6) inset;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 0.9rem;
+ font-weight: 600;
+ background-color: #f8f8f8;
+ color: #34495e;
+ line-height: 1.8rem;
+ white-space: nowrap;
+}
+
+b,
+strong {
+ font-weight: bold;
+}
+
+dfn {
+ font-style: italic;
+}
+
+small {
+ font-size: 85%;
+}
+
+cite {
+ font-style: normal;
+}
+
+mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
+
+.card {
+ border-radius: 10px;
+ box-shadow: 0 15px 35px rgba(50, 50, 93, .1), 0 5px 15px rgba(0, 0, 0, .07) !important;
+}
+
+.card .card-image img {
+ border-radius: 8px 8px 0 0;
+ /* 修改文章列表图片填充样式为 cover 以覆盖整个区域而不会被缩放 */
+ object-fit: cover;
+}
+
+.container .row {
+ margin-bottom: 0;
+}
+
+.bg-color {
+ background-image: linear-gradient(to right, #78909c 0%, #546e7a 100%);
+ /* background-image: linear-gradient(to right, #ec407a 0%, #d81b60 100%); */
+}
+
+.text-color {
+ color: #546e7a !important;
+}
+
+.white-color {
+ color: #fff;
+}
+
+.progress-bar {
+ height: 4px;
+ position: fixed;
+ bottom: 0;
+ z-index: 300;
+ background: linear-gradient(to right, #78909c 0%, #546e7a 100%);
+ opacity: 0.8;
+}
+
+.sidenav-overlay {
+ z-index: 500;
+}
+
+.pd-header {
+ margin-top: -64px;
+}
+
+header .side-nav {
+ width: 240px;
+ z-index: 999;
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 7px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+nav {
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 7px 10px 0 rgba(0, 0, 0, 0.12);
+}
+/*
+header .nav-transparent {
+ background-color: transparent !important;
+ background-image: none;
+ box-shadow: none;
+}
+*/
+
+header .nav-transparent {
+ /* background-color: transparent !important; */
+ background-color: #546e7a;
+ /* background-color: #d81b60; */
+ background-image: none;
+ box-shadow: none;
+ }
+
+header nav .brand-span {
+ font-size: 1.45rem;
+}
+
+header .brand-logo .logo-img {
+ height: 45px;
+ vertical-align: middle;
+ padding-bottom: 6px;
+}
+
+header .brand-logo .logo-span {
+ font-size: 1.6rem;
+}
+
+/*修改顶部 logo 的文字垂直对齐为 top,避免默认 middle 看起来偏下*/
+header .brand-logo .waves-effect {
+ vertical-align: top;
+}
+
+header .button-collapse i {
+ font-size: 1.5rem;
+}
+
+header .side-nav .mobile-head {
+ padding: 0 15px;
+}
+
+header .side-nav .mobile-head img {
+ margin-top: 30px;
+ width: 75px;
+ height: 75px;
+}
+
+header .side-nav .mobile-head .logo-name {
+ margin-top: -30px;
+ padding-left: 10px;
+ font-size: 1.5rem;
+}
+
+header .side-nav .mobile-head .logo-desc {
+ margin-top: -10px;
+ padding-left: 10px;
+ padding-bottom: 10px;
+ font-size: 0.8rem;
+ line-height: 1.3rem;
+ color: #e3e3e3;
+}
+
+header .side-nav .menu-list li {
+ padding: 0;
+ margin-left: -15px;
+}
+
+header .side-nav .menu-list a {
+ height: 50px;
+ line-height: 50px;
+ color: #34495e !important;
+}
+
+.mobile-menu-list a i {
+ margin-left: 8px !important;
+ font-size: 1.16rem;
+ color: #34495e !important;
+}
+
+header .side-nav .fa-fw {
+ width: 3.3rem;
+ text-align: left;
+}
+
+header .side-nav .social-link {
+ position: absolute;
+ bottom: 45px;
+ padding-left: 15px;
+}
+
+.social-link a {
+ font-size: 1.2rem;
+ display: inline;
+ padding: 0 12px;
+}
+
+.cover-btns {
+ position: relative;
+ top: 10vh;
+ text-align: center;
+}
+
+.cover-btns a {
+ margin: 10px 15px;
+ padding: 0 35px;
+ height: 45px;
+ line-height: 45px;
+ font-size: 1rem;
+ color: #fff;
+ border: 1px solid #fff;
+ background-color: transparent;
+ border-radius: 30px;
+ box-shadow: none;
+}
+
+.cover-btns a:hover {
+ border: 1px solid #f44336;
+ background-color: #f44336;
+ box-shadow: 0 14px 26px -12px rgba(233, 30, 99, 0.42),
+ 0 4px 23px 0 rgba(0, 0, 0, 0.12),
+ 0 8px 10px -5px rgba(233, 30, 99, 0.2);
+}
+
+.cover-btns a i {
+ font-size: 1.1rem;
+ padding-right: 5px;
+}
+
+.scroll-down {
+ background: #333;
+ margin: 100px auto;
+ -webkit-animation: scroll-down 1.5s infinite;
+ -moz-animation: scroll-down 1.5s infinite;
+ -o-animation: scroll-down 1.5s infinite;
+ animation: scroll-down 1.5s infinite;
+}
+
+@-moz-keyframes scroll-down {
+ 0% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ -ms-filter: none;
+ filter: none;
+ top: -16px;
+ }
+
+ 100% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+}
+
+@-webkit-keyframes scroll-down {
+ 0% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ -ms-filter: none;
+ filter: none;
+ top: -16px;
+ }
+
+ 100% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+}
+
+@-o-keyframes scroll-down {
+ 0% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ -ms-filter: none;
+ filter: none;
+ top: -16px;
+ }
+
+ 100% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+}
+
+@keyframes scroll-down {
+ 0% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ -ms-filter: none;
+ filter: none;
+ top: -16px;
+ }
+
+ 100% {
+ opacity: 0.4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ top: 0;
+ }
+}
+
+.cover-social-link {
+ position: relative;
+ top: 23vh;
+ width: 100%;
+ text-align: center;
+}
+
+.cover-social-link a {
+ padding: 0 15px;
+ font-size: 1.35rem;
+ color: #fff;
+}
+
+header .go-back {
+ float: left;
+ position: relative;
+ padding-left: 5px;
+ padding-right: 5px;
+ z-index: 1;
+ height: 56px;
+}
+
+header .go-back i {
+ font-size: 1.6rem;
+ font-weight: 200;
+ line-height: 56px;
+}
+
+/* 背景图效果. */
+.bg-cover {
+ position: relative;
+ display: flex;
+ align-items: center;
+ height: 60vh;
+ padding: 0;
+ border: 0;
+ overflow: hidden;
+ background-position: center center;
+ background-size: cover;
+ transform: translate3d(0px, 0px, 0px);
+}
+
+.index-cover {
+ height: 100vh;
+}
+
+.post-cover {
+ height: 40vh !important;
+}
+
+/*
+.bg-cover:after {
+ -webkit-animation: rainbow 60s infinite;
+ animation: rainbow 60s infinite;
+}
+*/
+
+.bg-cover:before,
+.bg-cover:after {
+ position: absolute;
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ display: block;
+ left: 0;
+ top: 0;
+ content: "";
+}
+
+.bg-cover .container {
+ position: relative;
+ color: #fff;
+ z-index: 2;
+}
+
+.bg-cover .title {
+ font-size: 4rem;
+ line-height: 1.2em;
+ margin-bottom: 20px;
+ position: relative;
+}
+
+.bg-cover .description {
+ font-weight: 600;
+ font-size: 1.25rem;
+ line-height: 1.4em;
+ color: #eee;
+}
+
+.bg-cover .post-title {
+ margin: 0 auto;
+ font-size: 2.5rem;
+ font-weight: 500;
+}
+
+@-webkit-keyframes rainbow {
+
+ 0%,
+ 100% {
+ background: rgba(156, 39, 176, 0.75);
+ background: linear-gradient(45deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ }
+
+ 16% {
+ background: rgba(132, 13, 121, 0.75);
+ background: linear-gradient(45deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ }
+
+ 32% {
+ background: rgba(239, 83, 80, 0.75);
+ background: linear-gradient(45deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ }
+
+ 48% {
+ background: rgba(255, 87, 34, 0.75);
+ background: linear-gradient(45deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ }
+
+ 64% {
+ background: rgba(255, 160, 0, 0.75);
+ background: linear-gradient(45deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 160, 0, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 112, 66, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 160, 0, 0.65) 100%);
+ }
+
+ 80% {
+ background: rgba(233, 30, 99, 0.75);
+ background: linear-gradient(45deg, rgba(233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(2233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ }
+}
+
+@keyframes rainbow {
+
+ 0%,
+ 100% {
+ background: rgba(156, 39, 176, 0.75);
+ background: linear-gradient(45deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(156, 39, 176, 0.75) 0%, rgba(156, 39, 176, 0.65) 100%);
+ }
+
+ 16% {
+ background: rgba(132, 13, 121, 0.75);
+ background: linear-gradient(45deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(132, 13, 121, 0.75) 0%, rgba(132, 13, 121, 0.65) 100%);
+ }
+
+ 32% {
+ background: rgba(239, 83, 80, 0.75);
+ background: linear-gradient(45deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(239, 83, 80, 0.75) 0%, rgba(239, 83, 80, 0.65) 100%);
+ }
+
+ 48% {
+ background: rgba(255, 87, 34, 0.75);
+ background: linear-gradient(45deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(255, 87, 34, 0.75) 0%, rgba(255, 87, 34, 0.65) 100%);
+ }
+
+ 64% {
+ background: rgba(255, 160, 0, 0.75);
+ background: linear-gradient(45deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 160, 0, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 112, 66, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(255, 160, 0, 0.75) 0%, rgba(255, 160, 0, 0.65) 100%);
+ }
+
+ 80% {
+ background: rgba(233, 30, 99, 0.75);
+ background: linear-gradient(45deg, rgba(233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ background: -moz-linear-gradient(135deg, rgba(233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ background: -webkit-linear-gradient(135deg, rgba(2233, 30, 99, 0.75) 0%, rgba(233, 30, 99, 0.65) 100%);
+ }
+}
+
+.index-card {
+ margin-top: -10px;
+ padding-top: 20px;
+}
+
+.carousel-post .title {
+ font-size: 2.6rem;
+}
+
+.dream {
+ margin-top: 20px;
+ margin-bottom: 40px;
+}
+
+.dream .title,
+.music-player .title,
+.video-player .title {
+ margin-bottom: 20px;
+ font-size: 2rem;
+ font-weight: 700;
+}
+
+.dream .text {
+ opacity: .6;
+ font-size: 1.1rem;
+}
+
+.music-player,
+.video-player {
+ margin-top: 10px;
+ margin-bottom: 50px;
+}
+
+.music,
+.dplayer-video {
+ box-shadow: 0 5px 20px 0 rgba(0, 0, 0, .2), 0 10px 20px -12px rgba(0, 0, 0, .5) !important;
+}
+
+#recommend-sections {
+ margin-top: -30px;
+ padding-top: 30px;
+}
+
+.index-card .card .card-content {
+ padding: 20px 40px;
+}
+
+@media only screen and (min-width: 1418px) {
+ .recommend {
+ margin-top: 20px;
+ padding: 0 0.75rem;
+ }
+}
+
+@media only screen and (max-width: 601px) {
+ .index-card .card .card-content {
+ padding: 10px 10px;
+ }
+}
+
+/*中等屏幕下(平板类)的样式*/
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+ .index-card .card .card-content {
+ padding: 20px 20px;
+ }
+}
+
+.recommend .row .col {
+ padding: 0 1.25rem;
+}
+
+.recommend .title {
+ margin-top: 25px;
+ margin-bottom: 25px;
+ text-align: center;
+ font-size: 1.8rem;
+ font-weight: 700;
+ line-height: 1.8rem;
+}
+
+.recommend .post-card:before {
+ position: absolute;
+ z-index: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+ left: 0;
+ top: 0;
+ content: "";
+ background-color: rgba(0, 0, 0, .3);
+ border-radius: 10px;
+}
+
+.recommend .post-card {
+ position: relative;
+ width: 100%;
+ height: 300px;
+ max-height: 300px;
+ margin-bottom: 15px;
+ margin-top: 15px;
+ text-align: center;
+ border: 0;
+ border-radius: 10px;
+ color: rgba(0, 0, 0, .87);
+ background: #fff 50%;
+ background-size: cover;
+ box-shadow: 0 15px 35px rgba(50, 50, 93, .1), 0 5px 15px rgba(0, 0, 0, .07);
+}
+
+.recommend .post-card .post-body {
+ position: relative;
+ margin: 0 auto;
+ padding: 1.8rem 1.25rem;
+ z-index: 2;
+}
+
+.recommend .post-card .post-categories {
+ margin: 10px auto;
+}
+
+.recommend .post-card .post-categories .category {
+ padding: 0 8px;
+ color: hsla(0, 0%, 100%, .7) !important;
+ font-size: .75rem;
+ font-weight: 500;
+}
+
+.recommend .post-card a {
+ color: #fff;
+}
+
+.recommend .post-card .post-title {
+ height: 48px;
+ margin-top: 10px;
+ margin-bottom: 5px;
+}
+
+.recommend .post-card .post-description {
+ margin: 20px auto;
+ max-width: 500px;
+ height: 65px;
+ max-height: 65px;
+ font-size: 14px;
+ color: hsla(0, 0%, 100%, .78) !important;
+}
+
+.recommend .post-card .read-more {
+ height: 40px;
+ margin: .6rem 1px;
+ font-size: 0.9rem;
+ font-weight: 400;
+ line-height: 40px;
+ color: #fff;
+ border-radius: 30px;
+ box-shadow: 0 2px 2px 0 rgba(244, 67, 54, .14), 0 3px 1px -2px rgba(244, 67, 54, .2), 0 1px 5px 0 rgba(244, 67, 54, .12);
+}
+
+.recommend .post-card .read-more .icon {
+ font-size: 1.05rem;
+ padding-right: 10px;
+}
+
+.archive-calendar {
+ margin-top: -60px;
+ max-width: 820px;
+}
+
+#post-calendar {
+ width: 100%;
+ height: 225px;
+}
+
+.settings-content {
+ margin-top: -10px;
+}
+
+/*文章列表卡片各样式*/
+#articles {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+article a {
+ margin-right: 0 !important;
+ color: #525f7f;
+ text-transform: none !important;
+}
+
+article a:hover {
+ font-weight: bold;
+ color: #78909c;
+ text-decoration: underline;
+}
+
+.articles .row {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+article .card {
+ border-radius: 8px;
+ overflow: hidden;
+}
+
+article .card-image {
+ background-color: #222;
+ border-radius: 8px;
+}
+
+article .card-image img {
+ height: 220px;
+ border-radius: 0.3rem;
+ opacity: .7;
+}
+
+article .tag-image img {
+ height: 220px;
+}
+
+article .card .card-content {
+ padding: 15px 15px 12px 18px;
+}
+
+article .article-content .summary {
+ padding-bottom: 2px;
+ padding-left: 0;
+ margin-bottom: 6px;
+ word-break: break-all;
+}
+
+article .article-content .publish-author {
+ float: right;
+}
+
+.publish-date .icon-date {
+ padding-right: 5px;
+}
+
+.publish-author .icon-category {
+ padding-left: 10px;
+}
+
+.article-content .publish-author .post-category {
+ padding-left: 5px;
+}
+
+article .card .card-action {
+ padding: 10px 15px 10px 18px;
+ border-radius: 0 0 8px 8px !important;
+}
+
+article .article-tags .chip {
+ margin: 2px;
+ font-size: 0.8rem;
+ font-weight: 400;
+ height: 22px;
+ line-height: 22px;
+ color: #fff;
+ border-radius: 10px;
+}
+
+.prev-next {
+ margin-left: -0.75rem;
+}
+
+.prev-next .article-badge {
+ min-width: 3rem;
+ margin-top: 7px;
+ padding: 3px 10px 3px 8px;
+ text-align: center;
+ font-size: 1rem;
+ line-height: inherit;
+ position: absolute;
+ box-sizing: border-box;
+ z-index: 200;
+ background-color: #fff;
+ font-weight: 500;
+}
+
+.prev-next .left-badge {
+ border-radius: 8px 0 8px 0;
+}
+
+.prev-next .right-badge {
+ border-radius: 0 8px 0 8px;
+ right: 10px;
+}
+
+.paging {
+ margin-bottom: 15px;
+}
+
+.paging .row {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.paging .page-info {
+ font-size: 1.4rem;
+ color: #888;
+ padding-top: 1rem;
+}
+
+.paging i {
+ font-size: 2.5rem;
+}
+
+.paging .disabled {
+ background-color: #ccc !important;
+}
+
+.paging .disabled i {
+ color: #999 !important;
+}
+
+/*文章详情样式*/
+#artDetail {
+ margin-top: -60px;
+}
+
+/* 修改小屏幕下文章详情table样式. */
+@media only screen and (max-width: 550px) {
+ #articleContent table {
+ table-layout: fixed;
+ }
+}
+
+@media only screen and (min-width: 1418px) {
+ #artDetail {
+ margin-top: -60px;
+ padding: 0 0.75rem;
+ }
+}
+
+#artDetail .card {
+ box-shadow: 0 10px 35px 2px rgba(0, 0, 0, .15),
+ 0 5px 15px rgba(0, 0, 0, .07),
+ 0 2px 5px -5px rgba(0, 0, 0, .1) !important;
+}
+
+#artDetail .tag-cate {
+ padding-bottom: 15px;
+}
+
+#artDetail a {
+ margin-right: 0 !important;
+ text-transform: none !important;
+}
+
+#artDetail .article-info {
+ padding: 20px 30px 1px 40px;
+ margin-bottom: -5px;
+}
+
+#artDetail .article-tag .chip {
+ font-size: 1rem;
+ font-weight: 400;
+ height: 25px;
+ line-height: 24px;
+ color: #fff;
+ border-radius: 15px;
+ margin-right: 5px;
+ margin-bottom: 2px;
+}
+
+#artDetail .tag_share .article-tag .chip {
+ font-size: 1rem;
+ font-weight: 400;
+ height: 25px;
+ line-height: 23px;
+ border-radius: 15px;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ color: #78909c;
+ background: #fff;
+ border: 1px solid;
+ transition: all 0.6s ease-in-out;
+}
+
+#artDetail .tag_share .article-tag .chip:hover {
+ color: #fff;
+ background: #78909c;
+}
+
+#artDetail .post-cate {
+ float: right;
+ color: #78909c;
+}
+
+#artDetail .post-cate a {
+ padding-right: 5px;
+ color: #78909c;
+ font-weight: 500;
+}
+
+#artDetail .post-cate a:hover {
+ text-decoration: underline;
+}
+
+#artDetail .post-info {
+ color: #525f7f;
+}
+
+#artDetail .post-info .post-category {
+ padding-right: 4px;
+ color: #525f7f;
+}
+
+#artDetail .post-info .post-category:hover {
+ font-weight: bold;
+ color: #78909c;
+ text-decoration: underline;
+}
+
+#artDetail .post-info .post-date {
+ color: #525f7f;
+}
+
+#artDetail .post-info .post-word-count {
+ margin-left: 15px;
+}
+
+#artDetail .post-info .post-read {
+ margin-left: 15px;
+ color: #525f7f;
+}
+
+#artDetail .article-card-content {
+ padding: 0 15px 20px 18px;
+}
+
+@media only screen and (max-width: 601px) {
+ #artDetail .article-info {
+ padding: 15px 15px 1px 15px;
+ margin-bottom: -5px;
+ }
+}
+
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+ #artDetail .article-card-content {
+ padding: 0 30px 20px 32px;
+ }
+
+ #artDetail .article-info {
+ padding: 15px 20px 0 28px;
+ margin-bottom: -5px;
+ }
+}
+
+@media only screen and (min-width: 993px) {
+ #artDetail .article-card-content {
+ padding: 0 50px 20px 50px;
+ }
+}
+
+#artDetail .reprint {
+ margin: 15px 0 0.4rem;
+ padding: 0.5rem 0.8rem;
+ border: 1px solid #eee;
+ line-height: 2;
+ transition: box-shadow 0.3s ease-in-out
+}
+
+#artDetail .reprint-info {
+ word-break: break-word;
+}
+
+#artDetail .reprint:hover {
+ box-shadow: 0 0 10px 0 rgba(232, 237, 250, .6), 0 4px 8px 0 rgba(232, 237, 250, .5)
+}
+
+#artDetail .reprint a {
+ font-size: 1.05rem;
+ color: #78909c;
+ font-weight: 500;
+}
+
+#articleContent p {
+ margin: 2px 2px 10px;
+ font-size: 1.05rem;
+ line-height: 1.85rem;
+}
+
+#articleContent blockquote p {
+ text-indent: 0.2rem;
+}
+
+#articleContent a {
+ padding: 0 2px;
+ color: #78909c;
+ font-weight: 500;
+ text-decoration: underline;
+ word-wrap: break-word;
+}
+
+#articleContent .img-item {
+ text-align: center;
+}
+
+#articleContent img {
+ max-width: 100%;
+ height: auto;
+ cursor: pointer;
+}
+
+#articleContent video {
+ display: block;
+ margin: 30px auto;
+ box-shadow: 0 5px 35px 0 rgba(0, 0, 0, .2), 0 10px 35px -11px rgba(0, 0, 0, .6);
+ cursor: pointer;
+}
+
+#articleContent ol,
+#articleContent ul {
+ display: block;
+ padding-left: 2em !important;
+ word-spacing: 0.05rem;
+}
+
+#articleContent ul li,
+#articleContent ol li {
+ display: list-item;
+ line-height: 1.8rem;
+ font-size: 1rem;
+}
+
+#articleContent ul li {
+ list-style-type: disc;
+}
+
+#articleContent ul ul li {
+ list-style-type: circle;
+}
+
+#articleContent table {
+ width: 100%;
+ display: block;
+ border-collapse: collapse;
+ border-spacing: 0;
+ overflow: auto;
+}
+
+/**
+#articleContent table,
+th,
+td {
+ padding: 12px 13px;
+ border: 1px solid #dfe2e5;
+}
+**/
+
+table tr:nth-child(2n),
+thead {
+ background-color: #fafafa;
+}
+
+#articleContent table th {
+ background-color: #f2f2f2;
+ min-width: 80px;
+ border: 1px solid #dfe2e5;
+ padding: 6px 6px;
+}
+
+#articleContent table td {
+ min-width: 80px;
+ border: 1px solid #dfe2e5;
+ padding: 6px 6px;
+}
+
+#articleContent [type="checkbox"]:not(:checked),
+[type="checkbox"]:checked {
+ position: inherit;
+ margin-left: -1.3rem;
+ margin-right: 0.4rem;
+ margin-top: -1px;
+ vertical-align: middle;
+ left: unset;
+ visibility: visible;
+}
+
+@media only screen and (min-width: 600px) {
+ #article-share .social-share a {
+ margin-left: 15px !important;
+ }
+}
+
+.chip-container {
+ margin-top: -60px;
+}
+
+.chip-container .tag-title {
+ margin-bottom: 10px;
+ color: #3C4858;
+ font-size: 1.75rem;
+ font-weight: 400;
+}
+
+.chip-container .tag-chips {
+ margin: 1rem auto 0.5rem;
+ max-width: 850px;
+ text-align: center;
+}
+
+.chip-container .tags-posts {
+ margin-top: 20px;
+}
+
+.chip-container .chip-default {
+ color: #34495e;
+}
+
+.chip-container .chip-active {
+ color: #FFF !important;
+ background: linear-gradient(to bottom right, #FF5E3A 0%, #FF2A68 100%) !important;
+ box-shadow: 2px 5px 10px #aaa !important;
+}
+
+.chip-container .chip {
+ margin: 10px 10px;
+ padding: 19px 14px;
+ display: inline-flex;
+ line-height: 0;
+ font-size: 1rem;
+ font-weight: 500;
+ border-radius: 5px;
+ cursor: pointer;
+ box-shadow: 0 3px 5px rgba(0, 0, 0, .12);
+ z-index: 0;
+}
+
+.chip-container .chip:hover {
+ color: #fff;
+ background: linear-gradient(to right, #78909c 0%, #546e7a 100%) !important;
+}
+
+.chip .tag-length {
+ margin-left: 5px;
+ margin-right: -2px;
+ font-size: 0.5rem;
+}
+
+.chip-default .tag-length {
+ color: #e91e63;
+ margin-top: 1px;
+}
+
+.chip-active .tag-length {
+ color: #fff;
+}
+
+/* archive page. */
+#cd-timeline .year {
+ position: relative;
+ width: 80px;
+ height: 80px;
+ margin: 10px 0 50px -20px;
+ padding: 21px 10px;
+ background-color: #ff5722;
+ color: #fff;
+ font-size: 1.8rem;
+ font-weight: 600;
+}
+
+#cd-timeline .year a {
+ color: #fff;
+}
+
+#cd-timeline .month {
+ position: relative;
+ width: 60px;
+ height: 60px;
+ margin: 10px 0 30px -10px;
+ padding: 14px 16px;
+ background-color: #ef6c00;
+ color: #fff;
+ font-size: 1.7rem;
+ font-weight: 600;
+}
+
+#cd-timeline .month a {
+ color: #fff;
+}
+
+#cd-timeline .day {
+ position: relative;
+ padding: 8px 10px;
+ background-color: #ffa726;
+ color: #fff;
+ font-size: 1.2rem;
+ font-weight: 500;
+}
+
+#cd-timeline {
+ /*width: 90%;*/
+ max-width: 820px;
+ position: relative;
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+}
+
+#cd-timeline::before {
+ /* this is the vertical line */
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 18px;
+ height: 100%;
+ width: 4px;
+ background: #546e7a;
+}
+
+@media only screen and (min-width: 900px) {
+ #cd-timeline {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+ }
+
+ #cd-timeline::before {
+ left: 50%;
+ margin-left: -2px;
+ }
+
+ #cd-timeline .year {
+ margin: 10px 0 50px -40px;
+ padding: 22px 11px;
+ }
+
+ #cd-timeline .month {
+ margin: 10px 0 30px -30px;
+ padding: 14px 16px;
+ }
+}
+
+.cd-timeline-block {
+ position: relative;
+ margin: 1em 0;
+}
+
+.cd-timeline-block::after {
+ clear: both;
+ content: "";
+ display: table;
+}
+
+.cd-timeline-block:first-child {
+ margin-top: 0;
+}
+
+.cd-timeline-block:last-child {
+ margin-bottom: 0;
+}
+
+@media only screen and (min-width: 870px) {
+ .cd-timeline-block {
+ margin: 1em 0;
+ }
+
+ .cd-timeline-block:first-child {
+ margin-top: 0;
+ }
+
+ .cd-timeline-block:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.cd-timeline-img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ box-shadow: 0 0 0 4px #ffffff, inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05);
+}
+
+@media only screen and (min-width: 900px) {
+ .cd-timeline-img {
+ width: 40px;
+ height: 40px;
+ left: 50%;
+ margin-left: -20px;
+ /* Force Hardware Acceleration in WebKit */
+ -webkit-transform: translateZ(0);
+ -webkit-backface-visibility: hidden;
+ }
+
+ .cssanimations .cd-timeline-img.is-hidden {
+ visibility: hidden;
+ }
+
+ .cssanimations .cd-timeline-img.bounce-in {
+ visibility: visible;
+ -webkit-animation: cd-bounce-1 0.6s;
+ -moz-animation: cd-bounce-1 0.6s;
+ animation: cd-bounce-1 0.6s;
+ }
+}
+
+.cd-timeline-content {
+ position: relative;
+ margin-top: -40px;
+ margin-left: 60px;
+ padding: 0;
+ border-radius: 5px;
+ background: #ffffff;
+ box-shadow: 0 15px 35px rgba(50, 50, 93, .1), 0 5px 15px rgba(0, 0, 0, .07) !important;
+}
+
+.cd-timeline-content::after {
+ clear: both;
+ content: "";
+ display: table;
+}
+
+.cd-timeline-content .card {
+ margin: 0;
+}
+
+.cd-timeline-content::before {
+ content: '';
+ position: absolute;
+ top: 18px !important;
+ right: 100%;
+ height: 0;
+ width: 14px;
+ margin-left: 2px;
+ margin-right: 2px;
+ border: 1px dashed #ffa726;
+}
+
+@media only screen and (min-width: 768px) {
+ .cd-timeline-content h2 {
+ font-size: 1.25rem;
+ }
+
+ .cd-timeline-content p {
+ font-size: 1rem;
+ }
+
+ .cd-timeline-content .cd-read-more,
+ .cd-timeline-content .cd-date {
+ font-size: 0.875rem;
+ }
+}
+
+@media only screen and (min-width: 900px) {
+ .cd-timeline-content {
+ margin-left: 0;
+ padding: 0;
+ width: 45%;
+
+ }
+
+ .cd-timeline-content::before {
+ top: 24px;
+ left: 100%;
+ }
+
+ .cd-timeline-content .cd-read-more {
+ float: left;
+ }
+
+ .cd-timeline-block:nth-child(even) .cd-timeline-content {
+ float: right;
+ }
+
+ .cd-timeline-block:nth-child(even) .cd-timeline-content::before {
+ top: 24px;
+ left: auto;
+ right: 100%;
+ border-color: #ffa726;
+ }
+
+ .cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more {
+ float: right;
+ }
+
+ .cssanimations .cd-timeline-content.is-hidden {
+ visibility: hidden;
+ }
+
+ .cssanimations .cd-timeline-content.bounce-in {
+ visibility: visible;
+ -webkit-animation: cd-bounce-2 0.6s;
+ -moz-animation: cd-bounce-2 0.6s;
+ animation: cd-bounce-2 0.6s;
+ }
+}
+
+/* about page styles. */
+
+.about-container {
+ width: 90%;
+ max-width: 1225px;
+ margin-top: -60px;
+}
+
+@media only screen and (max-width: 601px) {
+ .about-container {
+ width: 95%;
+ }
+}
+
+.post-statis {
+ text-align: center;
+}
+
+.post-statis .statis {
+ display: inline-block;
+ padding: 0.3rem 0.8rem;
+ text-align: center;
+ letter-spacing: .03rem;
+}
+
+.post-statis .statis .count {
+ display: block;
+ font-size: 1.3rem;
+ font-weight: bold;
+ text-decoration: underline;
+}
+
+.post-statis .statis .count a {
+ color: #78909c;
+}
+
+.post-statis .statis .name {
+ font-size: 0.9rem;
+ color: #777;
+}
+
+#aboutme .social-link {
+ margin: 0.5rem 0;
+ text-align: center;
+}
+
+#aboutme .social-link a {
+ display: inline-block;
+ width: 2.3rem;
+ height: 2.3rem;
+ line-height: 2.2rem;
+ margin: 0 0.5rem;
+ padding: 0;
+ color: #fff;
+ border: 1px solid #546e7a;
+ background: radial-gradient(#78909c, #546e7a);
+ font-size: 0.9rem;
+ border-radius: 50%;
+ box-shadow: 0 4px 6px rgba(50, 50, 93, .21), 0 2px 3px rgba(0, 0, 0, .1);
+}
+
+.profile .avatar-img {
+ max-width: 160px;
+ width: 100%;
+ margin: 0 auto;
+ transform: translate3d(0, -65%, 0);
+}
+
+.profile .author {
+ margin-top: -80px;
+}
+
+.profile .author .post-statis {
+ margin: 0.5rem 0 1.4rem 0;
+}
+
+.profile .author .title {
+ margin-bottom: 0.1rem;
+ font-size: 1.8rem;
+ font-weight: 500;
+ color: #3C4858;
+}
+
+.profile .author .career {
+ margin: 8px 0;
+ font-size: 0.9rem;
+ font-weight: 400;
+ color: #777;
+}
+
+#aboutme .profile .social-link {
+ margin: 1.5rem 0 0.8rem 0;
+}
+
+#aboutme .introduction {
+ margin: 1.5rem auto 3rem;
+ max-width: 600px;
+ color: #999;
+}
+
+.post-charts,
+.my-projects,
+.my-skills,
+.post-charts {
+ padding: 3.8rem 1.5rem 0.8rem 1.5rem;
+}
+
+.post-charts,
+.title,
+.my-projects .title,
+.my-skills .title,
+.my-gallery .title {
+ font-size: 2rem;
+ margin-bottom: 2.25rem;
+}
+
+.my-projects .info {
+ max-width: 360px;
+ margin: 0 auto;
+ padding: 1rem 0 1rem;
+}
+
+.my-projects .info .icon {
+ display: inline-block;
+ width: 76px;
+ height: 76px;
+ text-align: center;
+ line-height: 76px;
+ color: #fff;
+ font-size: 1.75rem;
+ border-radius: 50%;
+}
+
+.my-projects .info .info-title {
+ margin: 1.25rem 0 0.875rem;
+ font-size: 1.25rem;
+ font-weight: 500;
+ line-height: 1.5em;
+}
+
+.my-projects .info .info-title a {
+ color: #34495e;
+}
+
+.my-projects .info .info-desc {
+ margin: 0 0 10px;
+ font-size: 0.9rem;
+ color: #999;
+}
+
+.my-skills .skillbar {
+ position: relative;
+ display: block;
+ max-width: 360px;
+ margin: 15px auto;
+ background: #eee;
+ height: 30px;
+ border-radius: 35px;
+ -moz-border-radius: 35px;
+ -webkit-border-radius: 35px;
+ -webkit-transition: 0.4s linear;
+ -moz-transition: 0.4s linear;
+ -o-transition: 0.4s linear;
+ transition: 0.4s linear;
+ -webkit-transition-property: width, background-color;
+ -moz-transition-property: width, background-color;
+ -o-transition-property: width, background-color;
+ transition-property: width, background-color;
+}
+
+.skillbar .skillbar-title {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 110px;
+ font-size: 0.9rem;
+ color: #ffffff;
+ border-radius: 35px;
+ -webkit-border-radius: 35px;
+ -moz-border-radius: 35px;
+}
+
+.skillbar .skillbar-title span {
+ display: block;
+ background: rgba(0, 0, 0, 0.15);
+ padding: 0 20px;
+ height: 30px;
+ line-height: 30px;
+ border-radius: 35px;
+ -webkit-border-radius: 35px;
+ -moz-border-radius: 35px;
+}
+
+.skillbar .skillbar-bar {
+ height: 30px;
+ width: 0;
+ border-radius: 35px;
+ -moz-border-radius: 35px;
+ -webkit-border-radius: 35px;
+}
+
+.skillbar .skill-bar-percent {
+ position: absolute;
+ right: 10px;
+ top: 0;
+ font-size: 12px;
+ height: 30px;
+ line-height: 30px;
+ color: #ffffff;
+ color: rgba(0, 0, 0, 0.5);
+}
+
+.my-skills .other-skills {
+ margin-top: 2rem;
+}
+
+.other-skills .sub-title {
+ font-size: 1.5rem;
+}
+
+.other-skills .tag-chips {
+ max-width: 600px;
+}
+
+.other-skills .chip {
+ background-color: #fff;
+ border: 1px solid #eee;
+}
+
+.other-skills .chip:hover {
+ color: #fff;
+ background: linear-gradient(to right, #78909c 0%, #546e7a 100%);
+ border: 1px solid #78909c;
+ box-shadow: 0 5px 5px rgba(0, 0, 0, .25)
+}
+
+.my-gallery {
+ margin: 4.5rem auto 1rem;
+ padding: 0 1.2rem;
+ max-width: 1100px;
+}
+
+.my-gallery .photo {
+ margin: .5rem 0;
+}
+
+.my-gallery .photo img {
+ width: 100%;
+ height: 200px;
+ border-radius: 10px;
+ cursor: pointer;
+}
+
+/*尾部样式*/
+footer {
+ padding-bottom: 1px;
+}
+
+footer .social-statis {
+ margin-top: 10px;
+ position: relative;
+}
+
+footer a {
+ color: #fff;
+}
+
+footer .copy-right {
+ color: #dbdbdb;
+}
+
+/*搜索层样式*/
+#searchIcon {
+ font-size: 1.2rem;
+}
+
+#searchModal {
+ min-height: 500px;
+ width: 80%;
+}
+
+#searchModal .search-header .title {
+ font-size: 1.6rem;
+ color: #333;
+}
+
+#searchResult {
+ margin: -15px 0 10px 10px;
+}
+
+p.search-result-summary{
+ margin: 15px 0 0 -8px;
+}
+
+#searchResult .search-result-list {
+ margin-left: -8px;
+ margin-top: 0px;
+ padding-left: 0;
+ color: #666;
+}
+
+.search-result-list .search-result-title {
+ font-size: 1.4rem;
+ color: #78909c;
+}
+
+.search-result-list li {
+ border-bottom: 1px solid #e5e5e5;
+ padding: 15px 0 5px 0;
+}
+
+.search-result-list .search-keyword {
+ margin: 0 2px;
+ padding: 1px 5px 1px 4px;
+ border-radius: 2px;
+ background-color: #f2f2f2;
+ color: #e96900;
+ font-style: normal;
+ white-space: pre-wrap;
+}
+
+/*回到顶部按钮样式*/
+.top-scroll {
+ display: none;
+ position: fixed;
+ right: 15px;
+ bottom: 15px;
+ padding-top: 15px;
+ margin-bottom: 0;
+ z-index: 998;
+}
+
+.top-scroll .btn-floating {
+ background: linear-gradient(to bottom right, #FF5E3A 0%, #FF2A68 100%);
+ width: 48px;
+ height: 48px;
+}
+
+.top-scroll .btn-floating i {
+ line-height: 48px;
+ font-size: 1.8rem;
+}
+
+@media screen and (min-width: 368px) and (max-width: 767px) {
+ .info-break-policy {
+ word-break: keep-all;
+ float: left;
+ width: 50%;
+ }
+}
+
+@media screen and (min-width: 768px) {
+ .info-break-policy {
+ word-break: keep-all;
+ float: left;
+ margin-right: 15px;
+ }
+}
+
+@media screen and (max-width: 367px) {
+ .info-break-policy {
+ word-break: keep-all;
+ float: left;
+ width: 100%;
+ }
+
+ .custom-card {
+ padding: 0 2px !important;
+ }
+}
+
+.info-break-policy {
+ margin-bottom: 8px;
+}
+
+.clearfix {
+ clear: left;
+}
+
+/* .img-shadow {
+ box-shadow: 0 5px 25px 0 rgba(0, 0, 0, .2), 0 10px 30px -11px rgba(0, 0, 0, .6)
+} */
+
+.img-margin {
+ margin: 25px auto 10px auto;
+}
+
+.caption {
+ text-align: center;
+ margin: 0 auto 15px auto;
+}
+
+.center-caption {
+ color: #525f7f;
+ padding: 5px;
+ border-bottom: 1px solid #d9d9d9;
+}
+
+.lg-sub-html .center-caption {
+ color: #fff !important;
+ border-bottom: none;
+}
+
+.overflow-policy {
+ overflow: hidden;
+}
+
+/* styles for '...' */
+.block-with-text {
+ /* hide text if it more than N lines */
+ overflow: hidden;
+ /* for set '...' in absolute position */
+ position: relative;
+ /* use this value to count block height */
+ line-height: 1.5em;
+ /* max-height = line-height (1.2) * lines max number (3) */
+ max-height: 4.5em;
+ /* fix problem when last visible word doesn't adjoin right side */
+ text-align: justify;
+ /* place for '...' */
+ margin-right: -1em;
+ padding-right: 1em;
+}
+
+/* create the ... style */
+.block-with-text:before {
+ /* points in the end */
+ content: '...';
+ /* absolute position */
+ position: absolute;
+ /* set position to right bottom corner of block */
+ right: 0.2em;
+ bottom: 0;
+}
+
+/* hide ... if we have text, which is less than or equal to max lines */
+.block-with-text:after {
+ /* points in the end */
+ content: '';
+ /* absolute position */
+ position: absolute;
+ /* set position to right bottom corner of text */
+ right: 0;
+ /* set width and height */
+ width: 1em;
+ height: 1em;
+ /* fix the problem of hidden failure */
+ margin-top: 0.4em;
+ /* bg color = bg color under block */
+ background: white;
+}
+
+/*二级菜单*/
+
+.nav-menu {
+}
+
+.nav-menu li .sub-nav {
+ position: absolute;
+ top: 66px;
+ list-style: none;
+ margin-left: -20px;
+ display: none;
+}
+
+.nav-menu li .sub-nav li {
+ text-align: center;
+ clear: left;
+ width: 140px;
+ height: 35px;
+ line-height: 35px;
+ position: relative;
+}
+
+.nav-menu li .sub-nav li a {
+ height: 34px;
+ line-height: 34px;
+ width: 138px;
+ padding: 0;
+ display: inline-block;
+ border-radius: 5px;
+ color: #000;
+}
+
+.nav-show i[aria-hidden=true] {
+ -webkit-transform: rotate(180deg) !important;
+ -moz-transform: rotate(180deg) !important;
+ -o-transform: rotate(180deg) !important;
+ -ms-transform: rotate(180deg) !important;
+ transform: rotate(180deg) !important;
+ -webkit-transition: all .3s;
+ -moz-transition: all .3s;
+ -o-transition: all .3s;
+ transition: all .3s;
+}
+
+.menus_item_child {
+ background-color: rgba(255, 255, 255, .8);
+ width: fit-content;
+ border-radius: 10px;
+ -webkit-box-shadow: 0 5px 20px -4px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 20px -4px rgba(0, 0, 0, .5);
+ display: none;
+ opacity: 0.98;
+ -ms-filter: none;
+ filter: none;
+ -webkit-animation: sub_menus .3s .1s ease both;
+ -moz-animation: sub_menus .3s .1s ease both;
+ -o-animation: sub_menus .3s .1s ease both;
+ animation: sub_menus .3s .1s ease both;
+}
+
+.menus_item_child:before {
+ content: "";
+ position: absolute;
+ top: -20px;
+ left: 50%;
+ margin-left: -10px;
+ border-width: 10px;
+ border-style: solid;
+ border-color: transparent transparent rgba(255, 255, 255, .8)
+}
+
+.m-nav-item {
+ position: relative;
+}
+
+.m-nav-item ul {
+ display: none;
+}
+
+.m-nav-item ul li {
+ width: 255px;
+ height: 50px;
+ line-height: 50px;
+ text-align: center;
+}
+
+.m-nav-show .m-icon {
+ -webkit-transform: rotate(90deg) !important;
+ -moz-transform: rotate(90deg) !important;
+ -o-transform: rotate(90deg) !important;
+ -ms-transform: rotate(90deg) !important;
+ transform: rotate(90deg) !important;
+ -webkit-transition: all .3s;
+ -moz-transition: all .3s;
+ -o-transition: all .3s;
+ transition: all .3s;
+}
+
+.m-nav-show,
+.m-nav-item > a:hover {
+ color: #FFF;
+ background: rgba(255, 255, 255, .8);
+}
+
+.m-nav-show > a:before,
+.m-nav-item > a:hover:before {
+ opacity: 1;
+}
+
+.m-nav-item .m-icon {
+ position: absolute;
+ right: 15px;
+ height: 50px;
+ padding: 0;
+ margin: 0;
+}
diff --git a/source/css/my-gitalk.css b/source/css/my-gitalk.css
new file mode 100644
index 0000000..637633b
--- /dev/null
+++ b/source/css/my-gitalk.css
@@ -0,0 +1,249 @@
+.gitalk-card {
+ margin: 1.25rem auto;
+}
+
+.gitalk-card .card-content {
+ padding: 1px 20px 20px 20px;
+}
+
+#gitalk-container .gt-no-init a {
+ color: #42b983;
+ text-decoration: underline;
+}
+
+#gitalk-container .gt-container .gt-btn,
+#gitalk-container .gt-btn-login,
+#gitalk-container .gt-container .gt-header-controls .gt-btn {
+ border: 1px solid #4caf50;
+ background-color: #4caf50;
+ box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12);
+}
+
+#gitalk-container .gt-container .gt-link {
+ color: #42b983;
+ text-decoration: underline;
+}
+
+#gitalk-container .gt-container .gt-btn-preview {
+ color: #4caf50;
+ background-color: #fff !important;
+ box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12);
+}
+
+#gitalk-container .gt-container .gt-header-textarea {
+ background-color: #f6f9fc;
+ border: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+#gitalk-container .gt-container .gt-svg svg {
+ fill: #42b983;
+}
+
+#gitalk-container .gt-container .gt-header-controls-tip,
+#gitalk-container .gt-container a,
+#gitalk-container .gt-container .gt-comment-username {
+ color: #42b983;
+}
+
+#gitalk-container .gt-container .gt-ico-text {
+ margin-left: 0.08rem;
+}
+
+#gitalk-container .gt-container .gt-comment-body {
+ color: #34495e !important;
+}
+
+#gitalk-container .gt-container .gt-header-preview {
+ border: 1px solid rgba(0, 0, 0, 0.02);
+ background-color: #f9f9f9;
+}
+
+.markdown-body p {
+ margin: 2px 2px 10px;
+ font-size: 1.05rem;
+ line-height: 1.78rem;
+}
+
+.markdown-body blockquote p {
+ text-indent: 0.2rem;
+}
+
+.markdown-body a {
+ padding: 0 2px;
+ color: #42b983;
+ font-weight: 500;
+ text-decoration: underline;
+}
+
+.markdown-body img {
+ max-width: 100%;
+ height: auto;
+ cursor: pointer;
+}
+
+.markdown-body ol li {
+ list-style-type: decimal;
+}
+
+.markdown-body ol,
+ul {
+ display: block;
+ padding-left: 2em;
+ word-spacing: 0.05rem;
+}
+
+.markdown-body ul li,
+ol li {
+ display: list-item;
+ line-height: 1.8rem;
+ font-size: 1rem;
+}
+
+.markdown-body ul li {
+ list-style-type: disc;
+}
+
+.markdown-body ul ul li {
+ list-style-type: circle;
+}
+
+.markdown-body table, th, td {
+ padding: 12px 13px;
+ border: 1px solid #dfe2e5;
+}
+
+.markdown-body table, th, td {
+ border: 0;
+}
+
+table tr:nth-child(2n), thead {
+ background-color: #fafafa;
+}
+
+.markdown-body table th {
+ background-color: #f2f2f2;
+ min-width: 80px;
+}
+
+.markdown-body table td {
+ min-width: 80px;
+}
+
+.markdown-body h1 {
+ font-size: 1.85rem;
+ font-weight: bold;
+ line-height: 2.2rem;
+}
+
+.markdown-body h2 {
+ font-size: 1.65rem;
+ font-weight: bold;
+ line-height: 1.9rem;
+}
+
+.markdown-body h3 {
+ font-size: 1.45rem;
+ font-weight: bold;
+ line-height: 1.7rem;
+}
+
+.markdown-body h4 {
+ font-size: 1.25rem;
+ font-weight: bold;
+ line-height: 1.5rem;
+}
+
+.markdown-body h5 {
+ font-size: 1.1rem;
+ font-weight: bold;
+ line-height: 1.4rem;
+}
+
+.markdown-body h6 {
+ font-size: 1rem;
+ line-height: 1.3rem;
+}
+
+.markdown-body p {
+ font-size: 1rem;
+ line-height: 1.5rem;
+}
+
+.markdown-body hr {
+ margin: 12px 0;
+ border: 0;
+ border-top: 1px solid #ccc;
+}
+
+.markdown-body blockquote {
+ margin: 15px 0;
+ border-left: 5px solid #42b983;
+ padding: 1rem 0.8rem 1rem 0.8rem;
+ color: #666;
+ background-color: rgba(66, 185, 131, .1);
+}
+
+.markdown-body pre {
+ padding: 1.2em;
+ margin: .5em 0;
+ background: #272822;
+ overflow: auto;
+ border-radius: 0.3em;
+ tab-size: 4;
+}
+
+.markdown-body code {
+ padding: 1px 1px;
+ font-size: 0.92rem;
+ color: #e96900;
+ background-color: #f8f8f8;
+ border-radius: 2px;
+}
+
+.markdown-body pre code {
+ padding: 0;
+ color: #e8eaf6;
+ background-color: #272822;
+}
+
+.markdown-body pre[class*="language-"] {
+ padding: 1.2em;
+ margin: .5em 0;
+}
+
+.markdown-body code[class*="language-"],
+pre[class*="language-"] {
+ color: #e8eaf6;
+}
+
+.markdown-body [type="checkbox"]:not(:checked), [type="checkbox"]:checked {
+ position: inherit;
+ margin-left: -1.3rem;
+ margin-right: 0.4rem;
+ margin-top: -1px;
+ vertical-align: middle;
+ left: unset;
+ visibility: visible;
+}
+
+.markdown-body b,
+strong {
+ font-weight: bold;
+}
+
+.markdown-body dfn {
+ font-style: italic;
+}
+
+.markdown-body small {
+ font-size: 85%;
+}
+
+.markdown-body cite {
+ font-style: normal;
+}
+
+.markdown-body mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
diff --git a/source/css/my.css b/source/css/my.css
new file mode 100644
index 0000000..6d1a034
--- /dev/null
+++ b/source/css/my.css
@@ -0,0 +1 @@
+/* Here is your custom css styles. */
diff --git a/source/googleb6aa50fd59b5fdc7.html b/source/googleb6aa50fd59b5fdc7.html
new file mode 100644
index 0000000..92d4812
--- /dev/null
+++ b/source/googleb6aa50fd59b5fdc7.html
@@ -0,0 +1 @@
+google-site-verification: googleb6aa50fd59b5fdc7.html
\ No newline at end of file
diff --git a/source/js/crypto-js.js b/source/js/crypto-js.js
new file mode 100644
index 0000000..43b0758
--- /dev/null
+++ b/source/js/crypto-js.js
@@ -0,0 +1,5988 @@
+;(function (root, factory) {
+ if (typeof exports === "object") {
+ // CommonJS
+ module.exports = exports = factory();
+ }
+ else if (typeof define === "function" && define.amd) {
+ // AMD
+ define([], factory);
+ }
+ else {
+ // Global (browser)
+ root.CryptoJS = factory();
+ }
+}(this, function () {
+
+ /**
+ * CryptoJS core components.
+ */
+ var CryptoJS = CryptoJS || (function (Math, undefined) {
+ /*
+ * Local polyfil of Object.create
+ */
+ var create = Object.create || (function () {
+ function F() {};
+
+ return function (obj) {
+ var subtype;
+
+ F.prototype = obj;
+
+ subtype = new F();
+
+ F.prototype = null;
+
+ return subtype;
+ };
+ }())
+
+ /**
+ * CryptoJS namespace.
+ */
+ var C = {};
+
+ /**
+ * Library namespace.
+ */
+ var C_lib = C.lib = {};
+
+ /**
+ * Base object for prototypal inheritance.
+ */
+ var Base = C_lib.Base = (function () {
+
+
+ return {
+ /**
+ * Creates a new object that inherits from this object.
+ *
+ * @param {Object} overrides Properties to copy into the new object.
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * field: 'value',
+ *
+ * method: function () {
+ * }
+ * });
+ */
+ extend: function (overrides) {
+ // Spawn
+ var subtype = create(this);
+
+ // Augment
+ if (overrides) {
+ subtype.mixIn(overrides);
+ }
+
+ // Create default initializer
+ if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
+ subtype.init = function () {
+ subtype.$super.init.apply(this, arguments);
+ };
+ }
+
+ // Initializer's prototype is the subtype object
+ subtype.init.prototype = subtype;
+
+ // Reference supertype
+ subtype.$super = this;
+
+ return subtype;
+ },
+
+ /**
+ * Extends this object and runs the init method.
+ * Arguments to create() will be passed to init().
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var instance = MyType.create();
+ */
+ create: function () {
+ var instance = this.extend();
+ instance.init.apply(instance, arguments);
+
+ return instance;
+ },
+
+ /**
+ * Initializes a newly created object.
+ * Override this method to add some logic when your objects are created.
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * init: function () {
+ * // ...
+ * }
+ * });
+ */
+ init: function () {
+ },
+
+ /**
+ * Copies properties into this object.
+ *
+ * @param {Object} properties The properties to mix in.
+ *
+ * @example
+ *
+ * MyType.mixIn({
+ * field: 'value'
+ * });
+ */
+ mixIn: function (properties) {
+ for (var propertyName in properties) {
+ if (properties.hasOwnProperty(propertyName)) {
+ this[propertyName] = properties[propertyName];
+ }
+ }
+
+ // IE won't copy toString using the loop above
+ if (properties.hasOwnProperty('toString')) {
+ this.toString = properties.toString;
+ }
+ },
+
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = instance.clone();
+ */
+ clone: function () {
+ return this.init.prototype.extend(this);
+ }
+ };
+ }());
+
+ /**
+ * An array of 32-bit words.
+ *
+ * @property {Array} words The array of 32-bit words.
+ * @property {number} sigBytes The number of significant bytes in this word array.
+ */
+ var WordArray = C_lib.WordArray = Base.extend({
+ /**
+ * Initializes a newly created word array.
+ *
+ * @param {Array} words (Optional) An array of 32-bit words.
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.create();
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
+ */
+ init: function (words, sigBytes) {
+ words = this.words = words || [];
+
+ if (sigBytes != undefined) {
+ this.sigBytes = sigBytes;
+ } else {
+ this.sigBytes = words.length * 4;
+ }
+ },
+
+ /**
+ * Converts this word array to a string.
+ *
+ * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
+ *
+ * @return {string} The stringified word array.
+ *
+ * @example
+ *
+ * var string = wordArray + '';
+ * var string = wordArray.toString();
+ * var string = wordArray.toString(CryptoJS.enc.Utf8);
+ */
+ toString: function (encoder) {
+ return (encoder || Hex).stringify(this);
+ },
+
+ /**
+ * Concatenates a word array to this word array.
+ *
+ * @param {WordArray} wordArray The word array to append.
+ *
+ * @return {WordArray} This word array.
+ *
+ * @example
+ *
+ * wordArray1.concat(wordArray2);
+ */
+ concat: function (wordArray) {
+ // Shortcuts
+ var thisWords = this.words;
+ var thatWords = wordArray.words;
+ var thisSigBytes = this.sigBytes;
+ var thatSigBytes = wordArray.sigBytes;
+
+ // Clamp excess bits
+ this.clamp();
+
+ // Concat
+ if (thisSigBytes % 4) {
+ // Copy one byte at a time
+ for (var i = 0; i < thatSigBytes; i++) {
+ var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
+ }
+ } else {
+ // Copy one word at a time
+ for (var i = 0; i < thatSigBytes; i += 4) {
+ thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];
+ }
+ }
+ this.sigBytes += thatSigBytes;
+
+ // Chainable
+ return this;
+ },
+
+ /**
+ * Removes insignificant bits.
+ *
+ * @example
+ *
+ * wordArray.clamp();
+ */
+ clamp: function () {
+ // Shortcuts
+ var words = this.words;
+ var sigBytes = this.sigBytes;
+
+ // Clamp
+ words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
+ words.length = Math.ceil(sigBytes / 4);
+ },
+
+ /**
+ * Creates a copy of this word array.
+ *
+ * @return {WordArray} The clone.
+ *
+ * @example
+ *
+ * var clone = wordArray.clone();
+ */
+ clone: function () {
+ var clone = Base.clone.call(this);
+ clone.words = this.words.slice(0);
+
+ return clone;
+ },
+
+ /**
+ * Creates a word array filled with random bytes.
+ *
+ * @param {number} nBytes The number of random bytes to generate.
+ *
+ * @return {WordArray} The random word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.random(16);
+ */
+ random: function (nBytes) {
+ var words = [];
+
+ var r = (function (m_w) {
+ var m_w = m_w;
+ var m_z = 0x3ade68b1;
+ var mask = 0xffffffff;
+
+ return function () {
+ m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;
+ m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;
+ var result = ((m_z << 0x10) + m_w) & mask;
+ result /= 0x100000000;
+ result += 0.5;
+ return result * (Math.random() > .5 ? 1 : -1);
+ }
+ });
+
+ for (var i = 0, rcache; i < nBytes; i += 4) {
+ var _r = r((rcache || Math.random()) * 0x100000000);
+
+ rcache = _r() * 0x3ade67b7;
+ words.push((_r() * 0x100000000) | 0);
+ }
+
+ return new WordArray.init(words, nBytes);
+ }
+ });
+
+ /**
+ * Encoder namespace.
+ */
+ var C_enc = C.enc = {};
+
+ /**
+ * Hex encoding strategy.
+ */
+ var Hex = C_enc.Hex = {
+ /**
+ * Converts a word array to a hex string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The hex string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var hexChars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ hexChars.push((bite >>> 4).toString(16));
+ hexChars.push((bite & 0x0f).toString(16));
+ }
+
+ return hexChars.join('');
+ },
+
+ /**
+ * Converts a hex string to a word array.
+ *
+ * @param {string} hexStr The hex string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Hex.parse(hexString);
+ */
+ parse: function (hexStr) {
+ // Shortcut
+ var hexStrLength = hexStr.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < hexStrLength; i += 2) {
+ words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
+ }
+
+ return new WordArray.init(words, hexStrLength / 2);
+ }
+ };
+
+ /**
+ * Latin1 encoding strategy.
+ */
+ var Latin1 = C_enc.Latin1 = {
+ /**
+ * Converts a word array to a Latin1 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Latin1 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var latin1Chars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ latin1Chars.push(String.fromCharCode(bite));
+ }
+
+ return latin1Chars.join('');
+ },
+
+ /**
+ * Converts a Latin1 string to a word array.
+ *
+ * @param {string} latin1Str The Latin1 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
+ */
+ parse: function (latin1Str) {
+ // Shortcut
+ var latin1StrLength = latin1Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < latin1StrLength; i++) {
+ words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
+ }
+
+ return new WordArray.init(words, latin1StrLength);
+ }
+ };
+
+ /**
+ * UTF-8 encoding strategy.
+ */
+ var Utf8 = C_enc.Utf8 = {
+ /**
+ * Converts a word array to a UTF-8 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-8 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ try {
+ return decodeURIComponent(escape(Latin1.stringify(wordArray)));
+ } catch (e) {
+ throw new Error('Malformed UTF-8 data');
+ }
+ },
+
+ /**
+ * Converts a UTF-8 string to a word array.
+ *
+ * @param {string} utf8Str The UTF-8 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
+ */
+ parse: function (utf8Str) {
+ return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
+ }
+ };
+
+ /**
+ * Abstract buffered block algorithm template.
+ *
+ * The property blockSize must be implemented in a concrete subtype.
+ *
+ * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
+ */
+ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
+ /**
+ * Resets this block algorithm's data buffer to its initial state.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm.reset();
+ */
+ reset: function () {
+ // Initial values
+ this._data = new WordArray.init();
+ this._nDataBytes = 0;
+ },
+
+ /**
+ * Adds new data to this block algorithm's buffer.
+ *
+ * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm._append('data');
+ * bufferedBlockAlgorithm._append(wordArray);
+ */
+ _append: function (data) {
+ // Convert string to WordArray, else assume WordArray already
+ if (typeof data == 'string') {
+ data = Utf8.parse(data);
+ }
+
+ // Append
+ this._data.concat(data);
+ this._nDataBytes += data.sigBytes;
+ },
+
+ /**
+ * Processes available data blocks.
+ *
+ * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
+ *
+ * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
+ *
+ * @return {WordArray} The processed data.
+ *
+ * @example
+ *
+ * var processedData = bufferedBlockAlgorithm._process();
+ * var processedData = bufferedBlockAlgorithm._process(!!'flush');
+ */
+ _process: function (doFlush) {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+ var dataSigBytes = data.sigBytes;
+ var blockSize = this.blockSize;
+ var blockSizeBytes = blockSize * 4;
+
+ // Count blocks ready
+ var nBlocksReady = dataSigBytes / blockSizeBytes;
+ if (doFlush) {
+ // Round up to include partial blocks
+ nBlocksReady = Math.ceil(nBlocksReady);
+ } else {
+ // Round down to include only full blocks,
+ // less the number of blocks that must remain in the buffer
+ nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
+ }
+
+ // Count words ready
+ var nWordsReady = nBlocksReady * blockSize;
+
+ // Count bytes ready
+ var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
+
+ // Process blocks
+ if (nWordsReady) {
+ for (var offset = 0; offset < nWordsReady; offset += blockSize) {
+ // Perform concrete-algorithm logic
+ this._doProcessBlock(dataWords, offset);
+ }
+
+ // Remove processed words
+ var processedWords = dataWords.splice(0, nWordsReady);
+ data.sigBytes -= nBytesReady;
+ }
+
+ // Return processed words
+ return new WordArray.init(processedWords, nBytesReady);
+ },
+
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = bufferedBlockAlgorithm.clone();
+ */
+ clone: function () {
+ var clone = Base.clone.call(this);
+ clone._data = this._data.clone();
+
+ return clone;
+ },
+
+ _minBufferSize: 0
+ });
+
+ /**
+ * Abstract hasher template.
+ *
+ * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
+ */
+ var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
+ /**
+ * Configuration options.
+ */
+ cfg: Base.extend(),
+
+ /**
+ * Initializes a newly created hasher.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
+ *
+ * @example
+ *
+ * var hasher = CryptoJS.algo.SHA256.create();
+ */
+ init: function (cfg) {
+ // Apply config defaults
+ this.cfg = this.cfg.extend(cfg);
+
+ // Set initial values
+ this.reset();
+ },
+
+ /**
+ * Resets this hasher to its initial state.
+ *
+ * @example
+ *
+ * hasher.reset();
+ */
+ reset: function () {
+ // Reset data buffer
+ BufferedBlockAlgorithm.reset.call(this);
+
+ // Perform concrete-hasher logic
+ this._doReset();
+ },
+
+ /**
+ * Updates this hasher with a message.
+ *
+ * @param {WordArray|string} messageUpdate The message to append.
+ *
+ * @return {Hasher} This hasher.
+ *
+ * @example
+ *
+ * hasher.update('message');
+ * hasher.update(wordArray);
+ */
+ update: function (messageUpdate) {
+ // Append
+ this._append(messageUpdate);
+
+ // Update the hash
+ this._process();
+
+ // Chainable
+ return this;
+ },
+
+ /**
+ * Finalizes the hash computation.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} messageUpdate (Optional) A final message update.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @example
+ *
+ * var hash = hasher.finalize();
+ * var hash = hasher.finalize('message');
+ * var hash = hasher.finalize(wordArray);
+ */
+ finalize: function (messageUpdate) {
+ // Final message update
+ if (messageUpdate) {
+ this._append(messageUpdate);
+ }
+
+ // Perform concrete-hasher logic
+ var hash = this._doFinalize();
+
+ return hash;
+ },
+
+ blockSize: 512/32,
+
+ /**
+ * Creates a shortcut function to a hasher's object interface.
+ *
+ * @param {Hasher} hasher The hasher to create a helper for.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
+ */
+ _createHelper: function (hasher) {
+ return function (message, cfg) {
+ return new hasher.init(cfg).finalize(message);
+ };
+ },
+
+ /**
+ * Creates a shortcut function to the HMAC's object interface.
+ *
+ * @param {Hasher} hasher The hasher to use in this HMAC helper.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
+ */
+ _createHmacHelper: function (hasher) {
+ return function (message, key) {
+ return new C_algo.HMAC.init(hasher, key).finalize(message);
+ };
+ }
+ });
+
+ /**
+ * Algorithm namespace.
+ */
+ var C_algo = C.algo = {};
+
+ return C;
+ }(Math));
+
+
+ (function () {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+
+ /**
+ * Base64 encoding strategy.
+ */
+ var Base64 = C_enc.Base64 = {
+ /**
+ * Converts a word array to a Base64 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Base64 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var map = this._map;
+
+ // Clamp excess bits
+ wordArray.clamp();
+
+ // Convert
+ var base64Chars = [];
+ for (var i = 0; i < sigBytes; i += 3) {
+ var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
+ var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
+
+ var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
+
+ for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
+ base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
+ }
+ }
+
+ // Add padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ while (base64Chars.length % 4) {
+ base64Chars.push(paddingChar);
+ }
+ }
+
+ return base64Chars.join('');
+ },
+
+ /**
+ * Converts a Base64 string to a word array.
+ *
+ * @param {string} base64Str The Base64 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Base64.parse(base64String);
+ */
+ parse: function (base64Str) {
+ // Shortcuts
+ var base64StrLength = base64Str.length;
+ var map = this._map;
+ var reverseMap = this._reverseMap;
+
+ if (!reverseMap) {
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
+ }
+
+ // Ignore padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ var paddingIndex = base64Str.indexOf(paddingChar);
+ if (paddingIndex !== -1) {
+ base64StrLength = paddingIndex;
+ }
+ }
+
+ // Convert
+ return parseLoop(base64Str, base64StrLength, reverseMap);
+
+ },
+
+ _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
+ };
+
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
+ words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
+ }
+ }());
+
+
+ (function (Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Constants table
+ var T = [];
+
+ // Compute constants
+ (function () {
+ for (var i = 0; i < 64; i++) {
+ T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
+ }
+ }());
+
+ /**
+ * MD5 hash algorithm.
+ */
+ var MD5 = C_algo.MD5 = Hasher.extend({
+ _doReset: function () {
+ this._hash = new WordArray.init([
+ 0x67452301, 0xefcdab89,
+ 0x98badcfe, 0x10325476
+ ]);
+ },
+
+ _doProcessBlock: function (M, offset) {
+ // Swap endian
+ for (var i = 0; i < 16; i++) {
+ // Shortcuts
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+
+ M[offset_i] = (
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ );
+ }
+
+ // Shortcuts
+ var H = this._hash.words;
+
+ var M_offset_0 = M[offset + 0];
+ var M_offset_1 = M[offset + 1];
+ var M_offset_2 = M[offset + 2];
+ var M_offset_3 = M[offset + 3];
+ var M_offset_4 = M[offset + 4];
+ var M_offset_5 = M[offset + 5];
+ var M_offset_6 = M[offset + 6];
+ var M_offset_7 = M[offset + 7];
+ var M_offset_8 = M[offset + 8];
+ var M_offset_9 = M[offset + 9];
+ var M_offset_10 = M[offset + 10];
+ var M_offset_11 = M[offset + 11];
+ var M_offset_12 = M[offset + 12];
+ var M_offset_13 = M[offset + 13];
+ var M_offset_14 = M[offset + 14];
+ var M_offset_15 = M[offset + 15];
+
+ // Working varialbes
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+
+ // Computation
+ a = FF(a, b, c, d, M_offset_0, 7, T[0]);
+ d = FF(d, a, b, c, M_offset_1, 12, T[1]);
+ c = FF(c, d, a, b, M_offset_2, 17, T[2]);
+ b = FF(b, c, d, a, M_offset_3, 22, T[3]);
+ a = FF(a, b, c, d, M_offset_4, 7, T[4]);
+ d = FF(d, a, b, c, M_offset_5, 12, T[5]);
+ c = FF(c, d, a, b, M_offset_6, 17, T[6]);
+ b = FF(b, c, d, a, M_offset_7, 22, T[7]);
+ a = FF(a, b, c, d, M_offset_8, 7, T[8]);
+ d = FF(d, a, b, c, M_offset_9, 12, T[9]);
+ c = FF(c, d, a, b, M_offset_10, 17, T[10]);
+ b = FF(b, c, d, a, M_offset_11, 22, T[11]);
+ a = FF(a, b, c, d, M_offset_12, 7, T[12]);
+ d = FF(d, a, b, c, M_offset_13, 12, T[13]);
+ c = FF(c, d, a, b, M_offset_14, 17, T[14]);
+ b = FF(b, c, d, a, M_offset_15, 22, T[15]);
+
+ a = GG(a, b, c, d, M_offset_1, 5, T[16]);
+ d = GG(d, a, b, c, M_offset_6, 9, T[17]);
+ c = GG(c, d, a, b, M_offset_11, 14, T[18]);
+ b = GG(b, c, d, a, M_offset_0, 20, T[19]);
+ a = GG(a, b, c, d, M_offset_5, 5, T[20]);
+ d = GG(d, a, b, c, M_offset_10, 9, T[21]);
+ c = GG(c, d, a, b, M_offset_15, 14, T[22]);
+ b = GG(b, c, d, a, M_offset_4, 20, T[23]);
+ a = GG(a, b, c, d, M_offset_9, 5, T[24]);
+ d = GG(d, a, b, c, M_offset_14, 9, T[25]);
+ c = GG(c, d, a, b, M_offset_3, 14, T[26]);
+ b = GG(b, c, d, a, M_offset_8, 20, T[27]);
+ a = GG(a, b, c, d, M_offset_13, 5, T[28]);
+ d = GG(d, a, b, c, M_offset_2, 9, T[29]);
+ c = GG(c, d, a, b, M_offset_7, 14, T[30]);
+ b = GG(b, c, d, a, M_offset_12, 20, T[31]);
+
+ a = HH(a, b, c, d, M_offset_5, 4, T[32]);
+ d = HH(d, a, b, c, M_offset_8, 11, T[33]);
+ c = HH(c, d, a, b, M_offset_11, 16, T[34]);
+ b = HH(b, c, d, a, M_offset_14, 23, T[35]);
+ a = HH(a, b, c, d, M_offset_1, 4, T[36]);
+ d = HH(d, a, b, c, M_offset_4, 11, T[37]);
+ c = HH(c, d, a, b, M_offset_7, 16, T[38]);
+ b = HH(b, c, d, a, M_offset_10, 23, T[39]);
+ a = HH(a, b, c, d, M_offset_13, 4, T[40]);
+ d = HH(d, a, b, c, M_offset_0, 11, T[41]);
+ c = HH(c, d, a, b, M_offset_3, 16, T[42]);
+ b = HH(b, c, d, a, M_offset_6, 23, T[43]);
+ a = HH(a, b, c, d, M_offset_9, 4, T[44]);
+ d = HH(d, a, b, c, M_offset_12, 11, T[45]);
+ c = HH(c, d, a, b, M_offset_15, 16, T[46]);
+ b = HH(b, c, d, a, M_offset_2, 23, T[47]);
+
+ a = II(a, b, c, d, M_offset_0, 6, T[48]);
+ d = II(d, a, b, c, M_offset_7, 10, T[49]);
+ c = II(c, d, a, b, M_offset_14, 15, T[50]);
+ b = II(b, c, d, a, M_offset_5, 21, T[51]);
+ a = II(a, b, c, d, M_offset_12, 6, T[52]);
+ d = II(d, a, b, c, M_offset_3, 10, T[53]);
+ c = II(c, d, a, b, M_offset_10, 15, T[54]);
+ b = II(b, c, d, a, M_offset_1, 21, T[55]);
+ a = II(a, b, c, d, M_offset_8, 6, T[56]);
+ d = II(d, a, b, c, M_offset_15, 10, T[57]);
+ c = II(c, d, a, b, M_offset_6, 15, T[58]);
+ b = II(b, c, d, a, M_offset_13, 21, T[59]);
+ a = II(a, b, c, d, M_offset_4, 6, T[60]);
+ d = II(d, a, b, c, M_offset_11, 10, T[61]);
+ c = II(c, d, a, b, M_offset_2, 15, T[62]);
+ b = II(b, c, d, a, M_offset_9, 21, T[63]);
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ },
+
+ _doFinalize: function () {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+
+ var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
+ var nBitsTotalL = nBitsTotal;
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
+ (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
+ );
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
+ (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
+ );
+
+ data.sigBytes = (dataWords.length + 1) * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Shortcuts
+ var hash = this._hash;
+ var H = hash.words;
+
+ // Swap endian
+ for (var i = 0; i < 4; i++) {
+ // Shortcut
+ var H_i = H[i];
+
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ }
+
+ // Return final computed hash
+ return hash;
+ },
+
+ clone: function () {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ function FF(a, b, c, d, x, s, t) {
+ var n = a + ((b & c) | (~b & d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function GG(a, b, c, d, x, s, t) {
+ var n = a + ((b & d) | (c & ~d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function HH(a, b, c, d, x, s, t) {
+ var n = a + (b ^ c ^ d) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function II(a, b, c, d, x, s, t) {
+ var n = a + (c ^ (b | ~d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.MD5('message');
+ * var hash = CryptoJS.MD5(wordArray);
+ */
+ C.MD5 = Hasher._createHelper(MD5);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacMD5(message, key);
+ */
+ C.HmacMD5 = Hasher._createHmacHelper(MD5);
+ }(Math));
+
+
+ (function () {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Reusable object
+ var W = [];
+
+ /**
+ * SHA-1 hash algorithm.
+ */
+ var SHA1 = C_algo.SHA1 = Hasher.extend({
+ _doReset: function () {
+ this._hash = new WordArray.init([
+ 0x67452301, 0xefcdab89,
+ 0x98badcfe, 0x10325476,
+ 0xc3d2e1f0
+ ]);
+ },
+
+ _doProcessBlock: function (M, offset) {
+ // Shortcut
+ var H = this._hash.words;
+
+ // Working variables
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ var e = H[4];
+
+ // Computation
+ for (var i = 0; i < 80; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
+ W[i] = (n << 1) | (n >>> 31);
+ }
+
+ var t = ((a << 5) | (a >>> 27)) + e + W[i];
+ if (i < 20) {
+ t += ((b & c) | (~b & d)) + 0x5a827999;
+ } else if (i < 40) {
+ t += (b ^ c ^ d) + 0x6ed9eba1;
+ } else if (i < 60) {
+ t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;
+ } else /* if (i < 80) */ {
+ t += (b ^ c ^ d) - 0x359d3e2a;
+ }
+
+ e = d;
+ d = c;
+ c = (b << 30) | (b >>> 2);
+ b = a;
+ a = t;
+ }
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ H[4] = (H[4] + e) | 0;
+ },
+
+ _doFinalize: function () {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Return final computed hash
+ return this._hash;
+ },
+
+ clone: function () {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA1('message');
+ * var hash = CryptoJS.SHA1(wordArray);
+ */
+ C.SHA1 = Hasher._createHelper(SHA1);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA1(message, key);
+ */
+ C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
+ }());
+
+
+ (function (Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Initialization and round constants tables
+ var H = [];
+ var K = [];
+
+ // Compute constants
+ (function () {
+ function isPrime(n) {
+ var sqrtN = Math.sqrt(n);
+ for (var factor = 2; factor <= sqrtN; factor++) {
+ if (!(n % factor)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function getFractionalBits(n) {
+ return ((n - (n | 0)) * 0x100000000) | 0;
+ }
+
+ var n = 2;
+ var nPrime = 0;
+ while (nPrime < 64) {
+ if (isPrime(n)) {
+ if (nPrime < 8) {
+ H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
+ }
+ K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));
+
+ nPrime++;
+ }
+
+ n++;
+ }
+ }());
+
+ // Reusable object
+ var W = [];
+
+ /**
+ * SHA-256 hash algorithm.
+ */
+ var SHA256 = C_algo.SHA256 = Hasher.extend({
+ _doReset: function () {
+ this._hash = new WordArray.init(H.slice(0));
+ },
+
+ _doProcessBlock: function (M, offset) {
+ // Shortcut
+ var H = this._hash.words;
+
+ // Working variables
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ var e = H[4];
+ var f = H[5];
+ var g = H[6];
+ var h = H[7];
+
+ // Computation
+ for (var i = 0; i < 64; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var gamma0x = W[i - 15];
+ var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
+ ((gamma0x << 14) | (gamma0x >>> 18)) ^
+ (gamma0x >>> 3);
+
+ var gamma1x = W[i - 2];
+ var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
+ ((gamma1x << 13) | (gamma1x >>> 19)) ^
+ (gamma1x >>> 10);
+
+ W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
+ }
+
+ var ch = (e & f) ^ (~e & g);
+ var maj = (a & b) ^ (a & c) ^ (b & c);
+
+ var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));
+ var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
+
+ var t1 = h + sigma1 + ch + K[i] + W[i];
+ var t2 = sigma0 + maj;
+
+ h = g;
+ g = f;
+ f = e;
+ e = (d + t1) | 0;
+ d = c;
+ c = b;
+ b = a;
+ a = (t1 + t2) | 0;
+ }
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ H[4] = (H[4] + e) | 0;
+ H[5] = (H[5] + f) | 0;
+ H[6] = (H[6] + g) | 0;
+ H[7] = (H[7] + h) | 0;
+ },
+
+ _doFinalize: function () {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Return final computed hash
+ return this._hash;
+ },
+
+ clone: function () {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA256('message');
+ * var hash = CryptoJS.SHA256(wordArray);
+ */
+ C.SHA256 = Hasher._createHelper(SHA256);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA256(message, key);
+ */
+ C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
+ }(Math));
+
+
+ (function () {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+
+ /**
+ * UTF-16 BE encoding strategy.
+ */
+ var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
+ /**
+ * Converts a word array to a UTF-16 BE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 BE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+
+ return utf16Chars.join('');
+ },
+
+ /**
+ * Converts a UTF-16 BE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 BE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
+ */
+ parse: function (utf16Str) {
+ // Shortcut
+ var utf16StrLength = utf16Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);
+ }
+
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+
+ /**
+ * UTF-16 LE encoding strategy.
+ */
+ C_enc.Utf16LE = {
+ /**
+ * Converts a word array to a UTF-16 LE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 LE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
+ */
+ stringify: function (wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+
+ return utf16Chars.join('');
+ },
+
+ /**
+ * Converts a UTF-16 LE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 LE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
+ */
+ parse: function (utf16Str) {
+ // Shortcut
+ var utf16StrLength = utf16Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));
+ }
+
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+
+ function swapEndian(word) {
+ return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);
+ }
+ }());
+
+
+ (function () {
+ // Check if typed arrays are supported
+ if (typeof ArrayBuffer != 'function') {
+ return;
+ }
+
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+
+ // Reference original init
+ var superInit = WordArray.init;
+
+ // Augment WordArray.init to handle typed arrays
+ var subInit = WordArray.init = function (typedArray) {
+ // Convert buffers to uint8
+ if (typedArray instanceof ArrayBuffer) {
+ typedArray = new Uint8Array(typedArray);
+ }
+
+ // Convert other array views to uint8
+ if (
+ typedArray instanceof Int8Array ||
+ (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) ||
+ typedArray instanceof Int16Array ||
+ typedArray instanceof Uint16Array ||
+ typedArray instanceof Int32Array ||
+ typedArray instanceof Uint32Array ||
+ typedArray instanceof Float32Array ||
+ typedArray instanceof Float64Array
+ ) {
+ typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
+ }
+
+ // Handle Uint8Array
+ if (typedArray instanceof Uint8Array) {
+ // Shortcut
+ var typedArrayByteLength = typedArray.byteLength;
+
+ // Extract bytes
+ var words = [];
+ for (var i = 0; i < typedArrayByteLength; i++) {
+ words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);
+ }
+
+ // Initialize this word array
+ superInit.call(this, words, typedArrayByteLength);
+ } else {
+ // Else call normal init
+ superInit.apply(this, arguments);
+ }
+ };
+
+ subInit.prototype = WordArray;
+ }());
+
+
+ /** @preserve
+ (c) 2012 by Cédric Mesnil. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ (function (Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Constants table
+ var _zl = WordArray.create([
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
+ 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
+ 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
+ 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);
+ var _zr = WordArray.create([
+ 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
+ 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
+ 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
+ 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
+ 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);
+ var _sl = WordArray.create([
+ 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
+ 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
+ 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
+ 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
+ 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);
+ var _sr = WordArray.create([
+ 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
+ 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
+ 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
+ 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
+ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);
+
+ var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
+ var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
+
+ /**
+ * RIPEMD160 hash algorithm.
+ */
+ var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
+ _doReset: function () {
+ this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
+ },
+
+ _doProcessBlock: function (M, offset) {
+
+ // Swap endian
+ for (var i = 0; i < 16; i++) {
+ // Shortcuts
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+
+ // Swap
+ M[offset_i] = (
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ );
+ }
+ // Shortcut
+ var H = this._hash.words;
+ var hl = _hl.words;
+ var hr = _hr.words;
+ var zl = _zl.words;
+ var zr = _zr.words;
+ var sl = _sl.words;
+ var sr = _sr.words;
+
+ // Working variables
+ var al, bl, cl, dl, el;
+ var ar, br, cr, dr, er;
+
+ ar = al = H[0];
+ br = bl = H[1];
+ cr = cl = H[2];
+ dr = dl = H[3];
+ er = el = H[4];
+ // Computation
+ var t;
+ for (var i = 0; i < 80; i += 1) {
+ t = (al + M[offset+zl[i]])|0;
+ if (i<16){
+ t += f1(bl,cl,dl) + hl[0];
+ } else if (i<32) {
+ t += f2(bl,cl,dl) + hl[1];
+ } else if (i<48) {
+ t += f3(bl,cl,dl) + hl[2];
+ } else if (i<64) {
+ t += f4(bl,cl,dl) + hl[3];
+ } else {// if (i<80) {
+ t += f5(bl,cl,dl) + hl[4];
+ }
+ t = t|0;
+ t = rotl(t,sl[i]);
+ t = (t+el)|0;
+ al = el;
+ el = dl;
+ dl = rotl(cl, 10);
+ cl = bl;
+ bl = t;
+
+ t = (ar + M[offset+zr[i]])|0;
+ if (i<16){
+ t += f5(br,cr,dr) + hr[0];
+ } else if (i<32) {
+ t += f4(br,cr,dr) + hr[1];
+ } else if (i<48) {
+ t += f3(br,cr,dr) + hr[2];
+ } else if (i<64) {
+ t += f2(br,cr,dr) + hr[3];
+ } else {// if (i<80) {
+ t += f1(br,cr,dr) + hr[4];
+ }
+ t = t|0;
+ t = rotl(t,sr[i]) ;
+ t = (t+er)|0;
+ ar = er;
+ er = dr;
+ dr = rotl(cr, 10);
+ cr = br;
+ br = t;
+ }
+ // Intermediate hash value
+ t = (H[1] + cl + dr)|0;
+ H[1] = (H[2] + dl + er)|0;
+ H[2] = (H[3] + el + ar)|0;
+ H[3] = (H[4] + al + br)|0;
+ H[4] = (H[0] + bl + cr)|0;
+ H[0] = t;
+ },
+
+ _doFinalize: function () {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
+ (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
+ );
+ data.sigBytes = (dataWords.length + 1) * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Shortcuts
+ var hash = this._hash;
+ var H = hash.words;
+
+ // Swap endian
+ for (var i = 0; i < 5; i++) {
+ // Shortcut
+ var H_i = H[i];
+
+ // Swap
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ }
+
+ // Return final computed hash
+ return hash;
+ },
+
+ clone: function () {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+
+ function f1(x, y, z) {
+ return ((x) ^ (y) ^ (z));
+
+ }
+
+ function f2(x, y, z) {
+ return (((x)&(y)) | ((~x)&(z)));
+ }
+
+ function f3(x, y, z) {
+ return (((x) | (~(y))) ^ (z));
+ }
+
+ function f4(x, y, z) {
+ return (((x) & (z)) | ((y)&(~(z))));
+ }
+
+ function f5(x, y, z) {
+ return ((x) ^ ((y) |(~(z))));
+
+ }
+
+ function rotl(x,n) {
+ return (x< '
+ + 'Some errors occurred, check the original file please.'
+ + 'Detailed exceptions are shown in console.'
+ + ' " + match_content + "... 共找到" + String(cnt-1) + "条结果 ",t+=r(e[1]),t+="
/g, '\n');
+ return s;
+
+}
+
+function decodeBase64(content) {
+
+ content = CryptoJS.enc.Base64.parse(content);
+ content = CryptoJS.enc.Utf8.stringify(content);
+ return content;
+
+}
+
+function setCookie(cookieName, cookieValue, expireMinutes) {
+
+ const expireTime = new Date(new Date().getTime() + 1000 * 60 * expireMinutes);
+ document.cookie = `${cookieName}=${escape(cookieValue)}${expireMinutes == null ? '' : `;expires=${expireTime.toGMTString()}`}`;
+
+}
+
+function getCookie(cookieName) {
+
+ if (document.cookie.length > 0) {
+
+ let idx = document.cookie.indexOf(`${cookieName}=`);
+ if (idx != -1) {
+
+ idx = idx + cookieName.length + 1;
+ let idy = document.cookie.indexOf(';', idx);
+ if (idy == -1) {
+
+ idy = document.cookie.length;
+
+ }
+ return unescape(document.cookie.substring(idx, idy));
+
+ }
+
+ }
+ return '';
+
+}
+
+function GetUrlRelativePath() {
+
+ const url = document.location.toString();
+ const arrUrl = url.split('//');
+
+ const start = arrUrl[1].indexOf('/');
+ let relUrl = arrUrl[1].substring(start);
+
+ if (relUrl.indexOf('?') != -1) {
+
+ relUrl = relUrl.split('?')[0];
+
+ }
+ return relUrl;
+
+}
+
+function GenerateCookieName() {
+
+ const COOKIE_NAME = 'HBE-PASSWORD';
+ return COOKIE_NAME + GetUrlRelativePath();
+
+}
+
+// Since you decided to use jQuery.
+$(document).ready(
+ function () {
+ let password = String(getCookie(GenerateCookieName()));
+ console.log(`Get password from Cookie:${password}`);
+
+ if (password != '') {
+
+ if (!decryptAES(password)) {
+ // Delete cookie
+ setCookie(COOKIE_NAME, password, -5);
+ } else {
+
+ document.getElementById('encrypt-blog').removeAttribute('style');
+
+ $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
+ }
+ }
+ document.getElementById('pass').onkeypress = function (keyPressEvent) {
+
+ password = String(document.getElementById('pass').value);
+ if (keyPressEvent.keyCode === 13) {
+
+ const result = decryptAES(password);
+
+ if (result) {
+ document.getElementById('encrypt-blog').removeAttribute('style');
+
+ $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
+
+ setCookie(GenerateCookieName(), password, 30);
+ }
+ }
+ };
+ $('#btn_decrypt').on('click', function () {
+
+ password = String(document.getElementById('pass').value);
+
+ const result = decryptAES(password);
+
+ if (result) {
+
+ document.getElementById('encrypt-blog').removeAttribute('style');
+
+ $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
+
+ setCookie(GenerateCookieName(), password, 30);
+ }
+ });
+ }
+);
\ No newline at end of file
diff --git a/source/js/jquery.barrager.js b/source/js/jquery.barrager.js
new file mode 100644
index 0000000..9f645b1
--- /dev/null
+++ b/source/js/jquery.barrager.js
@@ -0,0 +1,83 @@
+/**
+ *@name jquery.barrager.js
+ *@version 1.1
+ *@author yaseng@uauc.net
+ *@url https://github.com/yaseng/jquery.barrager.js
+ */
+(function($) {
+ $.fn.barrager = function(barrage) {
+ barrage = $.extend({
+ close: true,
+ max: 10,
+ speed: 16,
+ color: '#ffffff',
+ }, barrage || {});
+
+ const time = new Date().getTime();
+ const barrager_id = 'barrage_' + time;
+ const id = '#' + barrager_id;
+ const div_barrager = $("").appendTo($(this));
+ const this_height = $(window).height() * 0.35;
+ const this_width = $(window).width() + 100;
+ const array = [
+ (this_height / 5) + $(window).height() * 0.5,
+ 2*(this_height / 5) + $(window).height() * 0.5,
+ 3*(this_height / 5) + $(window).height() * 0.5,
+ 4*(this_height / 5) + $(window).height() * 0.5,
+ 5*(this_height / 5) + $(window).height() * 0.5
+ ]
+ const bottom =array[Math.floor(Math.random()*5)];
+
+ div_barrager.css("bottom", bottom + "px");
+ div_barrager_box = $("").appendTo(div_barrager);
+ if(barrage.img){
+ div_barrager_box.append("");
+ const img = $("").appendTo(id + " .barrage_box .portrait");
+ img.attr('src', barrage.img);
+ }
+ div_barrager_box.append(" ");
+ if(barrage.close){
+ div_barrager_box.append(" ");
+ }
+
+ const content = $("").appendTo(id + " .barrage_box .p");
+ content.attr({
+ 'href': barrage.href,
+ 'id': barrage.id
+ }).empty().append(barrage.info);
+ content.css('color', barrage.color);
+
+ const i = 0;
+ div_barrager.css('margin-right', 0);
+
+ $(id).animate({right:this_width},barrage.speed*1000,function()
+ {
+ $(id).remove();
+ });
+
+ div_barrager_box.mouseover(function()
+ {
+ $(id).stop(true);
+ });
+
+ div_barrager_box.mouseout(function()
+ {
+ $(id).animate({right:this_width},barrage.speed*1000,function()
+ {
+ $(id).remove();
+ });
+ });
+
+ $(id+'.barrage .barrage_box .close').click(function()
+ {
+ $(id).remove();
+ })
+ }
+
+
+ $.fn.barrager.removeAll=function()
+ {
+ $('.barrage').remove();
+ }
+
+})(jQuery);
diff --git a/source/js/matery.js b/source/js/matery.js
new file mode 100644
index 0000000..231f259
--- /dev/null
+++ b/source/js/matery.js
@@ -0,0 +1,172 @@
+$(function () {
+ /**
+ * 添加文章卡片hover效果.
+ */
+ let articleCardHover = function () {
+ let animateClass = 'animated pulse';
+ $('article .article').hover(function () {
+ $(this).addClass(animateClass);
+ }, function () {
+ $(this).removeClass(animateClass);
+ });
+ };
+ articleCardHover();
+
+ /*菜单切换*/
+ $('.sidenav').sidenav();
+
+ /* 修复文章卡片 div 的宽度. */
+ let fixPostCardWidth = function (srcId, targetId) {
+ let srcDiv = $('#' + srcId);
+ if (srcDiv.length === 0) {
+ return;
+ }
+
+ let w = srcDiv.width();
+ if (w >= 450) {
+ w = w + 21;
+ } else if (w >= 350 && w < 450) {
+ w = w + 18;
+ } else if (w >= 300 && w < 350) {
+ w = w + 16;
+ } else {
+ w = w + 14;
+ }
+ $('#' + targetId).width(w);
+ };
+
+ /**
+ * 修复footer部分的位置,使得在内容比较少时,footer也会在底部.
+ */
+ let fixFooterPosition = function () {
+ $('.content').css('min-height', window.innerHeight - 165);
+ };
+
+ /**
+ * 修复样式.
+ */
+ let fixStyles = function () {
+ fixPostCardWidth('navContainer');
+ fixPostCardWidth('artDetail', 'prenext-posts');
+ fixFooterPosition();
+ };
+ fixStyles();
+
+ /*调整屏幕宽度时重新设置文章列的宽度,修复小间距问题*/
+ $(window).resize(function () {
+ fixStyles();
+ });
+
+ /*初始化瀑布流布局*/
+ $('#articles').masonry({
+ itemSelector: '.article'
+ });
+
+ AOS.init({
+ easing: 'ease-in-out-sine',
+ duration: 700,
+ delay: 100
+ });
+
+ /*文章内容详情的一些初始化特性*/
+ let articleInit = function () {
+ $('#articleContent a').attr('target', '_blank');
+
+ $('#articleContent img').each(function () {
+ let imgPath = $(this).attr('src');
+ $(this).wrap('');
+ // 图片添加阴影
+ $(this).addClass("img-shadow img-margin");
+ // 图片添加字幕
+ let alt = $(this).attr('alt');
+ let title = $(this).attr('title');
+ let captionText = "";
+ // 如果alt为空,title来替
+ if (alt === undefined || alt === "") {
+ if (title !== undefined && title !== "") {
+ captionText = title;
+ }
+ } else {
+ captionText = alt;
+ }
+ // 字幕不空,添加之
+ if (captionText !== "") {
+ let captionDiv = document.createElement('div');
+ captionDiv.className = 'caption';
+ let captionEle = document.createElement('b');
+ captionEle.className = 'center-caption';
+ captionEle.innerText = captionText;
+ captionDiv.appendChild(captionEle);
+ this.insertAdjacentElement('afterend', captionDiv)
+ }
+ });
+ $('#articleContent, #myGallery').lightGallery({
+ selector: '.img-item',
+ // 启用字幕
+ subHtmlSelectorRelative: true
+ });
+
+ // progress bar init
+ const progressElement = window.document.querySelector('.progress-bar');
+ if (progressElement) {
+ new ScrollProgress((x, y) => {
+ progressElement.style.width = y * 100 + '%';
+ });
+ }
+ };
+ articleInit();
+
+ $('.modal').modal();
+
+ /*回到顶部*/
+ $('#backTop').click(function () {
+ $('body,html').animate({scrollTop: 0}, 400);
+ return false;
+ });
+
+ /*监听滚动条位置*/
+ let $nav = $('#headNav');
+ let $backTop = $('.top-scroll');
+ // 当页面处于文章中部的时候刷新页面,因为此时无滚动,所以需要判断位置,给导航加上绿色。
+ showOrHideNavBg($(window).scrollTop());
+ $(window).scroll(function () {
+ /* 回到顶部按钮根据滚动条的位置的显示和隐藏.*/
+ let scroll = $(window).scrollTop();
+ showOrHideNavBg(scroll);
+ });
+
+ function showOrHideNavBg(position) {
+ let showPosition = 100;
+ if (position < showPosition) {
+ $nav.addClass('nav-transparent');
+ $backTop.slideUp(300);
+ } else {
+ $nav.removeClass('nav-transparent');
+ $backTop.slideDown(300);
+ }
+ }
+
+
+ $(".nav-menu>li").hover(function(){
+ $(this).children('ul').stop(true,true).show();
+ $(this).addClass('nav-show').siblings('li').removeClass('nav-show');
+
+ },function(){
+ $(this).children('ul').stop(true,true).hide();
+ $('.nav-item.nav-show').removeClass('nav-show');
+ })
+
+ $('.m-nav-item>a').on('click',function(){
+ if ($(this).next('ul').css('display') == "none") {
+ $('.m-nav-item').children('ul').slideUp(300);
+ $(this).next('ul').slideDown(100);
+ $(this).parent('li').addClass('m-nav-show').siblings('li').removeClass('m-nav-show');
+ }else{
+ $(this).next('ul').slideUp(100);
+ $('.m-nav-item.m-nav-show').removeClass('m-nav-show');
+ }
+ });
+
+ // 初始化加载 tooltipped.
+ $('.tooltipped').tooltip();
+});
diff --git a/source/js/search.js b/source/js/search.js
new file mode 100644
index 0000000..f8486d7
--- /dev/null
+++ b/source/js/search.js
@@ -0,0 +1,82 @@
+var searchFunc = function (path, search_id, content_id) {
+ 'use strict';
+ $.ajax({
+ url: path,
+ dataType: "xml",
+ success: function (xmlResponse) {
+ // get the contents from search data
+ var datas = $("entry", xmlResponse).map(function () {
+ return {
+ title: $("title", this).text(),
+ content: $("content", this).text(),
+ url: $("url", this).text()
+ };
+ }).get();
+ var $input = document.getElementById(search_id);
+ var $resultContent = document.getElementById(content_id);
+ $input.addEventListener('input', function () {
+ var str = '
';
+ var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
+ $resultContent.innerHTML = "";
+ if (this.value.trim().length <= 0) {
+ return;
+ }
+ // perform local searching
+ var cnt = 1;
+ datas.forEach(function (data) {
+ var isMatch = true;
+ var content_index = [];
+ var data_title = data.title.trim().toLowerCase();
+ var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase();
+ var data_url = data.url;
+ var index_title = -1;
+ var index_content = -1;
+ var first_occur = -1;
+ // only match artiles with not empty titles and contents
+ if (data_title != '' && data_content != '') {
+ keywords.forEach(function (keyword, i) {
+ index_title = data_title.indexOf(keyword);
+ index_content = data_content.indexOf(keyword);
+ if (index_title < 0 && index_content < 0) {
+ isMatch = false;
+ } else {
+ if (index_content < 0) {
+ index_content = 0;
+ }
+ if (i == 0) {
+ first_occur = index_content;
+ }
+ }
+ });
+ }
+ // show search results
+ if (isMatch) {
+ str += "
";
+ str = "]/;a.$escape=function(e){return function(e){var t=""+e,n=r.exec(t);if(!n)return e;var i="",a=void 0,o=void 0,s=void 0;for(a=n.index,o=0;a\n ",l(n(1)(u({theme:a.theme,audio:a.audio,index:1}))),t+='\n
\n\n\n ",l(n(1)(u({theme:a.theme,audio:a.audio,index:1}))),t+="\n
\n\n
a&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function km(t){var e=0;d(t.children,function(t){km(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Pm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}Zw.call(this);var a=new QS({z2:xP});a.seriesIndex=e.seriesIndex;var r=new qS({z2:_P,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Nm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Om(t)%r]}function Om(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Em(t,e,i){return i!==yP.NONE&&(i===yP.SELF?t===e:i===yP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Rm(t,e){var i=t.children||[];t.children=zm(i,e),i.length&&d(t.children,function(t){Rm(t,e)})}function zm(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Bm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function Vm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Gm(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function Fm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Wm(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=tv(n);(e=Wn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new hi({})).__customImagePath=t.style.image:"text"===i?(e=new qS({})).__customText=t.style.text:e=new(0,bM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function Hm(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Zm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Zm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),So(t,{style:{opacity:c}},o,e)}r?t.attr(l):bo(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(no(t,f),t.__cusHasEmphStl=!p),s&&ho(t,!p)}function Zm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Um(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(AP),f=c.getModel(DP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():LP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(IP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),fo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),gu(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(TP).getItemStyle();return fo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),gu(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Tl(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return _o(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:Xm(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function Xm(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function jm(t,e,i,n,o,a){return(t=Ym(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function Ym(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&ev(u)&&tv(u)!==t.__customPathData||"image"===l&&iv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&iv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Wm(i)),Hm(t,e,i,n,a,c,r),"group"===l&&qm(t,e,i,n,a),o.add(t),t}}function qm(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)Km({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;h
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?hr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=ia({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?Qo(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?Qo(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(z_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=JM.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(OI,LI),h(OI,JM);var EI=function(){this.group=new Zw,this.uid=No("viewComponent")};EI.prototype={constructor:EI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var RI=EI.prototype;RI.updateView=RI.updateLayout=RI.updateVisual=function(t,e,i,n){},Xi(EI),Ki(EI,{registerWhenExtend:!0});var zI=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},BI=Bi(),VI=zI();Mr.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Tr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Tr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var GI=Mr.prototype;GI.updateView=GI.updateLayout=GI.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},Xi(Mr),Ki(Mr,{registerWhenExtend:!0}),Mr.markUpdateMethod=function(t,e){BI(t).updateMethod=e};var FI={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},WI="\0__throttleOriginMethod",HI="\0__throttleRate",ZI="\0__throttleType",UI={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof cM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},XI={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},jI=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=XI.aria,o=0;oC[1]&&(C[1]=D)}if(!o.pure){var L=u[b];if(w&&null==L)if(null!=w.name)u[b]=L=w.name;else if(null!=i){var k=r[i],P=a[k][S];if(P){L=P[M];var N=l[k].ordinalMeta;N&&N.categories.length&&(L=N.categories[L])}}var O=null==w?null:w.id;null==O&&null!=L&&(d[L]=d[L]||0,O=L,d[L]>0&&(O+="__ec__"+d[L]),d[L]++),null!=O&&(h[b]=O)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},$s(this)}},iA.count=function(){return this._count},iA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},iA.getRawIndex=Qs,iA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;ic[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=tl,o},iA.getItemModel=function(t){var e=this.hostModel;return new Lo(this.getRawDataItem(t),e,e&&e.ecModel)},iA.diff=function(t){var e=this;return new Hs(t?t.getIndices():[],this.getIndices(),function(e){return el(t,e)},function(t){return el(e,t)})},iA.getVisual=function(t){var e=this._visual;return e&&e[t]},iA.setVisual=function(t,e){if(YT(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},iA.setLayout=function(t,e){if(YT(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},iA.getLayout=function(t){return this._layout[t]},iA.getItemLayout=function(t){return this._itemLayouts[t]},iA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},iA.clearItemLayouts=function(){this._itemLayouts.length=0},iA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},iA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,YT(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},iA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var nA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};iA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(nA,e)),this._graphicEls[t]=e},iA.getItemGraphicEl=function(t){return this._graphicEls[t]},iA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},iA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new eA(e,this.hostModel)}if(t._storage=this._storage,Ks(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?tl:Qs,t},iA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},iA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],iA.CHANGABLE_METHODS=["filterSelf","selectRange"];var oA=function(t,e){return e=e||{},rl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};gl.prototype.parse=function(t){return t},gl.prototype.getSetting=function(t){return this._setting[t]},gl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},gl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},gl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},gl.prototype.unionExtent=function(t){var e=this._extent;t[0]
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Fs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=Hh(t.getItemVisual(e,"symbolSize")),a=Xl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l0){if(xn(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(vn(l,u,c,d))return a;a++}return-1}}),Wk=gg.prototype;Wk.isPersistent=function(){return!this._incremental},Wk.updateData=function(t){this.group.removeAll();var e=new Fk({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},Wk.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Gn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},Wk.incrementalUpdate=function(t,e){var i=new Fk;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},Wk.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},Wk._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},Wk._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var Hk={seriesType:"lines",plan:zI(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h
"):(n=new bv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!z_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");im("itemTooltip",this._api,UP(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!z_.node){var o=Mv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=YP;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=eP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Mv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=Sv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=Sv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};XP(t,function(t){XP(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=ym(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Wl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?Qo(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=Sv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new Lo(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=ta(h,i,!0);else if("function"==typeof h){var d=UP(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=jP(e[0],s),n=jP(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=la(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Av(e,d,u))[0],n=p[1]):(i=(p=Iv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Dv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Dv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Tv(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&XP(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&XP(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&XP(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){z_.node||(this._tooltipContent.hide(),lm("itemTooltip",e))}}),Ps({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Ps({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Pv.prototype={constructor:Pv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:HA.prototype.dataToCoord,radiusToData:HA.prototype.coordToData},u(Pv,HA);var qP=Bi();Nv.prototype={constructor:Nv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:HA.prototype.dataToCoord,angleToData:HA.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=De(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=qP(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Nv,HA);var KP=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Pv,this._angleAxis=new Nv,this._radiusAxis.polar=this._angleAxis.polar=this};KP.prototype={type:"polar",axisPointerEnabled:!0,constructor:KP,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var $P=YM.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n($P.prototype,CA);var JP={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};xD("angle",$P,Ov,JP.angle),xD("radius",$P,Ov,JP.radius),Bs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var QP={dimensions:KP.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new KP(n);o.update=Rv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");zv(a,s),zv(r,l),Ev(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Ba.register("polar",QP);var tN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];LD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Gv(s),Gv(r),d(tN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new KS({shape:{cx:e.cx,cy:e.cy,r:n[Vv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[Vv(e)],l=f(i,function(t){return new rM({shape:Bv(e,[s,s+a],t.coord)})});this.group.add(xM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[Vv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new Lo(a[u].textStyle,r,r.ecModel));var m=new qS({silent:!0});this.group.add(m),fo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u
"),o&&(a+=TO(o),null!=i&&(a+=" : ")),null!=i&&(a+=TO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(AO,LI),AO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var DO=l,CO=v,LO={min:CO(ox,"min"),max:CO(ox,"max"),average:CO(ox,"average")},kO=Vs({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});kO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(cx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Su),u=dx(o,t,e);e.setData(u),cx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ls(function(t){t.markPoint=t.markPoint||{}}),AO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var PO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=rx(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=hx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[ax(t,r[0]),ax(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};kO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){mx(o,e,!0,t,i),mx(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);mx(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new Jd);this.group.add(u.group);var h=vx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ls(function(t){t.markLine=t.markLine||{}}),AO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var NO=function(t,e,i,n){var a=ax(t,n[0]),r=ax(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},OO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];kO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(OO,function(o){return bx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new Zw});this.group.add(u.group),u.__keep=!0;var h=Sx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(OO,function(i){return bx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new nM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);bo(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Ut(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),co(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),uo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ls(function(t){t.markArea=t.markArea||{}});YM.registerSubTypeDefaulter("timeline",function(){return"slider"}),Ps({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Ps({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var EO=YM.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){EO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new eA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(EO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),LI);var RO=EI.extend({type:"timeline"}),zO=function(t,e,i,n){HA.call(this,t,e,i),this.type=n||"value",this.model=null};zO.prototype={constructor:zO,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(zO,HA);var BO=m,VO=d,GO=Math.PI;RO.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return Qo(s.scale.getLabel(t))},VO(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ax(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},yy("saveAsImage",Px);var HO=XI.toolbox.magicType;Nx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(HO.title),option:{},seriesIndex:{}};var ZO=Nx.prototype;ZO.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var UO={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},XO=[["line","bar"],["stack","tiled"]];ZO.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(UO[i]){var a={series:[]};d(XO,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=UO[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Ps({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),yy("magicType",Nx);var jO=XI.toolbox.dataView,YO=new Array(60).join("-"),qO="\t",KO=new RegExp("["+qO+"]+","g");Hx.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(jO.title),lang:i(jO.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},Hx.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=zx(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ut(v,"click",i),ut(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Wx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ut(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+qO+e.substring(n),this.selectionStart=this.selectionEnd=i+1,lw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},Hx.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},Hx.prototype.dispose=function(t,e){this.remove(t,e)},yy("dataView",Hx),Ps({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Zx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var $O=d,JO="\0_ec_hist_store";BN.extend({type:"dataZoom.select"}),VN.extend({type:"dataZoom.select"});var QO=XI.toolbox.dataZoom,tE=d,eE="\0_ec_\0toolbox-dataZoom_";Kx.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(QO.title)};var iE=Kx.prototype;iE.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,Qx(t,e,this,n,i),Jx(t,e)},iE.onclick=function(t,e,i){nE[i].call(this)},iE.remove=function(t,e){this._brushController.unmount()},iE.dispose=function(t,e){this._brushController.dispose()};var nE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(Xx(this.ecModel))}};iE._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=EL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new iy($x(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Ux(a,o),this._dispatchZoomAction(o)}},iE._dispatchZoomAction=function(t){var e=[];tE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},yy("dataZoom",Kx),Ls(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:eE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),tE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var oE=XI.toolbox.restore;t_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:oE.title},t_.prototype.onclick=function(t,e,i){jx(t),e.dispatchAction({type:"restore",from:this.uid})},yy("restore",t_),Ps({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var aE,rE="urn:schemas-microsoft-com:vml",sE="undefined"==typeof window?null:window,lE=!1,uE=sE&&sE.document;if(uE&&!z_.canvasSupported)try{!uE.namespaces.zrvml&&uE.namespaces.add("zrvml",rE),aE=function(t){return uE.createElement("