├── .DS_Store ├── LICENSE ├── README.md ├── index.html └── static ├── .DS_Store ├── css ├── bootstrap.min.css ├── github-dark-dimmed.min.css └── style.css ├── font-awesome ├── css │ └── font-awesome.min.css └── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── images ├── avatar.png ├── chatgpt.png ├── favicon.ico └── reward.png └── js ├── bootstrap.min.js ├── custom.js ├── highlight.min.js ├── html2canvas.min.js ├── jquery-2.1.1.js ├── layer ├── layer.js ├── mobile │ ├── layer.js │ └── need │ │ └── layer.css └── skin │ └── default │ ├── icon-ext.png │ ├── icon.png │ ├── layer.css │ ├── loading-0.gif │ ├── loading-1.gif │ └── loading-2.gif ├── marked.min.js ├── utils.js └── web-storage-cache.min.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/.DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | - [OPEN AI 平台背景想法](#open-ai-%E5%B9%B3%E5%8F%B0%E8%83%8C%E6%99%AF%E6%83%B3%E6%B3%95) 3 | - [OPEN AI平台初衷](#open-ai%E5%B9%B3%E5%8F%B0%E5%88%9D%E8%A1%B7) 4 | - [OPEN AI平台能做什么](#open-ai%E5%B9%B3%E5%8F%B0%E8%83%BD%E5%81%9A%E4%BB%80%E4%B9%88) 5 | - [OPEN AI 目标](#open-ai-%E7%9B%AE%E6%A0%87) 6 | - [OPEN AI 开发者入口](#open-ai-%E5%BC%80%E5%8F%91%E8%80%85%E5%85%A5%E5%8F%A3) 7 | - [OPEN AI 发展历程来龙去脉](#open-ai-%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B%E6%9D%A5%E9%BE%99%E5%8E%BB%E8%84%89) 8 | - [OPEN AI 平台订阅与更新](#open-ai-%E5%B9%B3%E5%8F%B0%E8%AE%A2%E9%98%85%E4%B8%8E%E6%9B%B4%E6%96%B0) 9 | - [OPEN AI ChatGPT账号](#open-ai-chatgpt%E8%B4%A6%E5%8F%B7) 10 | 11 | 12 | 13 | 14 | 15 | ##### OPEN AI 平台背景想法 16 | 17 | 相信还是有很多伙伴不了解**「OPEN AI」**平台 ,这里在细说一下 18 | 19 | 大家知道**「ChatGPT」**, 或者**「百度文心一言」** 阿里**「通意千问」** 包括各种其他的AI 聊天或者画图,等应用层出不穷。 20 | 21 | 但是我们要自己实现自己 语言大模型,或者说是人工智能应用能不能。 22 | 23 | **「有实力当然可以!!!!!」**。 24 | 25 | > ❝ 26 | > 27 | > 但是更多时候我们不需要自己造一个平台,一个ChatGPT 平台 28 | > 29 | > ❞ 30 | 31 | 我们只需要站在巨人肩膀上,做自己应用想做事情就可以了。基于人家开放的接口,和算力 在自己的程序或者任何**「APP」** 接入智能AI 应用,从而实现自己的**「,私人AI」** 32 | 33 | 基于开发接口,这就是OPEN AI。开发的背景和初衷。 34 | 35 | 当然很多人也了解,**「ChatGpt」**如何对接接口啊,或者其他的AI平台如何对接。但是更多人是不了解,不知道怎么对接到自己程序。又想使用 ChatGPT的。 36 | 37 | 在加上国内一些原因,更加加距了此类平台使用限制,所以 **「OPEN AI」** 做了统一的底层接入,实现了**「基于接口的上层应用」**. 38 | 39 | 你只需要关心你的具体业务逻辑实现就可以了,像对接普通接口一样可以轻松对接基于OPEN AI平台,提供统一标准接口规范。 40 | 41 | 甚至你压根不了解任何ChatGPT 方面技术和应用,都可以。 42 | 43 | 44 | ##### OPEN AI平台初衷 45 | 46 | 现在「ChatGPT」 提供了「api」接口 可以让我自己对接去实现我们自己想要gpt应用,但是由于一些原因,国内也不开放接口,所以我就1:1 自己对接了官方所有接口。 47 | 48 | AI爆炸时代。你不用AI,别人就会用AI,当别人用AI,为自己给工作生活赋能时候。生活自在,工作高效,AI正在潜移默化改变我们生活 49 | 50 | 基于[「OPEN AI」](http://openai.soboys.cn/login "「OPEN AI」")平台 轻松让AI 为你的生活赋能. 51 | 52 | 总之我现在生活已经离不开AI,帮助了。 53 | 54 | 不管是工作上问题,生活上有问题。 55 | 56 | 我的第一方式,不在是去百度,谷歌搜索。而是先问AI,然后才会去谷歌和百度。 57 | 58 | 基于我自己受益与「AI和chatgpt」。所以我想让更多人,能够免费加入去使用,开发了这个一个「OPEN AI」 平台。 59 | 60 | 61 | 62 | 63 | ##### OPEN AI平台能做什么 64 | 你一定很好奇什么是 [「OPEN AI」](http://openai.soboys.cn/login "「OPEN AI」")快速开发平台」 顾名思义,开放的OPEN AI平台。基于这个平台你的上层应用,如 「APP,小程序,H5,WEB」,「公众号」,任何一切终端都可以轻松接入,AI智能应用。 65 | 66 | 基于我们OPEN AI 平台可以轻松实现AI应用,对话,画图,各种细分领域场景人工智能。 67 | 68 | 69 | 70 | ##### OPEN AI 目标 71 | 72 | ❝ 73 | 74 | ALL OPEN AI 一切基于AI,  插件互联 75 | 76 | ❞ 77 | 78 | 整合出现的所有AI,接口。提供统一标准的调用API, 基于我们 OPEN AI平台,你可以在需要AI 程序应用的任何地方去掉用,实现自己的,ChatGPT,AI画图等领域应用。 79 | 80 | 81 | ##### OPEN AI 开发者入口 82 | 83 | [开发者后台](http://openai.soboys.cn/login "开发者后台") 84 | ![](https://images.soboys.cn/202305281746825.png) 85 | 86 | [接入案例在线演示](http://openchat.soboys.cn/ "接入案例在线演示") 87 | ![](https://images.soboys.cn/202305281406901.png) 88 | ![](https://images.soboys.cn/202305281407584.png) 89 | 90 | 91 | [接口文档](https://www.showdoc.com.cn/2275034687382811 "接口文档") 92 | 93 | ![](https://images.soboys.cn/202305281410303.png) 94 | 95 | [开源项目案例地址](https://github.com/coder-amiao "开源项目案例地址") 96 | 97 | 98 | ##### OPEN AI 发展历程来龙去脉 99 | 100 | [玩转AI与ChatGPT工作学习创作](https://mp.weixin.qq.com/mp/homepage?__biz=Mzg4OTkwNjc2MQ==&hid=1&sn=278d93838867a8c6fe2f52643011c90c "玩转AI与ChatGPT工作学习创作") 101 | 102 | ![](https://images.soboys.cn/202305281359337.png) 103 | 104 | ##### OPEN AI 平台订阅与更新 105 | 106 | 没有特殊情况 107 | 1周左右小版本,半个月左右大版本 108 | 关注公众号程序员三时 了解最新版本动态,平台动态第一时间更新至公众号 109 | 110 | ![](https://images.soboys.cn/202305280215652.jpg) 111 | 112 | 开发计划 113 | 114 | 1. 支持三方应用接入如微信QQ飞书钉钉等 115 | 2. 支持联网,和必应GPT4搜索 116 | 3. 支持官方插件 117 | 4. 支持开发者开发插件 118 | 5. 官方PC聊天应用支持 119 | 6. 更多开放想法 120 | 121 | 需求和bug修复 122 | 123 | 1. 有使用问题先看接口文档 124 | 2. 群聊讨论或许他人遇到或者已经解决 125 | 3. 群聊反馈我看到消息会第一时间修复 126 | 4. 或者在github开源案例项目提issues 127 | 128 | 129 | ##### OPEN AI ChatGPT账号 130 | 需要GPT成品账号和4单独体验的可以私聊我 131 | 其他想法合作也可以私聊我,其他项目都可以 132 | 133 | 134 | 135 | 136 | 137 | 138 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ChatGPT-OPEN AI 13 | 14 | 15 |
16 |
17 |
18 |
19 |

OPEN AI开放平台

20 |
21 |

22 |

23 | 应用接入 24 |

25 | 26 | 会话状态 27 | 28 | 29 |

30 |
31 | 34 |
35 |
36 |
37 |
38 |
39 | 42 | 74 |
75 |
76 |
77 |
78 | 79 |
80 |
81 | 82 |
83 |
84 |
85 |
86 |
87 | 88 |
89 | 90 |
91 |
92 |
93 | 102 |
103 |
104 | 105 |
106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /static/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/.DS_Store -------------------------------------------------------------------------------- /static/css/github-dark-dimmed.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! 2 | Theme: GitHub Dark Dimmed 3 | Description: Dark dimmed theme as seen on github.com 4 | Author: github.com 5 | Maintainer: @Hirse 6 | Updated: 2021-05-15 7 | 8 | Colors taken from GitHub's CSS 9 | */.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b} -------------------------------------------------------------------------------- /static/css/style.css: -------------------------------------------------------------------------------- 1 | :root[bg-theme='light'] { 2 | --bg-color: white; 3 | } 4 | 5 | :root[bg-theme='gray'] { 6 | --bg-color: #42424670; 7 | } 8 | 9 | :root[bg-theme='light-red'] { 10 | --bg-color: #eda8a8; 11 | } 12 | 13 | :root[bg-theme='light-blue'] { 14 | --bg-color: #55609a; 15 | } 16 | 17 | :root[bg-theme='light-purple'] { 18 | --bg-color: #c09ff9; 19 | } 20 | 21 | :root[bg-theme='light-green'] { 22 | --bg-color: #91ecd1; 23 | } 24 | 25 | :root[bg-theme='light-yellow'] { 26 | --bg-color: #e9e097; 27 | } 28 | 29 | body { 30 | background-color: var(--bg-color); 31 | } 32 | 33 | @media screen and (max-width: 768px){ 34 | .container { 35 | width: 100% !important; 36 | } 37 | .answer .others .common .settings-common span{ 38 | font-size: 85%; 39 | } 40 | .foot p:first-child{ 41 | font-size: 14px !important; 42 | } 43 | .foot p a{ 44 | font-size: 13px !important; 45 | } 46 | } 47 | 48 | @media screen and (min-width: 1200px) { 49 | .container { 50 | width: 970px !important; 51 | } 52 | } 53 | 54 | 55 | @media screen and (min-width: 768px) { 56 | #chatWindow::-webkit-scrollbar { 57 | width: 3px; 58 | } 59 | 60 | #chatWindow::-webkit-scrollbar-track { 61 | background-color: #f1f1f1; 62 | } 63 | 64 | #chatWindow::-webkit-scrollbar-thumb { 65 | background-color: #888; 66 | border-radius: 4px; 67 | } 68 | } 69 | 70 | *{ 71 | margin: 0; 72 | padding: 0; 73 | } 74 | 75 | html,body{ 76 | height: 100%; 77 | width: 100%; 78 | } 79 | 80 | select,input{ 81 | border-color: #1ab394 !important; 82 | opacity: .8; 83 | } 84 | 85 | pre{ 86 | color: #adbac7 !important; 87 | background: #2b2a2a !important; 88 | } 89 | 90 | 91 | .title{ 92 | width: 100%; 93 | } 94 | .title h2{ 95 | margin-bottom: 20px; 96 | color: #4aa593; 97 | } 98 | 99 | .answer{ 100 | width: 100%; 101 | position: relative; 102 | height: 75vh; 103 | } 104 | 105 | .answer .tips{ 106 | width: 100%; 107 | display: flex; 108 | flex-direction: column; 109 | justify-content: center; 110 | align-items: center; 111 | } 112 | 113 | .answer .tips h4{ 114 | color:red; 115 | } 116 | 117 | .answer .tips img{ 118 | margin-top: 30px; 119 | border:1px solid #7eecd6; 120 | box-shadow: 0px 1px 10px 0px #7defd8; 121 | border-radius: 10px; 122 | width: 200px; 123 | } 124 | 125 | .answer .function{ 126 | padding: 0 15px; 127 | width: 100%; 128 | position: absolute; 129 | bottom: 0px; 130 | } 131 | .answer .others{ 132 | display: flex; 133 | justify-content:space-between; 134 | align-items: center; 135 | padding: 0 15px; 136 | height: 30px; 137 | margin-bottom: 10px; 138 | } 139 | 140 | .answer .others .left,.right{ 141 | display: flex; 142 | } 143 | 144 | .answer .others .common{ 145 | width: 30px; 146 | height: 30px; 147 | display: flex; 148 | } 149 | 150 | .answer .others .common .settings-common{ 151 | display: flex; 152 | justify-content: space-between; 153 | align-items: center; 154 | padding: 10px 15px; 155 | background-color: #fff; 156 | border-bottom: 1px solid #ddd; 157 | } 158 | 159 | .answer .others .common .settings-common:hover{ 160 | background-color: rgba(148,163,184,.2); 161 | } 162 | 163 | .answer .others .common .settings-common:last-child{ 164 | border-bottom: 0; 165 | } 166 | 167 | .answer .others .common .settings-common .ipt-common{ 168 | width: 60%; 169 | } 170 | 171 | .answer .others .common .settings-common span{ 172 | color: #1ab394; 173 | cursor: default; 174 | } 175 | .answer .others .common .settings-common a{ 176 | font-size: 14px; 177 | color: #1ab394; 178 | cursor: pointer; 179 | text-decoration: none; 180 | } 181 | 182 | /* 按钮样式 */ 183 | .chck-btn{ 184 | display: flex; 185 | justify-content: center; 186 | width: 60px; 187 | height: 34px; 188 | } 189 | 190 | /* Hide the input */ 191 | input[type="checkbox"] { 192 | position: absolute; 193 | opacity: 0; 194 | z-index: -1; 195 | } 196 | 197 | .check-trail { 198 | display: flex; 199 | align-items: center; 200 | width: 100%; 201 | height: 100%; 202 | background: rgba(148,163,184,.4); 203 | border-radius: 15px; 204 | transition: all 0.5s ease; 205 | cursor: pointer; 206 | } 207 | 208 | .check-handler { 209 | display: flex; 210 | justify-content: center; 211 | align-items: center; 212 | width: 34px; 213 | height: 34px; 214 | background: rgb(148 163 184 / 85%); 215 | border-radius: 50%; 216 | transition: all 0.5s ease; 217 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.3); 218 | } 219 | 220 | .check-handler:before { 221 | content: "×"; 222 | color: white; 223 | font-weight: bold; 224 | } 225 | 226 | input[type="checkbox"]:checked + .check-trail { 227 | background: #1ab394a3; 228 | } 229 | input[type="checkbox"]:checked + .check-trail .check-handler { 230 | margin-left: 26px; 231 | background: #1ab394; 232 | } 233 | input[type="checkbox"]:checked + .check-trail .check-handler::before { 234 | content: "✔"; 235 | } 236 | 237 | 238 | .answer .others .right .screenshot{ 239 | margin-right: 10px; 240 | } 241 | 242 | .answer .others .icon-style{ 243 | width:30px; 244 | height: 30px; 245 | line-height: 30px; 246 | text-align: center; 247 | color: #1ab394; 248 | cursor: pointer; 249 | } 250 | 251 | .answer .others .icon-style:hover{ 252 | background-color: rgba(26, 179, 148,.1); 253 | } 254 | 255 | .answer .ipt{ 256 | display:flex; 257 | align-items: center; 258 | padding-right: 15px; 259 | border-radius: 10px; 260 | height: 50px; 261 | border: 1px solid rgba(26, 179, 148, 0.8); 262 | box-shadow: 0px 0px 10px 0px rgba(26, 179, 148, 0.2); 263 | } 264 | .answer .ipt textarea { 265 | resize: none; 266 | overflow-y: auto; 267 | border: none; 268 | box-shadow:none; 269 | } 270 | .answer .ipt textarea:focus{ 271 | border: none !important; 272 | box-shadow: none !important; 273 | } 274 | 275 | .answer #chatWindow { 276 | max-height: calc(75vh - 100px); 277 | height:auto; 278 | overflow-y: auto; 279 | } 280 | 281 | .message-bubble { 282 | padding: 10px; 283 | margin: 5px; 284 | display: flex; 285 | align-items: flex-start; 286 | border-bottom: 1px dashed #e7eaec; 287 | } 288 | 289 | .message-bubble .message-text{ 290 | font-size: 18px; 291 | margin-left:15px; 292 | word-break: break-all; 293 | } 294 | 295 | .message-bubble .message-text p{ 296 | white-space: pre-wrap; 297 | } 298 | 299 | .message-bubble .response ol,ul{ 300 | padding-left: 2em; 301 | } 302 | 303 | /* 错误信息样式 */ 304 | .message-bubble .message-text p.error{ 305 | color:red; 306 | height:auto; 307 | display: block; 308 | white-space: normal; 309 | word-break: break-all; 310 | } 311 | 312 | .message-bubble .chat-icon { 313 | width: 30px; 314 | height: 30px; 315 | border-radius: 3px; 316 | } 317 | 318 | .ai-pic{ 319 | width: 100%; 320 | height: 100%; 321 | border-radius: 3px; 322 | } 323 | 324 | .message-bubble .response .loading-icon{ 325 | color: #1ab394; 326 | } 327 | 328 | .answer #chatBtn{ 329 | background-color: #1ab394; 330 | border-color: #1ab394; 331 | } 332 | 333 | .foot p:first-child{ 334 | margin-bottom: 10px; 335 | opacity: .9; 336 | } 337 | 338 | .foot p:nth-child(2){ 339 | margin-bottom: 0; 340 | } 341 | 342 | .foot p a{ 343 | margin-right: 10px; 344 | font-weight: 400; 345 | font-size: 14px; 346 | color:#1ab394; 347 | text-decoration:none; 348 | } 349 | -------------------------------------------------------------------------------- /static/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} 5 | -------------------------------------------------------------------------------- /static/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/avatar.png -------------------------------------------------------------------------------- /static/images/chatgpt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/chatgpt.png -------------------------------------------------------------------------------- /static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/favicon.ico -------------------------------------------------------------------------------- /static/images/reward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/images/reward.png -------------------------------------------------------------------------------- /static/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); -------------------------------------------------------------------------------- /static/js/custom.js: -------------------------------------------------------------------------------- 1 | // 功能 2 | 3 | 4 | $(document).ready(function() { 5 | 6 | var chatBtn = $('#chatBtn'); 7 | var chatInput = $('#chatInput'); 8 | var chatWindow = $('#chatWindow'); 9 | 10 | var ws = null; 11 | var wsCache = new WebStorageCache(); 12 | 13 | //用户回话ID 14 | var replyId = localStorage.getItem('replyId'); 15 | if(replyId==null){ 16 | replyId=generateUUID(); 17 | localStorage.setItem("replyId",replyId); 18 | } 19 | 20 | //模型 1 gpt3, 4 gpt4 2 画图 21 | var model=localStorage.getItem('model'); 22 | //接口套餐标识 23 | var identification=""; 24 | defaultSelModel(model); 25 | 26 | //连续对话 27 | var continuousDialogue = localStorage.getItem('continuousDialogue'); 28 | showDelfualtContinuousDialogue(); 29 | 30 | //是否存储回话记录 31 | var messages= saveHistoryMsg(); 32 | var archiveSession= localStorage.getItem('archiveSession'); 33 | showDelfualtArchiveSession(); 34 | loadHistoryMsg(); 35 | 36 | //token 37 | var token=wsCache.get('token'); 38 | 39 | var params={}; 40 | var wsApi='ws://api-openai.dtgarden.com'; //ws://api-openai.dtgarden.com //127.0.0.1:8080 41 | var api='http://api-openai.dtgarden.com'; 42 | var roloeCode='gpt'; 43 | var appId=localStorage.getItem('appId'); 44 | var secret=localStorage.getItem('secret'); 45 | defaultAccount() 46 | 47 | //判断当前浏览器是否支持WebSocket 48 | if ('WebSocket' in window) { 49 | 50 | 51 | //授权 52 | if(token==null){ 53 | getToken(); 54 | } 55 | 56 | params = { 57 | appId, 58 | token, 59 | model, 60 | roloeCode, 61 | continuousDialogue 62 | 63 | }; 64 | 65 | let wsUrl=wsApi+'/ws/question/'+replyId+'?'+buildUrlParams(params) 66 | console.log(wsUrl) 67 | ws = new WebSocket(wsUrl); 68 | let timerId; 69 | 70 | //连接成功建立的回调方法 71 | ws.onopen = function () { 72 | console.log('WebSocket 连接已打开'); 73 | $("#chatStatus span").text("在线") 74 | timerId = setTimeout(function() { 75 | ws.send('ping'); 76 | }, 5000); 77 | }; 78 | 79 | //接收到消息的回调方法 80 | ws.onmessage = function (event) { 81 | 82 | // 心跳机制保存连接 83 | if (event.data === 'ping') { 84 | ws.send('pong'); 85 | } else if (event.data === 'pong') { 86 | console.log("💓") 87 | clearTimeout(timerId); 88 | timerId = setTimeout(function() { 89 | ws.send('ping'); 90 | }, 5000); 91 | }else{ 92 | analysisMsg(event) 93 | } 94 | }; 95 | 96 | //连接关闭的回调方法 97 | ws.onclose = function () { 98 | alert("点击应用接入绑定自己OPEN AI账号在线体验。或者通过开放API集成到自己的APP") 99 | console.log('WebSocket 连接已关闭'); 100 | $("#chatStatus span").text("离线") 101 | }; 102 | 103 | //连接发生错误的回调方法 104 | ws.onerror = function () { 105 | console.log("WebSocket连接发生错误") 106 | $("#chatStatus span").text("离线") 107 | alert("会话连接异常已断开,请刷新重新连接") 108 | 109 | }; 110 | 111 | //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接, 112 | //防止连接还没断开就关闭窗口,server端会抛异常。 113 | window.onbeforeunload = function () { 114 | closeWebSocket(); 115 | } 116 | 117 | } 118 | else { 119 | alert('当前浏览器 Not support websocket') 120 | } 121 | 122 | function reloadWebsocket(params){ 123 | 124 | let wsUrl=wsApi+'/ws/question/'+replyId+'?'+buildUrlParams(params) 125 | console.log(wsUrl) 126 | ws = new WebSocket(wsUrl); 127 | 128 | 129 | 130 | //连接成功建立的回调方法 131 | ws.onopen = function () { 132 | console.log('WebSocket 连接已打开'); 133 | $("#chatStatus span").text("在线") 134 | timerId = setTimeout(function() { 135 | ws.send('ping'); 136 | }, 5000); 137 | }; 138 | 139 | //接收到消息的回调方法 140 | ws.onmessage = function (event) { 141 | 142 | // 心跳机制保存连接 143 | if (event.data === 'ping') { 144 | ws.send('pong'); 145 | } else if (event.data === 'pong') { 146 | console.log("💓") 147 | clearTimeout(timerId); 148 | timerId = setTimeout(function() { 149 | ws.send('ping'); 150 | }, 5000); 151 | }else{ 152 | analysisMsg(event) 153 | } 154 | }; 155 | 156 | //连接关闭的回调方法 157 | ws.onclose = function () { 158 | console.log('WebSocket 连接已关闭'); 159 | $("#chatStatus span").text("离线") 160 | }; 161 | 162 | //连接发生错误的回调方法 163 | ws.onerror = function () { 164 | console.log("WebSocket连接发生错误") 165 | $("#chatStatus span").text("离线") 166 | alert("会话连接异常已断开,请刷新重新连接") 167 | }; 168 | } 169 | 170 | 171 | 172 | //获取token 173 | function getToken(){ 174 | let interface='/user/token'; 175 | let param={ 176 | appId, 177 | secret: CryptoJS.MD5(appId+secret).toString() 178 | } 179 | let url=api+interface+'?'+buildUrlParams(param) 180 | 181 | $.ajax({ 182 | url: url, 183 | type: 'GET', 184 | async: false, // 将async设置为false即可实现同步请求 185 | success: function(data) { 186 | if(data.success){ 187 | // 缓存字符串'wqteam' 到 'username' 中, 超时时间100秒 188 | token=data.data.token 189 | wsCache.set('token', data.data.token, {exp : data.data.expiration}); 190 | }else{ 191 | alert(data.message +"OPEN AI 账号无效授权失败请登录 http://openai.soboys.cn/login") 192 | return ; 193 | } 194 | }, 195 | error: function(xhr, status, error) { 196 | console.error(error); 197 | return ; 198 | } 199 | 200 | }); 201 | 202 | } 203 | 204 | 205 | //关闭WebSocket连接 206 | function closeWebSocket() { 207 | ws.close(); 208 | console.log("关闭websocket连接") 209 | } 210 | 211 | 212 | 213 | 214 | // marked.js设置语法高亮 215 | marked.setOptions({ 216 | highlight: function (code, language) { 217 | const validLanguage = hljs.getLanguage(language) ? language : 'javascript'; 218 | return hljs.highlight(code, { language: validLanguage }).value; 219 | }, 220 | }); 221 | 222 | // 转义html代码(对应字符转移为html实体),防止在浏览器渲染 223 | function escapeHtml(html) { 224 | let text = document.createTextNode(html); 225 | let div = document.createElement('div'); 226 | div.appendChild(text); 227 | return div.innerHTML; 228 | } 229 | 230 | // 添加请求消息到窗口 231 | function addRequestMessage(message) { 232 | 233 | chatInput.val(''); 234 | let escapedMessage = escapeHtml(message); // 对请求message进行转义,防止输入的是html而被浏览器渲染https://images.soboys.cn/202305252344275.png 235 | let requestMessageElement = $('
' + escapedMessage + '
'); 236 | chatWindow.append(requestMessageElement); 237 | let responseMessageElement = $('
'); 238 | chatWindow.append(responseMessageElement); 239 | chatWindow.scrollTop(chatWindow.prop('scrollHeight')); 240 | } 241 | 242 | 243 | //添加添加请求消息和等待到消息窗口适合画图 244 | function addRequestLoadMessage(message) { 245 | 246 | chatInput.val(''); 247 | let escapedMessage = escapeHtml(message); // 对请求message进行转义,防止输入的是html而被浏览器渲染https://images.soboys.cn/202305252344275.png 248 | let requestMessageElement = $('
' + escapedMessage + '
'); 249 | chatWindow.append(requestMessageElement); 250 | 251 | //画图加入额外的提示等待信息 252 | addResponseMessage("AI画图可能存在较慢情况请耐心等待2-3分钟切勿刷新重复点击") 253 | 254 | let responseMessageElement = $('
'); 255 | chatWindow.append(responseMessageElement); 256 | chatWindow.scrollTop(chatWindow.prop('scrollHeight')); 257 | } 258 | 259 | 260 | // 添加响应消息到窗口,流式响应此方法会执行多次 261 | function addResponseMessage(message) { 262 | 263 | let lastResponseElement = $(".message-bubble .response").last(); 264 | lastResponseElement.empty(); 265 | let escapedMessage; 266 | // 处理流式消息中的代码块 267 | let codeMarkCount = 0; 268 | let index = message.indexOf('```'); 269 | while (index !== -1) { 270 | codeMarkCount ++ ; 271 | index = message.indexOf('```', index + 3); 272 | } 273 | if(codeMarkCount % 2 == 1 ){ // 有未闭合的 code 274 | escapedMessage = marked.parse(message + '\n\n```'); 275 | }else if(codeMarkCount % 2 == 0 && codeMarkCount != 0){ 276 | escapedMessage = marked.parse(message); // 响应消息markdown实时转换为html 277 | }else if(codeMarkCount == 0){ 278 | // 输出的代码有可能不是markdown格式,所以只要没有markdown代码块的内容,都用escapeHtml处理后再转换 279 | escapedMessage = marked.parse(escapeHtml(message)); 280 | } 281 | lastResponseElement.append(escapedMessage); 282 | chatWindow.scrollTop(chatWindow.prop('scrollHeight')); 283 | } 284 | 285 | 286 | //添加响应图片 287 | function addResponsPic(message){ 288 | let lastResponseElement = $(".message-bubble .response").last(); 289 | lastResponseElement.empty(); 290 | lastResponseElement.append(message); 291 | chatWindow.scrollTop(chatWindow.prop('scrollHeight')); 292 | 293 | 294 | 295 | } 296 | 297 | // 添加失败信息到窗口 298 | function addFailMessage(message) { 299 | let lastResponseElement = $(".message-bubble .response").last(); 300 | lastResponseElement.empty(); 301 | lastResponseElement.append('

' + message + '

'); 302 | chatWindow.scrollTop(chatWindow.prop('scrollHeight')); 303 | messages.pop() // 失败就让用户输入信息从数组删除 304 | } 305 | 306 | //发送消息 307 | function send(message) { 308 | ws.send(message); 309 | } 310 | 311 | //画图 312 | function paint(message){ 313 | let interface='/pic/GenImage'; 314 | let param={ 315 | desc:message, 316 | model 317 | } 318 | let headers= { 319 | "appId": appId, 320 | "token": token 321 | } 322 | 323 | let url=api+interface; 324 | $.ajax({ 325 | url: url, 326 | type: 'POST', 327 | contentType: 'application/json', 328 | async: true, // 将async设置为false即可实现同步请求 329 | data: JSON.stringify(param), 330 | headers, 331 | success: function(data) { 332 | let pic=""; 333 | if(data.success){ 334 | if(model==2){ 335 | pic=data.data.image.midjourneyImgEntry.image_url 336 | }else{ 337 | pic=data.data.image.gptImgEntry.data[0].url 338 | } 339 | 340 | let html='

' 341 | addResponsPic(html); 342 | chatInput.val(''); 343 | // 收到回复,让按钮可点击 344 | chatBtn.attr('disabled',false) 345 | // 重新绑定键盘事件 346 | chatInput.on("keydown",handleEnter); 347 | 348 | messages.push({"role": "assistant", "content": html,"model":2}); 349 | // 判断是否本地存储历史会话 350 | if(archiveSession==1){ 351 | localStorage.setItem("session",JSON.stringify(messages)); 352 | } 353 | }else{ 354 | chatInput.val(''); 355 | // 收到回复,让按钮可点击 356 | chatBtn.attr('disabled',false) 357 | // 重新绑定键盘事件 358 | chatInput.on("keydown",handleEnter); 359 | addResponseMessage(data.message+"点击应用接入绑定OPEN AI账号 每天获取免费体验额度") 360 | 361 | return ; 362 | } 363 | }, 364 | error: function(xhr, status, error) { 365 | console.error(error); 366 | return ; 367 | } 368 | 369 | }); 370 | } 371 | 372 | 373 | 374 | let text=''; 375 | function analysisMsg(message){ 376 | 377 | let json_data = JSON.parse(message.data) 378 | 379 | if(json_data.code=='OK'){ 380 | if (json_data.content == "[DONE]") { 381 | chatInput.val(''); 382 | // 收到回复,让按钮可点击 383 | chatBtn.attr('disabled',false) 384 | // 重新绑定键盘事件 385 | chatInput.on("keydown",handleEnter); 386 | messages.push({"role": "assistant", "content": text}); 387 | // 判断是否本地存储历史会话 388 | if(archiveSession==1){ 389 | localStorage.setItem("session",JSON.stringify(messages)); 390 | } 391 | text = ''; 392 | return; 393 | } 394 | if (json_data.content == null || json_data.content == 'null') { 395 | return; 396 | } 397 | text = text + json_data.content; 398 | addResponseMessage(text); 399 | 400 | }else{ 401 | //鉴权过期重新获取token 402 | if(json_data.code=='UNAUTHORIZED'){ 403 | console.log(json_data.message) 404 | getToken(); 405 | params = { 406 | appId, 407 | continuousDialogue, 408 | model, 409 | token 410 | }; 411 | $("#chatStatus span").text("离线") 412 | alert("会话离线请刷新连接") 413 | //reloadWebsocket(params) 414 | return; 415 | }else if(json_data.code="ChatGptError"){ 416 | chatInput.val(''); 417 | // 收到回复,让按钮可点击 418 | chatBtn.attr('disabled',false) 419 | // 重新绑定键盘事件 420 | chatInput.on("keydown",handleEnter); 421 | addResponseMessage(json_data.content+"点击应用接入绑定OPEN AI账号 每天获取免费体验额度"); 422 | } 423 | } 424 | 425 | } 426 | 427 | // 处理用户输入 428 | chatBtn.click(function() { 429 | // 解绑键盘事件 430 | chatInput.off("keydown",handleEnter); 431 | 432 | // 保存api key与对话数据 433 | let data; 434 | 435 | 436 | let message = chatInput.val(); 437 | if (message.length == 0){ 438 | // 重新绑定键盘事件 439 | chatInput.on("keydown",handleEnter); 440 | return 441 | } 442 | 443 | addRequestMessage(message); 444 | // 将用户消息保存到数组 445 | messages.push({"role": "user", "content": message}) 446 | // 收到回复前让按钮不可点击 447 | chatBtn.attr('disabled',true) 448 | if(model=='2'||model=='3'){ 449 | alert("AI绘画可能会存在较慢情况请耐心2-3分钟不要重复点击和刷新") 450 | paint(message) 451 | }else{ 452 | send(message); 453 | } 454 | }); 455 | 456 | // Enter键盘事件 457 | function handleEnter(e){ 458 | if (e.keyCode==13){ 459 | chatBtn.click(); 460 | e.preventDefault(); //避免回车换行 461 | } 462 | } 463 | 464 | // 绑定Enter键盘事件 465 | chatInput.on("keydown",handleEnter); 466 | 467 | 468 | // 设置栏宽度自适应 469 | let width = $('.function .others').width(); 470 | $('.function .settings .dropdown-menu').css('width', width); 471 | 472 | $(window).resize(function() { 473 | width = $('.function .others').width(); 474 | $('.function .settings .dropdown-menu').css('width', width); 475 | }); 476 | 477 | 478 | //保存用户回话记录 479 | $('#chck-1').click(function() { 480 | if ($(this).prop('checked')) { 481 | // 开启状态的操作 482 | archiveSession=1; 483 | localStorage.setItem('archiveSession', archiveSession); 484 | if(messages.length != 0){ 485 | localStorage.setItem("session",JSON.stringify(messages)); 486 | } 487 | } else { 488 | // 关闭状态的操作 489 | archiveSession=0; 490 | localStorage.setItem('archiveSession', archiveSession); 491 | localStorage.removeItem("session"); 492 | } 493 | }); 494 | 495 | // 加载历史保存会话 496 | function loadHistoryMsg(){ 497 | if(archiveSession==1&&messages!=null&&messages!=''){ 498 | $.each(messages, function(index, item) { 499 | if (item.role === 'user') { 500 | addRequestMessage(item.content) 501 | } else if (item.role === 'assistant') { 502 | if(item.model!=null&&item.model!='undefind'){ 503 | addResponsPic(item.content) 504 | }else{ 505 | addResponseMessage(item.content) 506 | } 507 | } 508 | }); 509 | 510 | } 511 | 512 | } 513 | 514 | //模型选择按钮 515 | function defaultSelModel(value){ 516 | if(value!=1&&value!=2&value!=4&value!=3){ 517 | value=1; 518 | model=1; 519 | localStorage.setItem('model',model); 520 | 521 | } 522 | var all_options = document.getElementById("selModel").options; 523 | for (i=0; i
', 646 | btn: ['确认', '取消'], 647 | yes: function(index, elem){ 648 | // 点击确认后的回调函数 649 | appId = $('#appId').val().trim(); // 获取应用ID,去掉首尾空格 650 | secret = $('#appSecret').val().trim(); // 获取秘钥,去掉首尾空格 651 | wsCache.delete('token'); 652 | localStorage.clear(); 653 | 654 | localStorage.setItem('appId',appId); 655 | localStorage.setItem('secret',secret) 656 | window.location.reload(); 657 | // 在这里可以对输入内容进行验证和处理 658 | 659 | // 关闭弹窗 660 | layer.close(index); 661 | } 662 | }); 663 | 664 | }) 665 | // 初始化默认平台账号 666 | function defaultAccount(){ 667 | if(appId==null||appId==''||appId=='undefind'){ 668 | appId='20230609051455A001'; 669 | secret='K20c4e7741418be6cbd773416240492'; 670 | } 671 | } 672 | 673 | //保存用户消息 674 | function saveHistoryMsg(){ 675 | let messages=[]; 676 | const messagesList = JSON.parse(localStorage.getItem("session")); 677 | if(messagesList){ 678 | messages=messagesList 679 | } 680 | 681 | return messages; 682 | } 683 | 684 | }); -------------------------------------------------------------------------------- /static/js/layer/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer-v3.0.2 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */ 2 | ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.scripts,t=e[e.length-1],i=t.src;if(!t.getAttribute("merge"))return i.substring(0,i.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"]},r={v:"3.0.2",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):r.link("skin/"+e.extend),this):this},link:function(t,n,a){if(r.path){var o=i("head")[0],s=document.createElement("link");"string"==typeof n&&(a=n);var l=(a||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,i("#"+f)[0]||o.appendChild(s),"function"==typeof n&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(i("#"+f).css("width"))?n():setTimeout(u,100))}()}},ready:function(e){var t="skinlayercss",i="302";return a?layui.addcss("modules/layer/default/layer.css?v="+r.v+i,e,t):r.link("skin/default/layer.css?v="+r.v+i,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),r.ready(function(){document.body?t.creat():setTimeout(function(){t.creat()},50)})};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
'+(f?r.title[0]:r.title)+"
":"";return r.zIndex=s,t([r.shade?'
':"",'
'+(e&&2!=r.type?"":u)+'
'+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
'+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
'+e+"
"}():"")+(r.resize?'':"")+"
"],u,i('
')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]&&e.layero.addClass(l.anim[t.anim]).data("anim",!0)}},s.pt.auto=function(e){function t(e){e=s.find(e),e.height(f[1]-c-u-2*(0|parseFloat(e.css("padding"))))}var a=this,o=a.config,s=i("#"+l[0]+e);""===o.area[0]&&o.maxWidth>0&&(r.ie&&r.ie<8&&o.btn&&s.width(s.innerWidth()),s.outerWidth()>o.maxWidth&&s.width(o.maxWidth));var f=[s.innerWidth(),s.innerHeight()],c=s.find(l[1]).outerHeight()||0,u=s.find("."+l[6]).outerHeight()||0;switch(o.type){case 2:t("iframe");break;default:""===o.area[1]?o.fixed&&f[1]>=n.height()&&(f[1]=n.height(),t("."+l[5])):t("."+l[5])}return a},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("anim")&&t.addClass(a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),setTimeout(function(){f()},r.ie&&r.ie<10||!t.data("anim")?0:200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,n="";if(e>0)for(n=''+t[0].title+"";i"+t[i].title+"";return n}(),content:'
    '+function(){var e=t.length,i=1,n="";if(e>0)for(n='
  • '+(t[0].content||"no content")+"
  • ";i'+(t[i].content||"no content")+"";return n}()+"
",success:function(t){var a=t.find(".layui-layer-title").children(),o=t.find(".layui-layer-tabmain").children();a.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var n=i(this),a=n.index();n.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),o.eq(a).show().siblings().hide(),"function"==typeof e.change&&e.change(a)}),"function"==typeof n&&n(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){u.length<=1||(f.start=s.imgIndex-1,r.close(s.index),setTimeout(function(){r.photos(t,!0,e)},200))},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
'+(u.length>1?'':"")+'
'+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.jquery),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); -------------------------------------------------------------------------------- /static/js/layer/mobile/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */ 2 | ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'

'+(e?n.title[0]:n.title)+"

":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+"",2===t&&(e=''+n.btn[1]+""+e),'
'+e+"
"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='

'+(n.content||"")+"

"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
':"")+'
"+l+'
'+n.content+"
"+c+"
",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv { 240 | line-height: 22px; 241 | padding-top: 7px; 242 | margin-bottom: 20px; 243 | font-size: 14px 244 | } 245 | 246 | .layui-m-layerbtn { 247 | display: box; 248 | display: -moz-box; 249 | display: -webkit-box; 250 | width: 100%; 251 | height: 50px; 252 | line-height: 50px; 253 | font-size: 0; 254 | border-top: 1px solid #D0D0D0; 255 | background-color: #F2F2F2 256 | } 257 | 258 | .layui-m-layerbtn span { 259 | display: block; 260 | -moz-box-flex: 1; 261 | box-flex: 1; 262 | -webkit-box-flex: 1; 263 | font-size: 14px; 264 | cursor: pointer 265 | } 266 | 267 | .layui-m-layerbtn span[yes] { 268 | color: #40AFFE 269 | } 270 | 271 | .layui-m-layerbtn span[no] { 272 | border-right: 1px solid #D0D0D0; 273 | border-radius: 0 0 0 5px 274 | } 275 | 276 | .layui-m-layerbtn span:active { 277 | background-color: #F6F6F6 278 | } 279 | 280 | .layui-m-layerend { 281 | position: absolute; 282 | right: 7px; 283 | top: 10px; 284 | width: 30px; 285 | height: 30px; 286 | border: 0; 287 | font-weight: 400; 288 | background: 0 0; 289 | cursor: pointer; 290 | -webkit-appearance: none; 291 | font-size: 30px 292 | } 293 | 294 | .layui-m-layerend::after, 295 | .layui-m-layerend::before { 296 | position: absolute; 297 | left: 5px; 298 | top: 15px; 299 | content: ''; 300 | width: 18px; 301 | height: 1px; 302 | background-color: #999; 303 | transform: rotate(45deg); 304 | -webkit-transform: rotate(45deg); 305 | border-radius: 3px 306 | } 307 | 308 | .layui-m-layerend::after { 309 | transform: rotate(-45deg); 310 | -webkit-transform: rotate(-45deg) 311 | } 312 | 313 | body .layui-m-layer .layui-m-layer-footer { 314 | position: fixed; 315 | width: 95%; 316 | max-width: 100%; 317 | margin: 0 auto; 318 | left: 0; 319 | right: 0; 320 | bottom: 10px; 321 | background: 0 0 322 | } 323 | 324 | .layui-m-layer-footer .layui-m-layercont { 325 | padding: 20px; 326 | border-radius: 5px 5px 0 0; 327 | background-color: rgba(255, 255, 255, .8) 328 | } 329 | 330 | .layui-m-layer-footer .layui-m-layerbtn { 331 | display: block; 332 | height: auto; 333 | background: 0 0; 334 | border-top: none 335 | } 336 | 337 | .layui-m-layer-footer .layui-m-layerbtn span { 338 | background-color: rgba(255, 255, 255, .8) 339 | } 340 | 341 | .layui-m-layer-footer .layui-m-layerbtn span[no] { 342 | color: #FD482C; 343 | border-top: 1px solid #c2c2c2; 344 | border-radius: 0 0 5px 5px 345 | } 346 | 347 | .layui-m-layer-footer .layui-m-layerbtn span[yes] { 348 | margin-top: 10px; 349 | border-radius: 5px 350 | } 351 | 352 | body .layui-m-layer .layui-m-layer-msg { 353 | width: auto; 354 | max-width: 90%; 355 | margin: 0 auto; 356 | bottom: -150px; 357 | background-color: rgba(0, 0, 0, .7); 358 | color: #fff 359 | } 360 | 361 | .layui-m-layer-msg .layui-m-layercont { 362 | padding: 10px 20px 363 | } -------------------------------------------------------------------------------- /static/js/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /static/js/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/icon.png -------------------------------------------------------------------------------- /static/js/layer/skin/default/layer.css: -------------------------------------------------------------------------------- 1 | .layui-layer-imgbar, 2 | .layui-layer-imgtit a, 3 | .layui-layer-tab .layui-layer-title span, 4 | .layui-layer-title { 5 | text-overflow: ellipsis; 6 | white-space: nowrap 7 | } 8 | 9 | *html { 10 | background-image: url(about:blank); 11 | background-attachment: fixed 12 | } 13 | 14 | html #layuicss-skinlayercss { 15 | display: none; 16 | position: absolute; 17 | width: 1989px 18 | } 19 | 20 | .layui-layer, 21 | .layui-layer-shade { 22 | position: fixed; 23 | _position: absolute; 24 | pointer-events: auto 25 | } 26 | 27 | .layui-layer-shade { 28 | top: 0; 29 | left: 0; 30 | width: 100%; 31 | height: 100%; 32 | _height: expression(document.body.offsetHeight+"px") 33 | } 34 | 35 | .layui-layer { 36 | -webkit-overflow-scrolling: touch; 37 | top: 150px; 38 | left: 0; 39 | margin: 0; 40 | padding: 0; 41 | background-color: #fff; 42 | -webkit-background-clip: content; 43 | box-shadow: 1px 1px 50px rgba(0, 0, 0, .3) 44 | } 45 | 46 | .layui-layer-close { 47 | position: absolute 48 | } 49 | 50 | .layui-layer-content { 51 | position: relative 52 | } 53 | 54 | .layui-layer-border { 55 | border: 1px solid #B2B2B2; 56 | border: 1px solid rgba(0, 0, 0, .1); 57 | box-shadow: 1px 1px 5px rgba(0, 0, 0, .2) 58 | } 59 | 60 | .layui-layer-load { 61 | background: url(loading-1.gif) center center no-repeat #eee 62 | } 63 | 64 | .layui-layer-ico { 65 | background: url(icon.png) no-repeat 66 | } 67 | 68 | .layui-layer-btn a, 69 | .layui-layer-dialog .layui-layer-ico, 70 | .layui-layer-setwin a { 71 | display: inline-block; 72 | *display: inline; 73 | *zoom: 1; 74 | vertical-align: top 75 | } 76 | 77 | .layui-layer-move { 78 | display: none; 79 | position: fixed; 80 | *position: absolute; 81 | left: 0; 82 | top: 0; 83 | width: 100%; 84 | height: 100%; 85 | cursor: move; 86 | opacity: 0; 87 | filter: alpha(opacity=0); 88 | background-color: #fff; 89 | z-index: 2147483647 90 | } 91 | 92 | .layui-layer-resize { 93 | position: absolute; 94 | width: 15px; 95 | height: 15px; 96 | right: 0; 97 | bottom: 0; 98 | cursor: se-resize 99 | } 100 | 101 | .layui-layer { 102 | border-radius: 2px; 103 | -webkit-animation-fill-mode: both; 104 | animation-fill-mode: both; 105 | -webkit-animation-duration: .3s; 106 | animation-duration: .3s 107 | } 108 | 109 | @-webkit-keyframes layer-bounceIn { 110 | 0% { 111 | opacity: 0; 112 | -webkit-transform: scale(.5); 113 | transform: scale(.5) 114 | } 115 | 116 | 100% { 117 | opacity: 1; 118 | -webkit-transform: scale(1); 119 | transform: scale(1) 120 | } 121 | } 122 | 123 | @keyframes layer-bounceIn { 124 | 0% { 125 | opacity: 0; 126 | -webkit-transform: scale(.5); 127 | -ms-transform: scale(.5); 128 | transform: scale(.5) 129 | } 130 | 131 | 100% { 132 | opacity: 1; 133 | -webkit-transform: scale(1); 134 | -ms-transform: scale(1); 135 | transform: scale(1) 136 | } 137 | } 138 | 139 | .layer-anim { 140 | -webkit-animation-name: layer-bounceIn; 141 | animation-name: layer-bounceIn 142 | } 143 | 144 | @-webkit-keyframes layer-zoomInDown { 145 | 0% { 146 | opacity: 0; 147 | -webkit-transform: scale(.1) translateY(-2000px); 148 | transform: scale(.1) translateY(-2000px); 149 | -webkit-animation-timing-function: ease-in-out; 150 | animation-timing-function: ease-in-out 151 | } 152 | 153 | 60% { 154 | opacity: 1; 155 | -webkit-transform: scale(.475) translateY(60px); 156 | transform: scale(.475) translateY(60px); 157 | -webkit-animation-timing-function: ease-out; 158 | animation-timing-function: ease-out 159 | } 160 | } 161 | 162 | @keyframes layer-zoomInDown { 163 | 0% { 164 | opacity: 0; 165 | -webkit-transform: scale(.1) translateY(-2000px); 166 | -ms-transform: scale(.1) translateY(-2000px); 167 | transform: scale(.1) translateY(-2000px); 168 | -webkit-animation-timing-function: ease-in-out; 169 | animation-timing-function: ease-in-out 170 | } 171 | 172 | 60% { 173 | opacity: 1; 174 | -webkit-transform: scale(.475) translateY(60px); 175 | -ms-transform: scale(.475) translateY(60px); 176 | transform: scale(.475) translateY(60px); 177 | -webkit-animation-timing-function: ease-out; 178 | animation-timing-function: ease-out 179 | } 180 | } 181 | 182 | .layer-anim-01 { 183 | -webkit-animation-name: layer-zoomInDown; 184 | animation-name: layer-zoomInDown 185 | } 186 | 187 | @-webkit-keyframes layer-fadeInUpBig { 188 | 0% { 189 | opacity: 0; 190 | -webkit-transform: translateY(2000px); 191 | transform: translateY(2000px) 192 | } 193 | 194 | 100% { 195 | opacity: 1; 196 | -webkit-transform: translateY(0); 197 | transform: translateY(0) 198 | } 199 | } 200 | 201 | @keyframes layer-fadeInUpBig { 202 | 0% { 203 | opacity: 0; 204 | -webkit-transform: translateY(2000px); 205 | -ms-transform: translateY(2000px); 206 | transform: translateY(2000px) 207 | } 208 | 209 | 100% { 210 | opacity: 1; 211 | -webkit-transform: translateY(0); 212 | -ms-transform: translateY(0); 213 | transform: translateY(0) 214 | } 215 | } 216 | 217 | .layer-anim-02 { 218 | -webkit-animation-name: layer-fadeInUpBig; 219 | animation-name: layer-fadeInUpBig 220 | } 221 | 222 | @-webkit-keyframes layer-zoomInLeft { 223 | 0% { 224 | opacity: 0; 225 | -webkit-transform: scale(.1) translateX(-2000px); 226 | transform: scale(.1) translateX(-2000px); 227 | -webkit-animation-timing-function: ease-in-out; 228 | animation-timing-function: ease-in-out 229 | } 230 | 231 | 60% { 232 | opacity: 1; 233 | -webkit-transform: scale(.475) translateX(48px); 234 | transform: scale(.475) translateX(48px); 235 | -webkit-animation-timing-function: ease-out; 236 | animation-timing-function: ease-out 237 | } 238 | } 239 | 240 | @keyframes layer-zoomInLeft { 241 | 0% { 242 | opacity: 0; 243 | -webkit-transform: scale(.1) translateX(-2000px); 244 | -ms-transform: scale(.1) translateX(-2000px); 245 | transform: scale(.1) translateX(-2000px); 246 | -webkit-animation-timing-function: ease-in-out; 247 | animation-timing-function: ease-in-out 248 | } 249 | 250 | 60% { 251 | opacity: 1; 252 | -webkit-transform: scale(.475) translateX(48px); 253 | -ms-transform: scale(.475) translateX(48px); 254 | transform: scale(.475) translateX(48px); 255 | -webkit-animation-timing-function: ease-out; 256 | animation-timing-function: ease-out 257 | } 258 | } 259 | 260 | .layer-anim-03 { 261 | -webkit-animation-name: layer-zoomInLeft; 262 | animation-name: layer-zoomInLeft 263 | } 264 | 265 | @-webkit-keyframes layer-rollIn { 266 | 0% { 267 | opacity: 0; 268 | -webkit-transform: translateX(-100%) rotate(-120deg); 269 | transform: translateX(-100%) rotate(-120deg) 270 | } 271 | 272 | 100% { 273 | opacity: 1; 274 | -webkit-transform: translateX(0) rotate(0); 275 | transform: translateX(0) rotate(0) 276 | } 277 | } 278 | 279 | @keyframes layer-rollIn { 280 | 0% { 281 | opacity: 0; 282 | -webkit-transform: translateX(-100%) rotate(-120deg); 283 | -ms-transform: translateX(-100%) rotate(-120deg); 284 | transform: translateX(-100%) rotate(-120deg) 285 | } 286 | 287 | 100% { 288 | opacity: 1; 289 | -webkit-transform: translateX(0) rotate(0); 290 | -ms-transform: translateX(0) rotate(0); 291 | transform: translateX(0) rotate(0) 292 | } 293 | } 294 | 295 | .layer-anim-04 { 296 | -webkit-animation-name: layer-rollIn; 297 | animation-name: layer-rollIn 298 | } 299 | 300 | @keyframes layer-fadeIn { 301 | 0% { 302 | opacity: 0 303 | } 304 | 305 | 100% { 306 | opacity: 1 307 | } 308 | } 309 | 310 | .layer-anim-05 { 311 | -webkit-animation-name: layer-fadeIn; 312 | animation-name: layer-fadeIn 313 | } 314 | 315 | @-webkit-keyframes layer-shake { 316 | 317 | 0%, 318 | 100% { 319 | -webkit-transform: translateX(0); 320 | transform: translateX(0) 321 | } 322 | 323 | 10%, 324 | 30%, 325 | 50%, 326 | 70%, 327 | 90% { 328 | -webkit-transform: translateX(-10px); 329 | transform: translateX(-10px) 330 | } 331 | 332 | 20%, 333 | 40%, 334 | 60%, 335 | 80% { 336 | -webkit-transform: translateX(10px); 337 | transform: translateX(10px) 338 | } 339 | } 340 | 341 | @keyframes layer-shake { 342 | 343 | 0%, 344 | 100% { 345 | -webkit-transform: translateX(0); 346 | -ms-transform: translateX(0); 347 | transform: translateX(0) 348 | } 349 | 350 | 10%, 351 | 30%, 352 | 50%, 353 | 70%, 354 | 90% { 355 | -webkit-transform: translateX(-10px); 356 | -ms-transform: translateX(-10px); 357 | transform: translateX(-10px) 358 | } 359 | 360 | 20%, 361 | 40%, 362 | 60%, 363 | 80% { 364 | -webkit-transform: translateX(10px); 365 | -ms-transform: translateX(10px); 366 | transform: translateX(10px) 367 | } 368 | } 369 | 370 | .layer-anim-06 { 371 | -webkit-animation-name: layer-shake; 372 | animation-name: layer-shake 373 | } 374 | 375 | @-webkit-keyframes fadeIn { 376 | 0% { 377 | opacity: 0 378 | } 379 | 380 | 100% { 381 | opacity: 1 382 | } 383 | } 384 | 385 | .layui-layer-title { 386 | padding: 0 80px 0 20px; 387 | height: 42px; 388 | line-height: 42px; 389 | border-bottom: 1px solid #eee; 390 | font-size: 14px; 391 | color: #333; 392 | overflow: hidden; 393 | background-color: #F8F8F8; 394 | border-radius: 2px 2px 0 0 395 | } 396 | 397 | .layui-layer-setwin { 398 | position: absolute; 399 | right: 15px; 400 | *right: 0; 401 | top: 15px; 402 | font-size: 0; 403 | line-height: initial 404 | } 405 | 406 | .layui-layer-setwin a { 407 | position: relative; 408 | width: 16px; 409 | height: 16px; 410 | margin-left: 10px; 411 | font-size: 12px; 412 | _overflow: hidden 413 | } 414 | 415 | .layui-layer-setwin .layui-layer-min cite { 416 | position: absolute; 417 | width: 14px; 418 | height: 2px; 419 | left: 0; 420 | top: 50%; 421 | margin-top: -1px; 422 | background-color: #2E2D3C; 423 | cursor: pointer; 424 | _overflow: hidden 425 | } 426 | 427 | .layui-layer-setwin .layui-layer-min:hover cite { 428 | background-color: #2D93CA 429 | } 430 | 431 | .layui-layer-setwin .layui-layer-max { 432 | background-position: -32px -40px 433 | } 434 | 435 | .layui-layer-setwin .layui-layer-max:hover { 436 | background-position: -16px -40px 437 | } 438 | 439 | .layui-layer-setwin .layui-layer-maxmin { 440 | background-position: -65px -40px 441 | } 442 | 443 | .layui-layer-setwin .layui-layer-maxmin:hover { 444 | background-position: -49px -40px 445 | } 446 | 447 | .layui-layer-setwin .layui-layer-close1 { 448 | background-position: 1px -40px; 449 | cursor: pointer 450 | } 451 | 452 | .layui-layer-setwin .layui-layer-close1:hover { 453 | opacity: .7 454 | } 455 | 456 | .layui-layer-setwin .layui-layer-close2 { 457 | position: absolute; 458 | right: -28px; 459 | top: -28px; 460 | width: 30px; 461 | height: 30px; 462 | margin-left: 0; 463 | background-position: -149px -31px; 464 | *right: -18px; 465 | _display: none 466 | } 467 | 468 | .layui-layer-setwin .layui-layer-close2:hover { 469 | background-position: -180px -31px 470 | } 471 | 472 | .layui-layer-btn { 473 | text-align: right; 474 | padding: 0 10px 12px; 475 | pointer-events: auto; 476 | user-select: none; 477 | -webkit-user-select: none 478 | } 479 | 480 | .layui-layer-btn a { 481 | height: 28px; 482 | line-height: 28px; 483 | margin: 6px 6px 0; 484 | padding: 0 15px; 485 | border: 1px solid #dedede; 486 | background-color: #f1f1f1; 487 | color: #333; 488 | border-radius: 2px; 489 | font-weight: 400; 490 | cursor: pointer; 491 | text-decoration: none 492 | } 493 | 494 | .layui-layer-btn a:hover { 495 | opacity: .9; 496 | text-decoration: none 497 | } 498 | 499 | .layui-layer-btn a:active { 500 | opacity: .8 501 | } 502 | 503 | .layui-layer-btn .layui-layer-btn0 { 504 | /* border-color: #4898d5; 505 | background-color: #2e8ded; */ 506 | background-color: #1ab394; 507 | border-color: #1ab394; 508 | color: #fff 509 | } 510 | 511 | .layui-layer-btn-l { 512 | text-align: left 513 | } 514 | 515 | .layui-layer-btn-c { 516 | text-align: center 517 | } 518 | 519 | .layui-layer-dialog { 520 | min-width: 260px 521 | } 522 | 523 | .layui-layer-dialog .layui-layer-content { 524 | position: relative; 525 | padding: 20px; 526 | line-height: 24px; 527 | word-break: break-all; 528 | overflow: hidden; 529 | font-size: 14px; 530 | overflow-x: hidden; 531 | overflow-y: auto 532 | } 533 | 534 | .layui-layer-dialog .layui-layer-content .layui-layer-ico { 535 | position: absolute; 536 | top: 16px; 537 | left: 15px; 538 | _left: -40px; 539 | width: 30px; 540 | height: 30px 541 | } 542 | 543 | .layui-layer-ico1 { 544 | background-position: -30px 0 545 | } 546 | 547 | .layui-layer-ico2 { 548 | background-position: -60px 0 549 | } 550 | 551 | .layui-layer-ico3 { 552 | background-position: -90px 0 553 | } 554 | 555 | .layui-layer-ico4 { 556 | background-position: -120px 0 557 | } 558 | 559 | .layui-layer-ico5 { 560 | background-position: -150px 0 561 | } 562 | 563 | .layui-layer-ico6 { 564 | background-position: -180px 0 565 | } 566 | 567 | .layui-layer-rim { 568 | border: 6px solid #8D8D8D; 569 | border: 6px solid rgba(0, 0, 0, .3); 570 | border-radius: 5px; 571 | box-shadow: none 572 | } 573 | 574 | .layui-layer-msg { 575 | min-width: 180px; 576 | border: 1px solid #D3D4D3; 577 | box-shadow: none 578 | } 579 | 580 | .layui-layer-hui { 581 | min-width: 100px; 582 | background-color: #000; 583 | filter: alpha(opacity=60); 584 | background-color: rgba(0, 0, 0, .6); 585 | color: #fff; 586 | border: none 587 | } 588 | 589 | .layui-layer-hui .layui-layer-content { 590 | padding: 12px 25px; 591 | text-align: center 592 | } 593 | 594 | .layui-layer-dialog .layui-layer-padding { 595 | padding: 20px 20px 20px 55px; 596 | text-align: left 597 | } 598 | 599 | .layui-layer-page .layui-layer-content { 600 | position: relative; 601 | overflow: auto 602 | } 603 | 604 | .layui-layer-iframe .layui-layer-btn, 605 | .layui-layer-page .layui-layer-btn { 606 | padding-top: 10px 607 | } 608 | 609 | .layui-layer-nobg { 610 | background: 0 0 611 | } 612 | 613 | .layui-layer-iframe iframe { 614 | display: block; 615 | width: 100% 616 | } 617 | 618 | .layui-layer-loading { 619 | border-radius: 100%; 620 | background: 0 0; 621 | box-shadow: none; 622 | border: none 623 | } 624 | 625 | .layui-layer-loading .layui-layer-content { 626 | width: 60px; 627 | height: 24px; 628 | background: url(loading-0.gif) no-repeat 629 | } 630 | 631 | .layui-layer-loading .layui-layer-loading1 { 632 | width: 37px; 633 | height: 37px; 634 | background: url(loading-1.gif) no-repeat 635 | } 636 | 637 | .layui-layer-ico16, 638 | .layui-layer-loading .layui-layer-loading2 { 639 | width: 32px; 640 | height: 32px; 641 | background: url(loading-2.gif) no-repeat 642 | } 643 | 644 | .layui-layer-tips { 645 | background: 0 0; 646 | box-shadow: none; 647 | border: none 648 | } 649 | 650 | .layui-layer-tips .layui-layer-content { 651 | position: relative; 652 | line-height: 22px; 653 | min-width: 12px; 654 | padding: 5px 10px; 655 | font-size: 12px; 656 | _float: left; 657 | border-radius: 2px; 658 | box-shadow: 1px 1px 3px rgba(0, 0, 0, .2); 659 | background-color: #000; 660 | color: #fff 661 | } 662 | 663 | .layui-layer-tips .layui-layer-close { 664 | right: -2px; 665 | top: -1px 666 | } 667 | 668 | .layui-layer-tips i.layui-layer-TipsG { 669 | position: absolute; 670 | width: 0; 671 | height: 0; 672 | border-width: 8px; 673 | border-color: transparent; 674 | border-style: dashed; 675 | *overflow: hidden 676 | } 677 | 678 | .layui-layer-tips i.layui-layer-TipsB, 679 | .layui-layer-tips i.layui-layer-TipsT { 680 | left: 5px; 681 | border-right-style: solid; 682 | border-right-color: #000 683 | } 684 | 685 | .layui-layer-tips i.layui-layer-TipsT { 686 | bottom: -8px 687 | } 688 | 689 | .layui-layer-tips i.layui-layer-TipsB { 690 | top: -8px 691 | } 692 | 693 | .layui-layer-tips i.layui-layer-TipsL, 694 | .layui-layer-tips i.layui-layer-TipsR { 695 | top: 1px; 696 | border-bottom-style: solid; 697 | border-bottom-color: #000 698 | } 699 | 700 | .layui-layer-tips i.layui-layer-TipsR { 701 | left: -8px 702 | } 703 | 704 | .layui-layer-tips i.layui-layer-TipsL { 705 | right: -8px 706 | } 707 | 708 | .layui-layer-lan[type=dialog] { 709 | min-width: 280px 710 | } 711 | 712 | .layui-layer-lan .layui-layer-title { 713 | background: #4476A7; 714 | color: #fff; 715 | border: none 716 | } 717 | 718 | .layui-layer-lan .layui-layer-btn { 719 | padding: 5px 10px 10px; 720 | text-align: right; 721 | border-top: 1px solid #E9E7E7 722 | } 723 | 724 | .layui-layer-lan .layui-layer-btn a { 725 | background: #BBB5B5; 726 | border: none 727 | } 728 | 729 | .layui-layer-lan .layui-layer-btn .layui-layer-btn1 { 730 | background: #C9C5C5 731 | } 732 | 733 | .layui-layer-molv .layui-layer-title { 734 | background: #009f95; 735 | color: #fff; 736 | border: none 737 | } 738 | 739 | .layui-layer-molv .layui-layer-btn a { 740 | background: #009f95 741 | } 742 | 743 | .layui-layer-molv .layui-layer-btn .layui-layer-btn1 { 744 | background: #92B8B1 745 | } 746 | 747 | .layui-layer-iconext { 748 | background: url(icon-ext.png) no-repeat 749 | } 750 | 751 | .layui-layer-prompt .layui-layer-input { 752 | display: block; 753 | width: 220px; 754 | height: 30px; 755 | margin: 0 auto; 756 | line-height: 30px; 757 | padding: 0 5px; 758 | border: 1px solid #ccc; 759 | box-shadow: 1px 1px 5px rgba(0, 0, 0, .1) inset; 760 | color: #333 761 | } 762 | 763 | .layui-layer-prompt textarea.layui-layer-input { 764 | width: 300px; 765 | height: 100px; 766 | line-height: 20px 767 | } 768 | 769 | .layui-layer-prompt .layui-layer-content { 770 | padding: 20px 771 | } 772 | 773 | .layui-layer-prompt .layui-layer-btn { 774 | padding-top: 0 775 | } 776 | 777 | .layui-layer-tab { 778 | box-shadow: 1px 1px 50px rgba(0, 0, 0, .4) 779 | } 780 | 781 | .layui-layer-tab .layui-layer-title { 782 | padding-left: 0; 783 | border-bottom: 1px solid #ccc; 784 | background-color: #eee; 785 | overflow: visible 786 | } 787 | 788 | .layui-layer-tab .layui-layer-title span { 789 | position: relative; 790 | float: left; 791 | min-width: 80px; 792 | max-width: 260px; 793 | padding: 0 20px; 794 | text-align: center; 795 | cursor: default; 796 | overflow: hidden 797 | } 798 | 799 | .layui-layer-tab .layui-layer-title span.layui-layer-tabnow { 800 | height: 43px; 801 | border-left: 1px solid #ccc; 802 | border-right: 1px solid #ccc; 803 | background-color: #fff; 804 | z-index: 10 805 | } 806 | 807 | .layui-layer-tab .layui-layer-title span:first-child { 808 | border-left: none 809 | } 810 | 811 | .layui-layer-tabmain { 812 | line-height: 24px; 813 | clear: both 814 | } 815 | 816 | .layui-layer-tabmain .layui-layer-tabli { 817 | display: none 818 | } 819 | 820 | .layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer { 821 | display: block 822 | } 823 | 824 | .xubox_tabclose { 825 | position: absolute; 826 | right: 10px; 827 | top: 5px; 828 | cursor: pointer 829 | } 830 | 831 | .layui-layer-photos { 832 | -webkit-animation-duration: .8s; 833 | animation-duration: .8s 834 | } 835 | 836 | .layui-layer-photos .layui-layer-content { 837 | overflow: hidden; 838 | text-align: center 839 | } 840 | 841 | .layui-layer-photos .layui-layer-phimg img { 842 | position: relative; 843 | width: 100%; 844 | display: inline-block; 845 | *display: inline; 846 | *zoom: 1; 847 | vertical-align: top 848 | } 849 | 850 | .layui-layer-imgbar, 851 | .layui-layer-imguide { 852 | display: none 853 | } 854 | 855 | .layui-layer-imgnext, 856 | .layui-layer-imgprev { 857 | position: absolute; 858 | top: 50%; 859 | width: 27px; 860 | _width: 44px; 861 | height: 44px; 862 | margin-top: -22px; 863 | outline: 0; 864 | blr: expression(this.onFocus=this.blur()) 865 | } 866 | 867 | .layui-layer-imgprev { 868 | left: 10px; 869 | background-position: -5px -5px; 870 | _background-position: -70px -5px 871 | } 872 | 873 | .layui-layer-imgprev:hover { 874 | background-position: -33px -5px; 875 | _background-position: -120px -5px 876 | } 877 | 878 | .layui-layer-imgnext { 879 | right: 10px; 880 | _right: 8px; 881 | background-position: -5px -50px; 882 | _background-position: -70px -50px 883 | } 884 | 885 | .layui-layer-imgnext:hover { 886 | background-position: -33px -50px; 887 | _background-position: -120px -50px 888 | } 889 | 890 | .layui-layer-imgbar { 891 | position: absolute; 892 | left: 0; 893 | bottom: 0; 894 | width: 100%; 895 | height: 32px; 896 | line-height: 32px; 897 | background-color: rgba(0, 0, 0, .8); 898 | background-color: #000\9; 899 | filter: Alpha(opacity=80); 900 | color: #fff; 901 | overflow: hidden; 902 | font-size: 0 903 | } 904 | 905 | .layui-layer-imgtit * { 906 | display: inline-block; 907 | *display: inline; 908 | *zoom: 1; 909 | vertical-align: top; 910 | font-size: 12px 911 | } 912 | 913 | .layui-layer-imgtit a { 914 | max-width: 65%; 915 | overflow: hidden; 916 | color: #fff 917 | } 918 | 919 | .layui-layer-imgtit a:hover { 920 | color: #fff; 921 | text-decoration: underline 922 | } 923 | 924 | .layui-layer-imgtit em { 925 | padding-left: 10px; 926 | font-style: normal 927 | } 928 | 929 | @-webkit-keyframes layer-bounceOut { 930 | 100% { 931 | opacity: 0; 932 | -webkit-transform: scale(.7); 933 | transform: scale(.7) 934 | } 935 | 936 | 30% { 937 | -webkit-transform: scale(1.05); 938 | transform: scale(1.05) 939 | } 940 | 941 | 0% { 942 | -webkit-transform: scale(1); 943 | transform: scale(1) 944 | } 945 | } 946 | 947 | @keyframes layer-bounceOut { 948 | 100% { 949 | opacity: 0; 950 | -webkit-transform: scale(.7); 951 | -ms-transform: scale(.7); 952 | transform: scale(.7) 953 | } 954 | 955 | 30% { 956 | -webkit-transform: scale(1.05); 957 | -ms-transform: scale(1.05); 958 | transform: scale(1.05) 959 | } 960 | 961 | 0% { 962 | -webkit-transform: scale(1); 963 | -ms-transform: scale(1); 964 | transform: scale(1) 965 | } 966 | } 967 | 968 | .layer-anim-close { 969 | -webkit-animation-name: layer-bounceOut; 970 | animation-name: layer-bounceOut; 971 | -webkit-animation-duration: .2s; 972 | animation-duration: .2s 973 | } 974 | 975 | @media screen and (max-width:1100px) { 976 | .layui-layer-iframe { 977 | overflow-y: auto; 978 | -webkit-overflow-scrolling: touch 979 | } 980 | } -------------------------------------------------------------------------------- /static/js/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /static/js/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /static/js/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coder-amiao/ChatGPT-OPEN-AI/741defd040477fd5fc891f0ac59b01a1c37a0668/static/js/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /static/js/marked.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * marked - a markdown parser 3 | * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) 4 | * https://github.com/chjj/marked 5 | */ 6 | (function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i.5){ch="x"+ch.toString(16)}out+="&#"+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return"
"+(escaped?code:escape(code,true))+"\n
"}return'
'+(escaped?code:escape(code,true))+"\n
\n"};Renderer.prototype.blockquote=function(quote){return"
\n"+quote+"
\n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"'+text+"\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+"\n"};Renderer.prototype.listitem=function(text){return"
  • "+text+"
  • \n"};Renderer.prototype.paragraph=function(text){return"

    "+text+"

    \n"};Renderer.prototype.table=function(header,body){return"\n"+"\n"+header+"\n"+"\n"+body+"\n"+"
    \n"};Renderer.prototype.tablerow=function(content){return"\n"+content+"\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+"\n"};Renderer.prototype.strong=function(text){return""+text+""};Renderer.prototype.em=function(text){return""+text+""};Renderer.prototype.codespan=function(text){return""+text+""};Renderer.prototype.br=function(){return this.options.xhtml?"
    ":"
    "};Renderer.prototype.del=function(text){return""+text+""};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='
    ";return out};Renderer.prototype.image=function(href,title,text){var out=''+text+'":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;iAn error occured:

    "+escape(e.message+"",true)+"
    "}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}()); -------------------------------------------------------------------------------- /static/js/utils.js: -------------------------------------------------------------------------------- 1 | function buildUrlParams(params) { 2 | let urlParams = ''; 3 | for (const key in params) { 4 | if (params.hasOwnProperty(key)) { 5 | const value = encodeURIComponent(params[key]); 6 | urlParams += `${key}=${value}&`; 7 | } 8 | } 9 | // Remove the last '&' character 10 | return urlParams.slice(0, -1); 11 | } 12 | 13 | function generateUUID(){ 14 | var d = new Date().getTime(); 15 | var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 16 | var r = (d + Math.random()*16)%16 | 0; 17 | d = Math.floor(d/16); 18 | return (c=='x' ? r : (r&0x7|0x8)).toString(16); 19 | }); 20 | return uuid; 21 | } -------------------------------------------------------------------------------- /static/js/web-storage-cache.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | web-storage-cache -- Added `expires` attribute and serialize data with `JSON.parse` for the localStorage and sessionStorage. 3 | Version 1.0.3 4 | https://github.com/WQTeam/web-storage-cache 5 | (c) 2013-2016 WQTeam, MIT license 6 | */ 7 | !function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.WebStorageCache=b()}(this,function(){"use strict";function a(a,b){for(var c in b)a[c]=b[c];return a}function b(a){var b=!1;if(a&&a.setItem){b=!0;var c="__"+Math.round(1e7*Math.random());try{a.setItem(c,c),a.removeItem(c)}catch(d){b=!1}}return b}function c(a){var b=typeof a;return"string"===b&&window[a]instanceof Storage?window[a]:a}function d(a){return"[object Date]"===Object.prototype.toString.call(a)&&!isNaN(a.getTime())}function e(a,b){if(b=b||new Date,"number"==typeof a?a=a===1/0?l:new Date(b.getTime()+1e3*a):"string"==typeof a&&(a=new Date(a)),a&&!d(a))throw new Error("`expires` parameter cannot be converted to a valid Date instance");return a}function f(a){var b=!1;if(a)if(a.code)switch(a.code){case 22:b=!0;break;case 1014:"NS_ERROR_DOM_QUOTA_REACHED"===a.name&&(b=!0)}else-2147024882===a.number&&(b=!0);return b}function g(a,b){this.c=(new Date).getTime(),b=b||m;var c=e(b);this.e=c.getTime(),this.v=a}function h(a){return"object"!=typeof a?!1:a&&"c"in a&&"e"in a&&"v"in a?!0:!1}function i(a){var b=(new Date).getTime();return bd;d++){var e=this.storage.key(d),f=null;try{f=n.deserialize(this.storage.getItem(e))}catch(g){}if(null!==f&&void 0!==f.e){var h=(new Date).getTime();h>=f.e&&b.push(e)}}return b.forEach(function(a){c["delete"](a)}),b},clear:function(){this.storage.clear()},add:function(b,c,d){b=j(b),d=a({force:!0},d);try{var e=n.deserialize(this.storage.getItem(b));if(!h(e)||!i(e))return this.set(b,c,d),!0}catch(f){return this.set(b,c,d),!0}return!1},replace:function(a,b,c){a=j(a);var d=null;try{d=n.deserialize(this.storage.getItem(a))}catch(e){return!1}if(h(d)){if(i(d))return this.set(a,b,c),!0;this["delete"](a)}return!1},touch:function(a,b){a=j(a);var c=null;try{c=n.deserialize(this.storage.getItem(a))}catch(d){return!1}if(h(c)){if(i(c))return this.set(a,this.get(a),{exp:b}),!0;this["delete"](a)}return!1}};return k.prototype=p,k}); --------------------------------------------------------------------------------