├── .gitignore ├── Geektutu.png ├── Geektutu.pptx ├── LICENSE ├── README.md ├── _config.yml ├── docs └── js │ └── gitalk.min.js ├── languages ├── en.yml └── zh-CN.yml ├── layout ├── 404.ejs ├── _book │ └── book.ejs ├── _partial │ ├── footer.ejs │ ├── go-top.ejs │ ├── head.ejs │ ├── header.ejs │ ├── pagination.ejs │ ├── prev-next-post.ejs │ └── toc.ejs ├── _post │ └── post.ejs ├── _sheet │ └── sheet.ejs ├── _widget │ ├── click-egg.ejs │ ├── click-image.ejs │ ├── comments.ejs │ ├── custom-ad.ejs │ ├── featured-tags.ejs │ ├── generate-qrcode.ejs │ ├── post-preview.ejs │ ├── reward.ejs │ ├── social.ejs │ └── summary.ejs ├── archive.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── page.ejs ├── post.ejs └── tags.ejs └── source ├── css ├── cheat_sheet.css ├── geektutu.styl └── gitalk.css ├── fonts ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── icon └── top.png └── js ├── gitalk.min.js └── qrious.min.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /Geektutu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/Geektutu.png -------------------------------------------------------------------------------- /Geektutu.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/Geektutu.pptx -------------------------------------------------------------------------------- /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 2013-2015 Iron Summit Media Strategies, LLC 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 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hexo-theme-geektutu 2 | 3 | > [极客兔兔的博客](https://geektutu.com)目前使用该主题。 4 | > [Github - Geektutu's Blog](https://github.com/geektutu/geektutu-blog) 5 | 6 | ![样图](Geektutu.png) 7 | 8 | ## 1. 特性 9 | 10 | - [x] 支持标签、归档 (2019-06-06)。 11 | - [x] 支持`baidu` `google` `biying` `360`站点认证,以及`baidu`站点统计(2019-06-07)。 12 | - [x] 支持显示目录,目录随文章滚动高亮(2019-06-07)。 13 | - [x] 增加对gitalk(基于Github Issue第三方评论)的支持(2019-06-07)。 14 | - [x] 响应式布局,支持PC和移动端(2019-06-08)。 15 | - [x] 增加支付宝、微信赞赏功能(2019-06-08)。 16 | - [x] 对专题进行强化,聚合同专题链接,[点击查看效果](https://geektutu.com/post/tensorflow-make-npy-hdf5-data-set.html)(2019-06-13)。 17 | - [x] 点击文章区域的图片,可以查看大图,再点击图片则关闭。(2019-06-17) 18 | - [x] 使用QRious实现生成二维码功能,方便微信扫一扫,阅读/分享。(2019-06-17) 19 | - [x] 添加开关控制百度网址自动推送功能。(2019-06-22) 20 | - [x] 添加点击页面出现彩蛋的特效。(2019-06-22) 21 | - [x] 侧边栏目录与专题可进行切换,完善内链功能,方便依次浏览所有同专题的文章,进一步强化专题。(2019-06-22) 22 | - [x] 添加文章置顶功能。(2019-06-17) 23 | - [x] 不蒜子统计。(2019-08-09) 24 | - [x] 新增 Cheat Sheet 样式。 [点击查看效果](https://geektutu.com/post/cheat-sheet-sqlite.html) (2020-03-01) 25 | 26 | ## 2. Hexo 基础命令 27 | 28 | ```bash 29 | hexo new post "" # 创建一篇新文章 30 | hexo clean && hexo generate # 生成静态文件 31 | hexo server # 本地调测 32 | hexo deploy # 自动部署到你配置的仓库的gh-pages分支 33 | ``` 34 | 35 | ## 3. 如何使用该主题 36 | 37 | - 第一步,初始化博客 38 | 39 | ```bash 40 | cd # 进入一个空目录 41 | hexo init # 初始化hexo博客 42 | ``` 43 | 44 | - 第二步,将package.json中的内容替换为[4.1](#user-content-41-packagejson)中的内容 45 | 46 | - 第三步,下载主题,并启动 47 | 48 | ```bash 49 | npm i # 安装依赖 50 | npm update # 下载geektutu主题 51 | npm build # 生成页面 52 | npm start # http://localhost:4000 可以看到效果 53 | ``` 54 | 55 | - 最终的目录结构 56 | 57 | ```bash 58 | |--node_modules/ 59 | |--source/ 60 | |--_posts/ 61 | |-- link.md # 友链,必须有 62 | |-- about.md # 关于我,必须有 63 | |--img/ # _config.xml配置的img/xxx在这里 64 | |--icon.png 65 | |--bg.jpg 66 | |--pay/ # 赞赏的图片位置,可自定义 67 | |--alipay.jpeg 68 | |--wechat.jpeg 69 | |--archives/ # 归档 70 | index.md 71 | |--series/ # 专题 72 | index.md 73 | |--tags/ # 标签 74 | index.md 75 | |--404.md 76 | CNAME 77 | |--themes/ 78 | |--geektutu/ # 主题将会下载在这里 79 | |--_config.xml # 配置在这里 80 | |--package.json 81 | ``` 82 | 83 | ## 4. 我的博客配置 84 | 85 | ### 4.1 package.json 86 | 87 | ```json 88 | { 89 | "name": "hexo-site", 90 | "version": "0.0.0", 91 | "private": true, 92 | "hexo": { 93 | "version": "3.8.0" 94 | }, 95 | "scripts": { 96 | "update": "rm -rf themes/geektutu && git clone https://github.com/geektutu/hexo-theme-geektutu.git themes/geektutu", 97 | "build": "hexo clean && hexo generate", 98 | "start": "hexo server --draft", 99 | "deploy": "hexo deploy" 100 | }, 101 | "dependencies": { 102 | "hexo": "^3.9.0", 103 | "hexo-deployer-git": "^2.1.0", 104 | "hexo-generator-category": "^1.0.0", 105 | "hexo-generator-feed": "3.0.0", 106 | "hexo-generator-index": "1.0.0", 107 | "hexo-generator-sitemap": "2.0.0", 108 | "hexo-generator-tag": "1.0.0", 109 | "hexo-renderer-ejs": "1.0.0", 110 | "hexo-renderer-marked": "2.0.0", 111 | "hexo-renderer-stylus": "1.1.0", 112 | "hexo-server": "1.0.0" 113 | } 114 | } 115 | ``` 116 | 117 | ### 4.2 _config.yml 118 | 119 | ```yml 120 | # Hexo Configuration 121 | ## Docs: https://hexo.io/docs/configuration.html 122 | 123 | # Site 124 | title: 极客兔兔 125 | keyword: 极客兔兔,极客兔兔的博客,极客兔兔的小站 126 | description: 极客兔兔的小站,致力于分享一些技术教程和有趣的技术实践。 127 | author: 极客兔兔 128 | language: zh-CN 129 | 130 | url: https://geektutu.com 131 | root: / 132 | permalink: post/:title.html 133 | 134 | # seo优化各个浏览器的验证信息 135 | beian: 沪ICP备18001798号-1 136 | seo_title: 极客兔兔 # 子页面的后缀,效果: 关于我 | 极客兔兔,如果与title一致,则可以不设置 137 | seo: 138 | google_site_verification: 19ixTFj-X-rXuvZFvR1PMkqSHMXZ5GjN7nhYdYYFm-c 139 | baidu_site_verification: p7Pz3jlx4t 140 | ms_site_verification: 7E2AEE3378AC93764DEAB411177A21A1 141 | _360_site_verification: 5c7e8a1fdbf35ed6003c48733208f705 # 不能以数字开头,所以加上了下划线 142 | 143 | # 开启博客资源的相对链接 https://hexo.io/zh-cn/docs/asset-folders 144 | post_asset_folder: true 145 | 146 | # Site settings 147 | header_icon: img/icon.png 148 | 149 | theme: geektutu 150 | 151 | # Deployment 152 | ## Docs: https://hexo.io/docs/deployment.html 153 | deploy: 154 | type: git 155 | repository: https://git.coding.net/gzdaijie/geektutu-blog.git 156 | branch: coding-pages 157 | 158 | gitalk: 159 | client_id: 'c1fdd456a4caae5f7df0' 160 | client_secret: 'b2674451e21feae50520f99337ec15d2aebe7879' 161 | accessToken: 'xxxx' 162 | repo: 'hexo-theme-geektutu' 163 | owner: 'geektutu' 164 | 165 | # alipay wechatpay 的二维码转换的网址,不使用二维码图片,提高加载速率。 166 | # https://cli.im/deqr 可将二维码转为网址 167 | reward: 168 | alipay: HTTPS://QR.ALIPAY.COM/FKX060337TUXBAX9LIFJE8 169 | wechat: wxp://f2f0qgGBlfD1nZXjvBjievxB0z0fc0W2sBq5 170 | 171 | related_links: 172 | - link: https://github.com/geektutu/hexo-theme-geektutu 173 | img: img/related_links/github.png 174 | - link: https://github.com/geekcircle 175 | img: img/related_links/geekcircle.png 176 | - link: mailto:Geektutu?subject=From Geektutu's Blog 177 | img: img/related_links/email.png 178 | 179 | # 文章末尾配置一些提示信息,可选,不配置则不显示 180 | post_tips: 181 | find_me: true # 本站永久域名「 xx.domain 」, 也可以通过搜索「 xx 」找到我。 182 | zhihu_zhuanlan: https://zhuanlan.zhihu.com/geektutu # 欢迎关注我的「 知乎专栏 」,所有文章可在「 知乎APP 」查看。 183 | 184 | widgets: 185 | mobile_qrcode: false # 开启移动端二维码,扫一扫,手机上阅读 186 | caidan: true # 开启彩蛋,点击屏幕会随机弹出 '点个赞','留个言'等 187 | busuanzi: true # 开启不蒜子统计 https://busuanzi.ibruce.info/ 188 | 189 | ba_auto_push: true # Baidu 自动推送,以下均为可选配置 190 | ba_track_id: 1a0ec33b1aa # Baidu Analytics 191 | cnzz_track_id: 123649 # CNZZ Analytics 192 | google_analysis: UA-141425-1 # Google Analytics 193 | google_ad_client: ca-pub-939225546 # Google Ad 194 | 195 | feed: 196 | enable: true 197 | limit: 0 198 | type: rss2 199 | content: false 200 | path: feed.xml 201 | icon: img/icon.png 202 | ``` 203 | 204 | ### 4.3 md参考 205 | 206 | - archives/index.md [效果](https://geektutu.com/archives) 207 | 208 | ```markdown 209 | --- 210 | layout: "archive" 211 | title: "归档" 212 | description: "极客兔兔的博客的归档列表" 213 | --- 214 | ``` 215 | 216 | - tags/index.md [效果](https://geektutu.com/tags) 217 | 218 | ```markdown 219 | --- 220 | layout: "tags" 221 | title: "标签" 222 | description: "极客兔兔的博客的标签列表" 223 | --- 224 | ``` 225 | 226 | - series/index.md [效果](https://geektutu.com/series) 227 | 228 | ```markdown 229 | --- 230 | layout: "category" 231 | title: "专题" 232 | description: "极客兔兔的博客的专题列表" 233 | --- 234 | ``` 235 | 236 | - _posts/about.md [效果](https://geektutu.com/post/about.html) 237 | 238 | ```markdown 239 | --- 240 | title: 关于我 241 | date: 2017-07-03 11:51:24 242 | description: 极客兔兔的小站,致力于分享一些技术教程和有趣的技术实践。 243 | tags: 244 | - 关于我 245 | --- 246 | 247 | ## 个人介绍 248 | 249 | ··· 省略 250 | 251 | ``` 252 | 253 | - _posts/tensorflow-mnist-simplest.md [效果](https://geektutu.com/post/tensorflow-mnist-simplest.html) 254 | 255 | ```markdown 256 | --- 257 | title: TensorFlow入门(一) - mnist手写数字识别(网络搭建) 258 | date: 2017-12-09 11:51:24 259 | description: TensorFlow 入门系列文章,mnist手写数字识别(网络搭建)。 260 | tags: 261 | - 机器学习 262 | - tensorflow 263 | - mnist 264 | - Python 265 | nav: 266 | - TensorFlow 267 | categories: 268 | - TensorFlow教程 269 | top: 1 270 | github: https://github.com/geektutu/tensorflow-tutorial-samples 271 | image: post/tensorflow-mnist-simplest/xxx.jpg 272 | --- 273 | 274 | 这篇文章是整个 TensorFlow入门-mnist手写数字识别系列的第一篇,主要介绍了如何从0开始用tensorflow搭建最简单的网络进行训练。 275 | 276 | ··· 省略 277 | ``` 278 | 279 | > 注意,这里的`image`是显示在主页和推荐阅读文章卡片左侧的图片,尽量选择方形的图片,相对路径从`根路径`开始。 280 | > 关于`nav`,默认导航框显示的是 categories 的值,避免分类太多,可以使用nav标签聚合,属于同一`nav`的 `categories` 导航链接将会聚合在一起。 281 | > nav 可选设置,若不设置,将平铺所有的 `categories`。 282 | > top 是置顶顺序。 283 | 284 | ## 5. 最后 285 | 286 | 喜欢就点个[star](https://github.com/geektutu/hexo-theme-geektutu)吧。 287 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Code Highlight theme 2 | # normal | night | night yilia | night eighties | night blue | night bright 3 | highlight_theme: geektutu -------------------------------------------------------------------------------- /languages/en.yml: -------------------------------------------------------------------------------- 1 | prev: Older Posts 2 | next: Newer Posts 3 | comment: Comments 4 | archive_a: Archives 5 | archive_b: "Archives: %s" -------------------------------------------------------------------------------- /languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | # 分页使用 2 | prev: 上一页 3 | next: 下一页 4 | 5 | # header使用 6 | index_page: 主页 7 | categories: 专题 8 | tags: 标签 9 | archives: 归档 10 | friend_link: 友链 11 | about: 关于 12 | subscribe: 订阅 13 | 14 | # summary 15 | post: 文章 16 | 17 | # 侧边栏使用 18 | contents: 目录 19 | recent-posts: 最近的文章 -------------------------------------------------------------------------------- /layout/404.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: layout 3 | --- 4 |
5 | 404 NOT FOUND 6 |
7 | 10 | -------------------------------------------------------------------------------- /layout/_book/book.ejs: -------------------------------------------------------------------------------- 1 | 2 | 113 |
114 | 156 |
157 | 163 | 171 |
172 |

<%- page.title %>

173 | <% var categories = (page.categories || []).map(item => item)%> <% if 174 | (categories.length){ var category = categories[0] %> 175 | 186 | <% } %> <% if(page.github) { %> 187 |
188 |

189 | 源代码/数据集已上传到 190 | Github - <%= page.github.split('/')[4] %> 191 |

192 |
193 | <% } %> 194 |
195 | <%- page.content %> 196 | <%-partial('_widget/generate-qrcode') %> 197 |
198 |

199 | <% if(page.github_page) { %>edit this page<% } %> 200 | last updated at <%- page.updated.format('YYYY-MM-DD') %> 201 |

202 |
203 | 204 | <%- partial('_widget/reward') %> 205 | <%- partial('_widget/social') %> 206 | 207 | <% if (page.comment !== false) { %> 208 |
209 | <%- partial('_widget/comments') %> 210 |
211 | <% } %> 212 |
213 | 219 |
220 | 249 | -------------------------------------------------------------------------------- /layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 23 |
24 |

25 | © <%- new Date().getFullYear() %> - <%- config.author %> - 26 | 27 | <%- config.beian %> 28 | 29 |

30 | 40 | <% if (config.widgets && config.widgets.busuanzi) { %> 41 |

42 | 43 | 👁   44 | 📚 45 | 46 |

47 | <% } %> 48 | <% if (config.cnzz_track_id) { %> 49 |

50 | <% } %> 51 | 52 |
53 | 54 | <% if (config.widgets && config.widgets.busuanzi) { %> 55 | 60 | <% } %> 61 | 62 | <% if (config.ba_track_id) { %> 63 | 69 | <% } %> 70 | <% if (config.cnzz_track_id) { %> 71 | 76 | <% } %> 77 | <% if (config.ba_auto_push) { %> 78 | 79 | 89 | <% } %> 90 | <% if (config.google_analysis) { %> 91 | 92 | 102 | <% }%> -------------------------------------------------------------------------------- /layout/_partial/go-top.ejs: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <% var seo = config.seo || {} %> 6 | 7 | 8 | 9 | 10 | 11 | 12 | <% var tags_str = (page.tags || []).map((tag)=>tag.name).join(',') %> 13 | <% var keywords_str = (page.keywords || []).join(',') %> 14 | 15 | 16 | 17 | 18 | 19 | <% if (page.title) { var parts = [page.title, page.seo_title, config.seo_title || config.title] %> 20 | <%= parts.filter(item => item).join(' | ') %> 21 | <% } else {%> 22 | <%= config.title %> 23 | <% } %> 24 | 25 | 26 | 27 | <%- css('css/geektutu')%> 28 | 29 | 54 | 55 | <% if (config.google_ad_client) { %> 56 | 70 | <% } %> 71 | -------------------------------------------------------------------------------- /layout/_partial/header.ejs: -------------------------------------------------------------------------------- 1 | <% if (page.book) { %> 2 | 15 | <% } %> 16 |
17 | 32 | 76 |
77 |
78 | 79 | -------------------------------------------------------------------------------- /layout/_partial/pagination.ejs: -------------------------------------------------------------------------------- 1 |
2 |

3 | <% if (page.prev){ %> 4 | « <%= __('prev') %> 5 | <% } %> 6 |      7 | <% if (page.next){ %> 8 | <%= __('next') %> » 9 | <% } %> 10 |

11 |
-------------------------------------------------------------------------------- /layout/_partial/prev-next-post.ejs: -------------------------------------------------------------------------------- 1 |

2 | <% if (page.next){ %> 3 | 上一篇 « <%- page.next.title %> 4 | <% } %> 5 | <% if (page.prev){ %> 6 | 下一篇 » <%- page.prev.title %> 7 | <% } %> 8 |

-------------------------------------------------------------------------------- /layout/_partial/toc.ejs: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /layout/_post/post.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | 11 |
12 |

<%- page.title %>

13 | <% var categories = (page.categories || []).map(item => item)%> 14 | <% if (categories.length){ var category = categories[0] %> 15 | 26 | <% } %> 27 | <% if(page.github) { %> 28 |
29 |

源代码/数据集已上传到 30 | Github - <%= page.github.split('/')[4] %> 31 |

32 |
33 | <% } %> 34 |
35 | <%- page.content %> 36 | <%-partial('_widget/generate-qrcode') %> 37 |
38 |
39 | <% if ((page.categories || []).length){ %> 40 |

41 | <%- __('categories')%>: 42 | <% page.categories.each(function(category) { %> 43 | 44 | 45 | 46 | <% }) %> 47 |

48 | <% } %> 49 |

50 | 本文发表于 <%= page.date.format('YYYY-MM-DD') %>,最后修改于 <%= page.updated.format('YYYY-MM-DD') %>。 51 |

52 | 53 | <% if (config.post_tips && config.post_tips.find_me ) { %> 54 |

55 | 本站永久域名「 <%= config.url.split('/').reverse()[0]%> 57 | 」,也可搜索「 <%= config.title %> 」找到我。 58 |

59 | <% }%> 60 | <% if (config.post_tips && config.post_tips.gongzhonghao ) { %> 61 |

geektutublog gongzhonghao

62 | <% } %> 63 | 64 | 65 |
66 |
67 | <%-partial('_partial/prev-next-post') %> 68 |
69 | 70 | <%- partial('_widget/reward') %> 71 | <%- partial('_widget/social') %> 72 | 73 |
74 |

推荐阅读

75 | <% let randomInt = (max) => Math.floor(Math.random() * Math.floor(max)); 76 | let choices = [] 77 | let posts = [] 78 | if (site.posts.length >= 3) { 79 | while(choices.length < 3) { 80 | let num = randomInt(site.posts.length); 81 | choices.indexOf(num) === -1 && choices.push(num) 82 | } 83 | } else { 84 | choices = [0, 1, 2] 85 | } 86 | site.posts.sort('date').reverse().each(function(post, i){ 87 | if (choices.indexOf(i) !== -1) { 88 | 89 | %> 90 | <%- partial('_widget/post-preview', {post: post}) %> 91 | <% }}); %> 92 |
93 |
94 | 95 | <%- partial('_widget/featured-tags') %> 96 |
97 | 98 | <% if (page.comment !== false) { %> 99 |
100 | <%- partial('_widget/comments') %> 101 |
102 | <% } %> 103 |
104 | 143 | 144 | -------------------------------------------------------------------------------- /layout/_sheet/sheet.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |

<%- page.title %>

6 | <%- page.content %> <%-partial('_widget/generate-qrcode') %> 7 |
8 | 9 |
10 | <%- partial('_widget/reward') %> 11 | <%- partial('_widget/social') %> 12 | 13 | <% let related_sheets = site.posts.filter(post => post.cheat_sheet && post.path !== page.path).sort('date') %> 14 | <% if (related_sheets.length > 0) { %> 15 | 23 | <% } %> 24 | <%- partial('_widget/comments') %> 25 |
26 |
27 | -------------------------------------------------------------------------------- /layout/_widget/click-egg.ejs: -------------------------------------------------------------------------------- 1 | <% if (config.widgets && config.widgets.caidan ) { %> 2 | 41 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/click-image.ejs: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 |
25 | Big Image 26 |
27 | 28 | -------------------------------------------------------------------------------- /layout/_widget/comments.ejs: -------------------------------------------------------------------------------- 1 | <% if (config.gitalk) { %> 2 |
3 |
4 |
5 | 6 |
7 |
8 | 9 |
10 | <%- css('css/gitalk.css') %> 11 | <%- js('js/gitalk.min.js') %> 12 | 39 | 77 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/custom-ad.ejs: -------------------------------------------------------------------------------- 1 | <% if (type === 'custom' && config.custom_ads) { %> 2 | 16 | 17 | <% 18 | let len = (config.custom_ads || []).length 19 | let adLists = (config.custom_ads || []).map((item, i) => { 20 | let img = item.img.startsWith('http') ? item.img : config.root + item.img; 21 | return `
rec
` 22 | }); 23 | adLists = JSON.stringify(adLists) 24 | 25 | %> 26 | 36 | <% }; %> -------------------------------------------------------------------------------- /layout/_widget/featured-tags.ejs: -------------------------------------------------------------------------------- 1 | 2 | 19 | -------------------------------------------------------------------------------- /layout/_widget/generate-qrcode.ejs: -------------------------------------------------------------------------------- 1 | <%- js('js/qrious.min.js') %> 2 | <% if(config.widgets.mobile_qrcode) { %> 3 | 7 | 16 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/post-preview.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 30 |
-------------------------------------------------------------------------------- /layout/_widget/reward.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if(config.reward) { %> 3 | 95 |
96 |
97 |
赞赏支持
98 |
99 |
100 |

请我吃胡萝卜 =^_^=

101 |
102 | i 103 | ali 104 |

支付宝

105 |
106 |
107 | i 108 | wechat 109 |

微信

110 |
111 |
112 |
113 | 137 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/social.ejs: -------------------------------------------------------------------------------- 1 | <% if(config.related_links) { %> 2 |
3 | <% config.related_links.forEach(function(item){ %> 4 | 5 | <% }) %> 6 |
7 | <% } %> -------------------------------------------------------------------------------- /layout/_widget/summary.ejs: -------------------------------------------------------------------------------- 1 | 51 | 52 |
53 | 64 | 65 | <% if(config.related_links) { %> 66 | 71 | <% } %> 72 |
-------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 | 6 |
7 | <% 8 | var years = {}; 9 | site.posts.sort('date').reverse().forEach(function(post){ 10 | var year = post.date.year() 11 | if(years[year]===undefined){ 12 | years[year] = []; 13 | } 14 | years[year].push(post); 15 | }); 16 | %> 17 | 18 | 19 | 34 |
-------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 | 6 |
7 | 8 |
    9 | <% site.categories.forEach(function(category, index){ %> 10 |
  • 11 | <%= category.name %> 12 |
  • 13 | <% category.posts.sort('date').map(function(post, index){ %> 14 |
  • 15 | <%- post.title || "Untitled" %> 16 | (<%= post.date.format('ll') %>) 17 |
  • 18 | <% }) %> 19 | <% }) %> 20 |
21 |
-------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 | 6 | 7 | <% var top = site.posts.map(p => p).filter(p => p.top).sort((o1, o2) => o1.top * 1 - o2.top * 1);%> 8 | <% top.forEach(post => { %> 9 | <%- partial('_widget/post-preview', {post: post}) %> 10 | <% }); %> 11 | 12 | <% page.posts.each(function(post, index){ if (!top.includes(post)) { %> 13 | <%- partial('_widget/post-preview', {post: post}) %> 14 | <% } }); %> 15 |
16 | <%- partial('_partial/pagination') %> 17 |
-------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%- partial('_partial/head') %> 6 | 7 | 8 | <%- partial('_partial/header',{cache: true}) %> 9 | 10 |
11 | <%- body %> 12 |
13 | <%- partial('_partial/go-top') %> 14 | <%- partial('_widget/click-image.ejs') %> 15 | 16 | <%- partial('_partial/footer') %> 17 | 18 | 36 | <%- partial('_widget/click-egg.ejs') %> 37 | 38 | 39 | -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: layout 3 | --- 4 | 5 |
6 | 7 | <% if (!is_post()) { %> 8 | 15 |
16 | <%- body %> 17 |
18 | 35 | <% } else { %> 36 | <%- body %> 37 | <% } %> 38 | <% if (!page.book) { %> 39 | 61 | <% } %> 62 |
-------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | <% if (page.cheat_sheet) { %> 5 | <%- partial('_sheet/sheet') %> 6 | <% } else if (page.book) { %> 7 | <%- partial('_book/book') %> 8 | <% } else { %> 9 | <%- partial('_post/post') %> 10 | <% } %> -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 |
6 | 7 | 22 |
-------------------------------------------------------------------------------- /source/css/cheat_sheet.css: -------------------------------------------------------------------------------- 1 | /* for cheat sheet part */ 2 | /* markdown */ 3 | .post-container .highlight .gutter { 4 | display: none; 5 | } 6 | .post-container pre, 7 | .post-container .highlight { 8 | font-size: 14px; 9 | } 10 | /* container */ 11 | .post-container { 12 | width: 100% !important; 13 | max-width: 100% !important; 14 | background-color: transparent; 15 | padding: 10px 0px !important; 16 | } 17 | 18 | .post-container > .col-xs-12 { 19 | padding: 0 15px; 20 | } 21 | 22 | .post-container h2 { 23 | width: 100%; 24 | float: left; 25 | } 26 | .post-container article > * { 27 | padding-left: 15px; 28 | } 29 | .post-container article h3 { 30 | white-space: nowrap; 31 | color: #337ab7; 32 | overflow: hidden; 33 | font-size: 18px !important; 34 | } 35 | .post-container article h3::after { 36 | margin-left: 24px; 37 | content: ""; 38 | display: inline-block; 39 | vertical-align: middle; 40 | width: 100%; 41 | height: 1px; 42 | background: linear-gradient( 43 | to right, 44 | rgba(116, 95, 181, 0.2), 45 | transparent 75% 46 | ); 47 | } 48 | .post-container figure, 49 | .post-container figure + p { 50 | -webkit-box-shadow: 0 1px 3px rgba(26, 26, 26, 0.1); 51 | box-shadow: 0 1px 3px rgba(26, 26, 26, 0.1); 52 | border-radius: 2px; 53 | } 54 | .post-container figure, 55 | .post-container figure pre { 56 | background: white !important; 57 | } 58 | .post-container figure + p { 59 | background-color: #f6f8fa !important; 60 | margin-top: -21px !important; 61 | padding: 10px 15px !important; 62 | font-size: 13px; 63 | } 64 | 65 | @media (min-width: 992px) { 66 | .sheet-container { 67 | width: calc(100% - 320px); 68 | margin-left: 160px; 69 | } 70 | } 71 | .related-sheet { 72 | margin: 20px 0; 73 | } 74 | .related-sheet h3 { 75 | border-bottom: 1px solid #e9e9e9; 76 | margin-bottom: 20px; 77 | } 78 | -------------------------------------------------------------------------------- /source/css/geektutu.styl: -------------------------------------------------------------------------------- 1 | /* reset.css start */ 2 | /*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */ 3 | html, 4 | body, 5 | p, 6 | ol, 7 | ul, 8 | li, 9 | dl, 10 | dt, 11 | dd, 12 | blockquote, 13 | figure, 14 | fieldset, 15 | legend, 16 | textarea, 17 | pre, 18 | iframe, 19 | hr, 20 | h1, 21 | h2, 22 | h3, 23 | h4, 24 | h5, 25 | h6 { 26 | margin: 0; 27 | padding: 0; 28 | } 29 | 30 | h1, 31 | h2, 32 | h3, 33 | h4, 34 | h5, 35 | h6 { 36 | font-size: 100%; 37 | font-weight: normal; 38 | } 39 | button, 40 | input, 41 | select, 42 | textarea { 43 | margin: 0; 44 | } 45 | 46 | html { 47 | box-sizing: border-box; 48 | } 49 | 50 | *, *:before, *:after { 51 | box-sizing: inherit; 52 | } 53 | 54 | img, 55 | embed, 56 | iframe, 57 | object, 58 | audio, 59 | video { 60 | height: auto; 61 | max-width: 100%; 62 | } 63 | 64 | iframe { 65 | border: 0; 66 | } 67 | 68 | table { 69 | border-collapse: collapse; 70 | border-spacing: 0; 71 | } 72 | 73 | td, 74 | th { 75 | padding: 0; 76 | text-align: left; 77 | } 78 | 79 | /* reset.css end */ 80 | 81 | /* layout.css start */ 82 | .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { 83 | position: relative; 84 | min-height: 1px; 85 | padding-right: 15px; 86 | padding-left: 15px; 87 | box-sizing: border-box; 88 | } 89 | .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { 90 | float: left; 91 | } 92 | .col-xs-12 { 93 | width: 100%; 94 | } 95 | .col-xs-11 { 96 | width: 91.66666667%; 97 | } 98 | .col-xs-10 { 99 | width: 83.33333333%; 100 | } 101 | .col-xs-9 { 102 | width: 75%; 103 | } 104 | .col-xs-8 { 105 | width: 66.66666667%; 106 | } 107 | .col-xs-7 { 108 | width: 58.33333333%; 109 | } 110 | .col-xs-6 { 111 | width: 50%; 112 | } 113 | .col-xs-5 { 114 | width: 41.66666667%; 115 | } 116 | .col-xs-4 { 117 | width: 33.33333333%; 118 | } 119 | .col-xs-3 { 120 | width: 25%; 121 | } 122 | .col-xs-2 { 123 | width: 16.66666667%; 124 | } 125 | .col-xs-1 { 126 | width: 8.33333333%; 127 | } 128 | .col-xs-pull-12 { 129 | right: 100%; 130 | } 131 | .col-xs-pull-11 { 132 | right: 91.66666667%; 133 | } 134 | .col-xs-pull-10 { 135 | right: 83.33333333%; 136 | } 137 | .col-xs-pull-9 { 138 | right: 75%; 139 | } 140 | .col-xs-pull-8 { 141 | right: 66.66666667%; 142 | } 143 | .col-xs-pull-7 { 144 | right: 58.33333333%; 145 | } 146 | .col-xs-pull-6 { 147 | right: 50%; 148 | } 149 | .col-xs-pull-5 { 150 | right: 41.66666667%; 151 | } 152 | .col-xs-pull-4 { 153 | right: 33.33333333%; 154 | } 155 | .col-xs-pull-3 { 156 | right: 25%; 157 | } 158 | .col-xs-pull-2 { 159 | right: 16.66666667%; 160 | } 161 | .col-xs-pull-1 { 162 | right: 8.33333333%; 163 | } 164 | .col-xs-pull-0 { 165 | right: auto; 166 | } 167 | .col-xs-push-12 { 168 | left: 100%; 169 | } 170 | .col-xs-push-11 { 171 | left: 91.66666667%; 172 | } 173 | .col-xs-push-10 { 174 | left: 83.33333333%; 175 | } 176 | .col-xs-push-9 { 177 | left: 75%; 178 | } 179 | .col-xs-push-8 { 180 | left: 66.66666667%; 181 | } 182 | .col-xs-push-7 { 183 | left: 58.33333333%; 184 | } 185 | .col-xs-push-6 { 186 | left: 50%; 187 | } 188 | .col-xs-push-5 { 189 | left: 41.66666667%; 190 | } 191 | .col-xs-push-4 { 192 | left: 33.33333333%; 193 | } 194 | .col-xs-push-3 { 195 | left: 25%; 196 | } 197 | .col-xs-push-2 { 198 | left: 16.66666667%; 199 | } 200 | .col-xs-push-1 { 201 | left: 8.33333333%; 202 | } 203 | .col-xs-push-0 { 204 | left: auto; 205 | } 206 | .col-xs-offset-12 { 207 | margin-left: 100%; 208 | } 209 | .col-xs-offset-11 { 210 | margin-left: 91.66666667%; 211 | } 212 | .col-xs-offset-10 { 213 | margin-left: 83.33333333%; 214 | } 215 | .col-xs-offset-9 { 216 | margin-left: 75%; 217 | } 218 | .col-xs-offset-8 { 219 | margin-left: 66.66666667%; 220 | } 221 | .col-xs-offset-7 { 222 | margin-left: 58.33333333%; 223 | } 224 | .col-xs-offset-6 { 225 | margin-left: 50%; 226 | } 227 | .col-xs-offset-5 { 228 | margin-left: 41.66666667%; 229 | } 230 | .col-xs-offset-4 { 231 | margin-left: 33.33333333%; 232 | } 233 | .col-xs-offset-3 { 234 | margin-left: 25%; 235 | } 236 | .col-xs-offset-2 { 237 | margin-left: 16.66666667%; 238 | } 239 | .col-xs-offset-1 { 240 | margin-left: 8.33333333%; 241 | } 242 | .col-xs-offset-0 { 243 | margin-left: 0; 244 | } 245 | @media (min-width: 768px) { 246 | .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { 247 | float: left; 248 | } 249 | .col-sm-12 { 250 | width: 100%; 251 | } 252 | .col-sm-11 { 253 | width: 91.66666667%; 254 | } 255 | .col-sm-10 { 256 | width: 83.33333333%; 257 | } 258 | .col-sm-9 { 259 | width: 75%; 260 | } 261 | .col-sm-8 { 262 | width: 66.66666667%; 263 | } 264 | .col-sm-7 { 265 | width: 58.33333333%; 266 | } 267 | .col-sm-6 { 268 | width: 50%; 269 | } 270 | .col-sm-5 { 271 | width: 41.66666667%; 272 | } 273 | .col-sm-4 { 274 | width: 33.33333333%; 275 | } 276 | .col-sm-3 { 277 | width: 25%; 278 | } 279 | .col-sm-2 { 280 | width: 16.66666667%; 281 | } 282 | .col-sm-1 { 283 | width: 8.33333333%; 284 | } 285 | .col-sm-pull-12 { 286 | right: 100%; 287 | } 288 | .col-sm-pull-11 { 289 | right: 91.66666667%; 290 | } 291 | .col-sm-pull-10 { 292 | right: 83.33333333%; 293 | } 294 | .col-sm-pull-9 { 295 | right: 75%; 296 | } 297 | .col-sm-pull-8 { 298 | right: 66.66666667%; 299 | } 300 | .col-sm-pull-7 { 301 | right: 58.33333333%; 302 | } 303 | .col-sm-pull-6 { 304 | right: 50%; 305 | } 306 | .col-sm-pull-5 { 307 | right: 41.66666667%; 308 | } 309 | .col-sm-pull-4 { 310 | right: 33.33333333%; 311 | } 312 | .col-sm-pull-3 { 313 | right: 25%; 314 | } 315 | .col-sm-pull-2 { 316 | right: 16.66666667%; 317 | } 318 | .col-sm-pull-1 { 319 | right: 8.33333333%; 320 | } 321 | .col-sm-pull-0 { 322 | right: auto; 323 | } 324 | .col-sm-push-12 { 325 | left: 100%; 326 | } 327 | .col-sm-push-11 { 328 | left: 91.66666667%; 329 | } 330 | .col-sm-push-10 { 331 | left: 83.33333333%; 332 | } 333 | .col-sm-push-9 { 334 | left: 75%; 335 | } 336 | .col-sm-push-8 { 337 | left: 66.66666667%; 338 | } 339 | .col-sm-push-7 { 340 | left: 58.33333333%; 341 | } 342 | .col-sm-push-6 { 343 | left: 50%; 344 | } 345 | .col-sm-push-5 { 346 | left: 41.66666667%; 347 | } 348 | .col-sm-push-4 { 349 | left: 33.33333333%; 350 | } 351 | .col-sm-push-3 { 352 | left: 25%; 353 | } 354 | .col-sm-push-2 { 355 | left: 16.66666667%; 356 | } 357 | .col-sm-push-1 { 358 | left: 8.33333333%; 359 | } 360 | .col-sm-push-0 { 361 | left: auto; 362 | } 363 | .col-sm-offset-12 { 364 | margin-left: 100%; 365 | } 366 | .col-sm-offset-11 { 367 | margin-left: 91.66666667%; 368 | } 369 | .col-sm-offset-10 { 370 | margin-left: 83.33333333%; 371 | } 372 | .col-sm-offset-9 { 373 | margin-left: 75%; 374 | } 375 | .col-sm-offset-8 { 376 | margin-left: 66.66666667%; 377 | } 378 | .col-sm-offset-7 { 379 | margin-left: 58.33333333%; 380 | } 381 | .col-sm-offset-6 { 382 | margin-left: 50%; 383 | } 384 | .col-sm-offset-5 { 385 | margin-left: 41.66666667%; 386 | } 387 | .col-sm-offset-4 { 388 | margin-left: 33.33333333%; 389 | } 390 | .col-sm-offset-3 { 391 | margin-left: 25%; 392 | } 393 | .col-sm-offset-2 { 394 | margin-left: 16.66666667%; 395 | } 396 | .col-sm-offset-1 { 397 | margin-left: 8.33333333%; 398 | } 399 | .col-sm-offset-0 { 400 | margin-left: 0; 401 | } 402 | } 403 | @media (min-width: 992px) { 404 | .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { 405 | float: left; 406 | } 407 | .col-md-12 { 408 | width: 100%; 409 | } 410 | .col-md-11 { 411 | width: 91.66666667%; 412 | } 413 | .col-md-10 { 414 | width: 83.33333333%; 415 | } 416 | .col-md-9 { 417 | width: 75%; 418 | } 419 | .col-md-8 { 420 | width: 66.66666667%; 421 | } 422 | .col-md-7 { 423 | width: 58.33333333%; 424 | } 425 | .col-md-6 { 426 | width: 50%; 427 | } 428 | .col-md-5 { 429 | width: 41.66666667%; 430 | } 431 | .col-md-4 { 432 | width: 33.33333333%; 433 | } 434 | .col-md-3 { 435 | width: 25%; 436 | } 437 | .col-md-2 { 438 | width: 16.66666667%; 439 | } 440 | .col-md-1 { 441 | width: 8.33333333%; 442 | } 443 | .col-md-pull-12 { 444 | right: 100%; 445 | } 446 | .col-md-pull-11 { 447 | right: 91.66666667%; 448 | } 449 | .col-md-pull-10 { 450 | right: 83.33333333%; 451 | } 452 | .col-md-pull-9 { 453 | right: 75%; 454 | } 455 | .col-md-pull-8 { 456 | right: 66.66666667%; 457 | } 458 | .col-md-pull-7 { 459 | right: 58.33333333%; 460 | } 461 | .col-md-pull-6 { 462 | right: 50%; 463 | } 464 | .col-md-pull-5 { 465 | right: 41.66666667%; 466 | } 467 | .col-md-pull-4 { 468 | right: 33.33333333%; 469 | } 470 | .col-md-pull-3 { 471 | right: 25%; 472 | } 473 | .col-md-pull-2 { 474 | right: 16.66666667%; 475 | } 476 | .col-md-pull-1 { 477 | right: 8.33333333%; 478 | } 479 | .col-md-pull-0 { 480 | right: auto; 481 | } 482 | .col-md-push-12 { 483 | left: 100%; 484 | } 485 | .col-md-push-11 { 486 | left: 91.66666667%; 487 | } 488 | .col-md-push-10 { 489 | left: 83.33333333%; 490 | } 491 | .col-md-push-9 { 492 | left: 75%; 493 | } 494 | .col-md-push-8 { 495 | left: 66.66666667%; 496 | } 497 | .col-md-push-7 { 498 | left: 58.33333333%; 499 | } 500 | .col-md-push-6 { 501 | left: 50%; 502 | } 503 | .col-md-push-5 { 504 | left: 41.66666667%; 505 | } 506 | .col-md-push-4 { 507 | left: 33.33333333%; 508 | } 509 | .col-md-push-3 { 510 | left: 25%; 511 | } 512 | .col-md-push-2 { 513 | left: 16.66666667%; 514 | } 515 | .col-md-push-1 { 516 | left: 8.33333333%; 517 | } 518 | .col-md-push-0 { 519 | left: auto; 520 | } 521 | .col-md-offset-12 { 522 | margin-left: 100%; 523 | } 524 | .col-md-offset-11 { 525 | margin-left: 91.66666667%; 526 | } 527 | .col-md-offset-10 { 528 | margin-left: 83.33333333%; 529 | } 530 | .col-md-offset-9 { 531 | margin-left: 75%; 532 | } 533 | .col-md-offset-8 { 534 | margin-left: 66.66666667%; 535 | } 536 | .col-md-offset-7 { 537 | margin-left: 58.33333333%; 538 | } 539 | .col-md-offset-6 { 540 | margin-left: 50%; 541 | } 542 | .col-md-offset-5 { 543 | margin-left: 41.66666667%; 544 | } 545 | .col-md-offset-4 { 546 | margin-left: 33.33333333%; 547 | } 548 | .col-md-offset-3 { 549 | margin-left: 25%; 550 | } 551 | .col-md-offset-2 { 552 | margin-left: 16.66666667%; 553 | } 554 | .col-md-offset-1 { 555 | margin-left: 8.33333333%; 556 | } 557 | .col-md-offset-0 { 558 | margin-left: 0; 559 | } 560 | } 561 | @media (min-width: 1200px) { 562 | .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { 563 | float: left; 564 | } 565 | .col-lg-12 { 566 | width: 100%; 567 | } 568 | .col-lg-11 { 569 | width: 91.66666667%; 570 | } 571 | .col-lg-10 { 572 | width: 83.33333333%; 573 | } 574 | .col-lg-9 { 575 | width: 75%; 576 | } 577 | .col-lg-8 { 578 | width: 66.66666667%; 579 | } 580 | .col-lg-7 { 581 | width: 58.33333333%; 582 | } 583 | .col-lg-6 { 584 | width: 50%; 585 | } 586 | .col-lg-5 { 587 | width: 41.66666667%; 588 | } 589 | .col-lg-4 { 590 | width: 33.33333333%; 591 | } 592 | .col-lg-3 { 593 | width: 25%; 594 | } 595 | .col-lg-2 { 596 | width: 16.66666667%; 597 | } 598 | .col-lg-1 { 599 | width: 8.33333333%; 600 | } 601 | .col-lg-pull-12 { 602 | right: 100%; 603 | } 604 | .col-lg-pull-11 { 605 | right: 91.66666667%; 606 | } 607 | .col-lg-pull-10 { 608 | right: 83.33333333%; 609 | } 610 | .col-lg-pull-9 { 611 | right: 75%; 612 | } 613 | .col-lg-pull-8 { 614 | right: 66.66666667%; 615 | } 616 | .col-lg-pull-7 { 617 | right: 58.33333333%; 618 | } 619 | .col-lg-pull-6 { 620 | right: 50%; 621 | } 622 | .col-lg-pull-5 { 623 | right: 41.66666667%; 624 | } 625 | .col-lg-pull-4 { 626 | right: 33.33333333%; 627 | } 628 | .col-lg-pull-3 { 629 | right: 25%; 630 | } 631 | .col-lg-pull-2 { 632 | right: 16.66666667%; 633 | } 634 | .col-lg-pull-1 { 635 | right: 8.33333333%; 636 | } 637 | .col-lg-pull-0 { 638 | right: auto; 639 | } 640 | .col-lg-push-12 { 641 | left: 100%; 642 | } 643 | .col-lg-push-11 { 644 | left: 91.66666667%; 645 | } 646 | .col-lg-push-10 { 647 | left: 83.33333333%; 648 | } 649 | .col-lg-push-9 { 650 | left: 75%; 651 | } 652 | .col-lg-push-8 { 653 | left: 66.66666667%; 654 | } 655 | .col-lg-push-7 { 656 | left: 58.33333333%; 657 | } 658 | .col-lg-push-6 { 659 | left: 50%; 660 | } 661 | .col-lg-push-5 { 662 | left: 41.66666667%; 663 | } 664 | .col-lg-push-4 { 665 | left: 33.33333333%; 666 | } 667 | .col-lg-push-3 { 668 | left: 25%; 669 | } 670 | .col-lg-push-2 { 671 | left: 16.66666667%; 672 | } 673 | .col-lg-push-1 { 674 | left: 8.33333333%; 675 | } 676 | .col-lg-push-0 { 677 | left: auto; 678 | } 679 | .col-lg-offset-12 { 680 | margin-left: 100%; 681 | } 682 | .col-lg-offset-11 { 683 | margin-left: 91.66666667%; 684 | } 685 | .col-lg-offset-10 { 686 | margin-left: 83.33333333%; 687 | } 688 | .col-lg-offset-9 { 689 | margin-left: 75%; 690 | } 691 | .col-lg-offset-8 { 692 | margin-left: 66.66666667%; 693 | } 694 | .col-lg-offset-7 { 695 | margin-left: 58.33333333%; 696 | } 697 | .col-lg-offset-6 { 698 | margin-left: 50%; 699 | } 700 | .col-lg-offset-5 { 701 | margin-left: 41.66666667%; 702 | } 703 | .col-lg-offset-4 { 704 | margin-left: 33.33333333%; 705 | } 706 | .col-lg-offset-3 { 707 | margin-left: 25%; 708 | } 709 | .col-lg-offset-2 { 710 | margin-left: 16.66666667%; 711 | } 712 | .col-lg-offset-1 { 713 | margin-left: 8.33333333%; 714 | } 715 | .col-lg-offset-0 { 716 | margin-left: 0; 717 | } 718 | } 719 | 720 | @media (max-width: 767px) { 721 | .hidden-xs { 722 | display: none !important 723 | } 724 | } 725 | 726 | @media (min-width: 768px) and (max-width: 991px) { 727 | .hidden-sm { 728 | display: none !important 729 | } 730 | } 731 | @media (min-width: 992px) and (max-width: 1199px) { 732 | .hidden-md { 733 | display: none !important; 734 | } 735 | } 736 | @media (min-width: 1200px) { 737 | .hidden-lg { 738 | display: none !important; 739 | } 740 | } 741 | /* layout.css end */ 742 | 743 | /* markdown.css start */ 744 | .markdown-it { 745 | text-size-adjust: 100%; 746 | -ms-text-size-adjust: 100%; 747 | -webkit-text-size-adjust: 100%; 748 | line-height: 1.8; 749 | color: rgba(0,0,0,0.9); 750 | -webkit-font-smoothing: antialiased; 751 | font-size: 16px; 752 | word-wrap: break-word; 753 | } 754 | 755 | .markdown-it code, .markdown-it pre { 756 | font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 757 | } 758 | 759 | @media (max-width: 767px) { 760 | .markdown-it { 761 | font-size: 14px; 762 | } 763 | } 764 | 765 | .markdown-it * { 766 | box-sizing: border-box; 767 | } 768 | 769 | .markdown-it::before { 770 | display: table; 771 | content: ""; 772 | } 773 | 774 | .markdown-it::after { 775 | display: table; 776 | clear: both; 777 | content: ""; 778 | } 779 | 780 | .markdown-it>*:first-child { 781 | margin-top: 0 !important; 782 | } 783 | 784 | .markdown-it>*:last-child { 785 | margin-bottom: 0 !important; 786 | } 787 | 788 | .markdown-it [type="checkbox"], 789 | .markdown-it dl { 790 | padding: 0; 791 | } 792 | 793 | .markdown-it p, 794 | .markdown-it blockquote, 795 | .markdown-it ul, 796 | .markdown-it ol, 797 | .markdown-it dl, 798 | .markdown-it table, 799 | .markdown-it pre, 800 | .markdown-it details { 801 | margin-top: 0; 802 | margin-bottom: 5px; 803 | } 804 | 805 | .markdown-it article p, 806 | .markdown-it article blockquote, 807 | .markdown-it article ul, 808 | .markdown-it article ol, 809 | .markdown-it article dl, 810 | .markdown-it article table, 811 | .markdown-it article pre, 812 | .markdown-it article details { 813 | margin-top: 10px; 814 | margin-bottom: 10px; 815 | } 816 | 817 | .markdown-it a { 818 | color: #337ab7; 819 | text-decoration: none; 820 | background-color: transparent; 821 | -webkit-text-decoration-skip: objects; 822 | } 823 | 824 | .markdown-it summary { 825 | cursor: pointer; 826 | font-weight: bold; 827 | -webkit-user-select: none; 828 | -moz-user-select: none; 829 | -ms-user-select: none; 830 | user-select: none; 831 | } 832 | 833 | .markdown-it a:active, 834 | .markdown-it a:hover, 835 | .markdown-it a:focus, 836 | .markdown-it summary:active, 837 | .markdown-it summary:hover, 838 | .markdown-it summary:focus { 839 | outline-width: 0; 840 | } 841 | 842 | .markdown-it details { 843 | padding: 5px 10px; 844 | border: 1px solid #e3e3e3; 845 | border-bottom-color: #e0e0e0; 846 | border-right-color: #ececec; 847 | background-color: #f0f8ff; 848 | box-shadow: 1px 2px 1px rgba(0,0,0,.072); 849 | -webkit-box-shadow: 1px 2px 1px rgba(0,0,0,.072); 850 | } 851 | 852 | .markdown-it details p { 853 | margin-bottom: 0; 854 | } 855 | 856 | .markdown-it a:hover { 857 | text-decoration: none; 858 | color: #337ab7; 859 | } 860 | 861 | .markdown-it a:not([href]) { 862 | color: inherit; 863 | text-decoration: none; 864 | } 865 | .markdown-it blockquote { 866 | margin: 1em 0; 867 | padding: 0.5em 1em; 868 | color: #666666; 869 | border-left: .25em solid #337ab7; 870 | background-color: #f0f8ff; 871 | overflow: auto; 872 | } 873 | 874 | .markdown-it blockquote>:first-child { 875 | margin-top: 0; 876 | } 877 | 878 | .markdown-it blockquote>:last-child { 879 | margin-bottom: 0; 880 | } 881 | 882 | .markdown-it code { 883 | padding: 0.2em 0; 884 | margin: 0; 885 | background-color: rgba(27,31,35,0.05); 886 | border-radius: 3px; 887 | color: #24292e; 888 | font-size: 0.9em; 889 | } 890 | 891 | .markdown-it code::before, 892 | .markdown-it code::after { 893 | letter-spacing: -0.2em; 894 | content: "\00a0"; 895 | } 896 | 897 | .markdown-it dd { 898 | margin-left: 0; 899 | } 900 | 901 | .markdown-it dl dt { 902 | padding: 0; 903 | margin-top: 16px; 904 | font-size: 1em; 905 | font-style: italic; 906 | font-weight: 600; 907 | } 908 | 909 | .markdown-it dl dd { 910 | padding: 0 16px; 911 | margin-bottom: 16px; 912 | } 913 | 914 | .markdown-it h1, 915 | .markdown-it h2, 916 | .markdown-it h3, 917 | .markdown-it h4, 918 | .markdown-it h5, 919 | .markdown-it h6 { 920 | margin-top: 5px; 921 | margin-bottom: 5px; 922 | font-weight: 500; 923 | } 924 | 925 | .markdown-it article h1, 926 | .markdown-it article h2, 927 | .markdown-it article h3 { 928 | margin-top: -55px; 929 | padding-top: 60px; 930 | } 931 | 932 | .markdown-it h1 { 933 | margin-bottom: 20px; 934 | font-size: 2em; 935 | border-bottom: 1px solid #eaecef; 936 | } 937 | 938 | .markdown-it h2 { 939 | font-size: 1.5em; 940 | } 941 | 942 | .markdown-it h3 { 943 | font-size: 1.25em; 944 | } 945 | 946 | .markdown-it h4 { 947 | font-size: 1em; 948 | } 949 | 950 | .markdown-it h5 { 951 | font-size: 0.875em; 952 | } 953 | 954 | .markdown-it h6 { 955 | font-size: 0.85em; 956 | color: #6a737d; 957 | } 958 | 959 | .markdown-it hr { 960 | padding: 0; 961 | height: 0; 962 | margin: 10px 0; 963 | overflow: hidden; 964 | background: transparent; 965 | border: 0; 966 | border-bottom: 1px solid #dfe2e5; 967 | width: 100%; 968 | } 969 | 970 | .markdown-it hr::before { 971 | display: table; 972 | content: ""; 973 | } 974 | 975 | .markdown-it hr::after { 976 | display: table; 977 | clear: both; 978 | content: ""; 979 | } 980 | 981 | .markdown-it img { 982 | border-style: none; 983 | max-width: 100%; 984 | box-sizing: content-box; 985 | background-color: #fff; 986 | margin-left: 50%; 987 | transform: translate(-50%, 0); 988 | -webkit-transform: translate(-50%, 0); 989 | } 990 | .markdown-it input { 991 | line-height: inherit; 992 | font: inherit; 993 | margin: 0; 994 | overflow: visible; 995 | } 996 | 997 | .markdown-it kbd { 998 | line-height: 10px; 999 | display: inline-block; 1000 | padding: 3px 5px; 1001 | line-height: 10px; 1002 | color: #444d56; 1003 | vertical-align: middle; 1004 | background-color: #fcfcfc; 1005 | border: solid 1px #c6cbd1; 1006 | border-bottom-color: #959da5; 1007 | border-radius: 3px; 1008 | box-shadow: inset 0 -1px 0 #959da5; 1009 | } 1010 | 1011 | .markdown-it pre { 1012 | word-wrap: normal; 1013 | padding: 16px; 1014 | overflow: auto; 1015 | line-height: 1.2; 1016 | background-color: #f6f8fa; 1017 | border-radius: 3px; 1018 | margin-top: 10px; 1019 | } 1020 | 1021 | .markdown-it pre code { 1022 | padding: 0; 1023 | margin: 0; 1024 | font-size: 0.85em; 1025 | word-break: normal; 1026 | white-space: pre; 1027 | background: transparent; 1028 | border: 0; 1029 | display: inline; 1030 | overflow: visible; 1031 | line-height: inherit; 1032 | word-wrap: normal; 1033 | } 1034 | 1035 | .markdown-it pre code::before, 1036 | .markdown-it pre code::after { 1037 | content: normal; 1038 | } 1039 | 1040 | .markdown-it strong { 1041 | font-weight: 600; 1042 | } 1043 | .markdown-it svg:not(:root) { 1044 | overflow: hidden; 1045 | } 1046 | 1047 | .markdown-it table { 1048 | border-spacing: 0; 1049 | border-collapse: collapse; 1050 | display: block; 1051 | width: 100%; 1052 | overflow: auto; 1053 | } 1054 | 1055 | .markdown-it table thead th { 1056 | background-color: #f6f8fa; 1057 | } 1058 | 1059 | .markdown-it table th { 1060 | font-weight: 600; 1061 | } 1062 | 1063 | .markdown-it table th, 1064 | .markdown-it table td { 1065 | padding: 6px 13px; 1066 | border: 1px solid #dfe2e5; 1067 | } 1068 | 1069 | .markdown-it table tr { 1070 | background-color: #fff; 1071 | border-top: 1px solid #c6cbd1; 1072 | } 1073 | 1074 | .markdown-it table tr:nth-child(2n) { 1075 | background-color: #f6f8fa; 1076 | } 1077 | 1078 | .markdown-it ul, 1079 | .markdown-it ol { 1080 | padding-left: 1.5em; 1081 | } 1082 | 1083 | .markdown-it ul { 1084 | list-style-type: square; 1085 | } 1086 | 1087 | .markdown-it ol.toc-nav { 1088 | list-style-type: circle; 1089 | } 1090 | /* markdown.css end */ 1091 | 1092 | /* highlight.css start */ 1093 | /*https://github.com/chriskempson/tomorrow-theme*/ 1094 | 1095 | $highlight_theme = hexo-config("highlight_theme") || "normal" 1096 | $line-height-code-block = 1.8 1097 | 1098 | if $highlight_theme == "geektutu" 1099 | $highlight-background = #f6f8fa 1100 | $highlight-current-line = #efefef 1101 | $highlight-selection = #d6d6d6 1102 | $highlight-foreground = #24292e 1103 | $highlight-comment = #6a737d 1104 | $highlight-red = #c82829 1105 | $highlight-orange = #e36209 1106 | $highlight-yellow = #eab700 1107 | $highlight-green = #718c00 1108 | $highlight-aqua = #6f42c1 1109 | $highlight-blue = #4271ae 1110 | $highlight-purple = #d73a49 1111 | 1112 | if $highlight_theme == "normal" 1113 | $highlight-background = #f7f7f7 1114 | $highlight-current-line = #efefef 1115 | $highlight-selection = #d6d6d6 1116 | $highlight-foreground = #4d4d4c 1117 | $highlight-comment = #8e908c 1118 | $highlight-red = #c82829 1119 | $highlight-orange = #f5871f 1120 | $highlight-yellow = #eab700 1121 | $highlight-green = #718c00 1122 | $highlight-aqua = #3e999f 1123 | $highlight-blue = #4271ae 1124 | $highlight-purple = #8959a8 1125 | 1126 | if $highlight_theme == "night" 1127 | $highlight-background = #1d1f21 1128 | $highlight-current-line = #282a2e 1129 | $highlight-selection = #373b41 1130 | $highlight-foreground = #c5c8c6 1131 | $highlight-comment = #969896 1132 | $highlight-red = #cc6666 1133 | $highlight-orange = #de935f 1134 | $highlight-yellow = #f0c674 1135 | $highlight-green = #b5bd68 1136 | $highlight-aqua = #8abeb7 1137 | $highlight-blue = #81a2be 1138 | $highlight-purple = #b294bb 1139 | 1140 | if $highlight_theme == "night yilia" 1141 | $highlight-background = #4d4d4d 1142 | $highlight-current-line = #393939 1143 | $highlight-selection = #515151 1144 | $highlight-foreground = #FFFFFF 1145 | $highlight-comment = #75715E 1146 | $highlight-red = #FD971F 1147 | $highlight-orange = #f99157 1148 | $highlight-yellow = #ffcc66 1149 | $highlight-green = #E6DB74 1150 | $highlight-aqua = #66cccc 1151 | $highlight-blue = #A6E22E 1152 | $highlight-purple = #F92672 1153 | 1154 | if $highlight_theme == "night eighties" 1155 | $highlight-background = #2d2d2d 1156 | $highlight-current-line = #393939 1157 | $highlight-selection = #515151 1158 | $highlight-foreground = #cccccc 1159 | $highlight-comment = #999999 1160 | $highlight-red = #f2777a 1161 | $highlight-orange = #f99157 1162 | $highlight-yellow = #ffcc66 1163 | $highlight-green = #99cc99 1164 | $highlight-aqua = #66cccc 1165 | $highlight-blue = #6699cc 1166 | $highlight-purple = #cc99cc 1167 | 1168 | if $highlight_theme == "night blue" 1169 | $highlight-background = #002451 1170 | $highlight-current-line = #00346e 1171 | $highlight-selection = #003f8e 1172 | $highlight-foreground = #ffffff 1173 | $highlight-comment = #7285b7 1174 | $highlight-red = #ff9da4 1175 | $highlight-orange = #ffc58f 1176 | $highlight-yellow = #ffeead 1177 | $highlight-green = #d1f1a9 1178 | $highlight-aqua = #99ffff 1179 | $highlight-blue = #bbdaff 1180 | $highlight-purple = #ebbbff 1181 | 1182 | if $highlight_theme == "night bright" 1183 | $highlight-background = #000000 1184 | $highlight-current-line = #2a2a2a 1185 | $highlight-selection = #424242 1186 | $highlight-foreground = #eaeaea 1187 | $highlight-comment = #969896 1188 | $highlight-red = #d54e53 1189 | $highlight-orange = #e78c45 1190 | $highlight-yellow = #e7c547 1191 | $highlight-green = #b9ca4a 1192 | $highlight-aqua = #70c0b1 1193 | $highlight-blue = #7aa6da 1194 | $highlight-purple = #c397d8 1195 | 1196 | 1197 | clearfix() 1198 | &:before 1199 | &:after 1200 | content: "" 1201 | display: table 1202 | &:after 1203 | clear: both 1204 | zoom: 1 if support-for-ie 1205 | 1206 | line-height = 1.6em 1207 | font-size = 14px 1208 | article-padding = 20px 1209 | color-border = #ddd 1210 | 1211 | 1212 | $code-font-size = 13px 1213 | $code-background = #eee 1214 | $code-foreground = #555 1215 | $code-border-radius = 4px 1216 | 1217 | 1218 | // Placeholder: $code-block 1219 | $code-block { 1220 | overflow: auto; 1221 | margin: 10px 0 20px 0; 1222 | padding: 15px; 1223 | font-size $code-font-size; 1224 | color: $highlight-foreground; 1225 | background: $highlight-background; 1226 | line-height: $line-height-code-block; 1227 | } 1228 | 1229 | /*pre, code { 1230 | font-family: $code-font-family; 1231 | }*/ 1232 | 1233 | /* 1234 | .post-container code { 1235 | padding: 2px 4px; 1236 | word-break: break-all; 1237 | color: $code-foreground; 1238 | background: $code-background; 1239 | border-radius: $code-border-radius; 1240 | font-size $code-font-size; 1241 | }*/ 1242 | 1243 | .post-container pre { 1244 | @extend $code-block; 1245 | border-radius: 3px; 1246 | 1247 | code { 1248 | padding: 0; 1249 | color: $highlight-foreground; 1250 | background: none; 1251 | text-shadow: none; 1252 | } 1253 | } 1254 | 1255 | .post-container .highlight { 1256 | @extend $code-block; 1257 | 1258 | pre { 1259 | border: none; 1260 | margin: 0; 1261 | padding: 1px; 1262 | } 1263 | 1264 | table { 1265 | margin: 0; 1266 | width: auto; 1267 | border: none; 1268 | } 1269 | 1270 | td { 1271 | border: none !important; 1272 | padding: 0; 1273 | } 1274 | 1275 | figcaption { 1276 | clearfix(); 1277 | font-size: 1em; 1278 | color: $highlight-foreground; 1279 | line-height: 1em; 1280 | margin-bottom: 1em; 1281 | 1282 | a { 1283 | float: right; 1284 | color: $highlight-foreground; 1285 | 1286 | &:hover { border-bottom-color: $highlight-foreground; } 1287 | } 1288 | } 1289 | 1290 | .gutter pre { 1291 | color: #666; 1292 | text-align: right; 1293 | padding-right: 20px; 1294 | } 1295 | 1296 | .line { height: 20px; } 1297 | } 1298 | 1299 | 1300 | .post-container .gist table { 1301 | width: auto; 1302 | 1303 | td { border: none; } 1304 | } 1305 | 1306 | .post-container pre { 1307 | 1308 | .comment { color: $highlight-comment; } 1309 | 1310 | .variable 1311 | .attribute 1312 | .tag 1313 | .regexp 1314 | .ruby .constant 1315 | .xml .tag .title 1316 | .xml .pi 1317 | .xml .doctype 1318 | .html .doctype 1319 | .css .id 1320 | .css .class 1321 | .css .pseudo { 1322 | color: $highlight-red; 1323 | } 1324 | 1325 | .number 1326 | .preprocessor 1327 | .built_in 1328 | .literal 1329 | .params 1330 | .constant 1331 | .command { 1332 | color: $highlight-orange; 1333 | } 1334 | 1335 | .ruby .class .title 1336 | .css .rules .attribute 1337 | .string 1338 | .value 1339 | .inheritance 1340 | .header 1341 | .ruby .symbol 1342 | .xml .cdata 1343 | .special 1344 | .number 1345 | .formula { 1346 | color: $highlight-green; 1347 | } 1348 | 1349 | .title 1350 | .css .hexcolor { 1351 | color: $highlight-aqua; 1352 | } 1353 | 1354 | .function 1355 | .python .decorator 1356 | .python .title 1357 | .ruby .function .title 1358 | .ruby .title .keyword 1359 | .perl .sub 1360 | .javascript .title 1361 | .coffeescript .title { 1362 | color: $highlight-blue; 1363 | } 1364 | 1365 | .keyword 1366 | .javascript .function { 1367 | color: $highlight-purple; 1368 | } 1369 | 1370 | } 1371 | /* highlight.css end */ 1372 | 1373 | /* geektutu.css start */ 1374 | body { 1375 | font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", "Monaco", monospace, Tahoma, STXihei, "华文细黑", STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, "宋体", Heiti, "黑体", sans-serif; 1376 | tab-size: 4; 1377 | } 1378 | a { 1379 | text-decoration: none; 1380 | color: #333; 1381 | } 1382 | .text-center { 1383 | text-align: center !important; 1384 | } 1385 | .text-left { 1386 | text-align: left !important; 1387 | } 1388 | .text-right { 1389 | text-align: right !important; 1390 | } 1391 | 1392 | .float-left { 1393 | float: left !important; 1394 | } 1395 | .float-right { 1396 | float: right !important; 1397 | } 1398 | 1399 | .no-text-decoration { 1400 | text-decoration: none !important; 1401 | } 1402 | 1403 | .padding-0 { 1404 | padding: 0 !important; 1405 | } 1406 | .hide { 1407 | display: none !important; 1408 | } 1409 | .box-shadow { 1410 | -webkit-box-shadow: 0 1px 3px rgba(26, 26, 26, .1); 1411 | box-shadow: 0 1px 3px rgba(26, 26, 26, .1); 1412 | border-radius: 2px; 1413 | } 1414 | 1415 | .bg-white { 1416 | background: white; 1417 | } 1418 | 1419 | /* global */ 1420 | body { 1421 | background-color: #f6f6f6; 1422 | } 1423 | main { 1424 | display: flex; 1425 | } 1426 | 1427 | .gkt-header-container, 1428 | .main-container { 1429 | margin-right: auto; 1430 | margin-left: auto; 1431 | padding-top: 20px; 1432 | padding-bottom: 30px; 1433 | overflow: hidden; 1434 | } 1435 | 1436 | .post-list { 1437 | line-height: 2.8em; 1438 | border-left: 4px solid #f9f9f9; 1439 | } 1440 | 1441 | .post-container { 1442 | background: white; 1443 | width: 100%; 1444 | max-width: 830px; 1445 | padding: 0 15px; 1446 | } 1447 | 1448 | .post-container > .col-xs-12 { 1449 | padding: 0; 1450 | } 1451 | 1452 | @media (max-width: 767px) { 1453 | .main-container { 1454 | padding-top: 0px; 1455 | } 1456 | } 1457 | 1458 | @media (min-width: 768px) { 1459 | .gkt-header-container, 1460 | .main-container { 1461 | width: 750px; 1462 | } 1463 | .post-container { 1464 | padding: 10px 30px !important; 1465 | } 1466 | .post-container article { 1467 | padding: 0 !important; 1468 | } 1469 | 1470 | .post-list { 1471 | margin-left: 30px; 1472 | } 1473 | } 1474 | 1475 | @media (min-width: 992px) { 1476 | .gkt-header-container, 1477 | .main-container { 1478 | width: 990px; 1479 | } 1480 | .post-container { 1481 | width: calc(100% - 320px); 1482 | } 1483 | } 1484 | @media (min-width: 1200px) { 1485 | .gkt-header-container, 1486 | .main-container { 1487 | width: 100%; 1488 | max-width: 1150px; 1489 | } 1490 | } 1491 | 1492 | .post-list ul { 1493 | padding-left: 0 !important; 1494 | } 1495 | 1496 | .post-list li { 1497 | list-style-type: none; 1498 | position: relative; 1499 | padding-left: 20px; 1500 | } 1501 | 1502 | .post-list a { 1503 | text-decoration: none; 1504 | } 1505 | 1506 | .post-list li:before { 1507 | position: absolute; 1508 | top: 50%; 1509 | left: -2px; 1510 | width: 10px; 1511 | height: 10px; 1512 | margin-top: -9px; 1513 | margin-left: -5px; 1514 | content: ' '; 1515 | border-radius: 50%; 1516 | background-color: #ddd; 1517 | } 1518 | 1519 | .post-list .post-item-parent { 1520 | margin-top: 20px; 1521 | } 1522 | 1523 | .post-list .post-item-parent a { 1524 | margin-top: -60px; 1525 | padding-top: 80px 1526 | } 1527 | 1528 | .post-list a { 1529 | color: #000000; 1530 | } 1531 | 1532 | .post-item-color-0:before { 1533 | background: #1abc9c !important; 1534 | } 1535 | 1536 | .post-item-color-1:before { 1537 | background: #3498db !important; 1538 | } 1539 | 1540 | .post-item-color-2:before { 1541 | background: #9b59b6 !important; 1542 | } 1543 | 1544 | .post-item-color-3:before { 1545 | background: #e67e22 !important; 1546 | } 1547 | 1548 | .post-item-color-4:before { 1549 | background: #e74c3c !important; 1550 | } 1551 | 1552 | .post-list .post-text-parent { 1553 | font-size: 20px; 1554 | font-weight: bold; 1555 | font-weight: bold; 1556 | color: #222; 1557 | } 1558 | 1559 | .post-list .post-item-title { 1560 | font-size: 16px; 1561 | transition-duration: .5s; 1562 | color: #333; 1563 | vertical-align: middle; 1564 | overflow: hidden; 1565 | } 1566 | 1567 | .post-list .post-item-title:hover { 1568 | color: #337ab7; 1569 | } 1570 | 1571 | .post-list .post-item-date { 1572 | margin-left: 2px; 1573 | color: hsla(0, 0%, 71%, .9); 1574 | font-size: .85em; 1575 | } 1576 | 1577 | .post-preview { 1578 | width: 100%; 1579 | margin-top: 15px; 1580 | margin-bottom: 15px; 1581 | box-sizing: border-box; 1582 | display: flex; 1583 | flex-direction: row; 1584 | height: max-content; 1585 | } 1586 | 1587 | .post-preview .text-gray { 1588 | color: #999999 !important; 1589 | } 1590 | 1591 | .post-preview .post-info { 1592 | flex: 1; 1593 | padding-left: 20px; 1594 | } 1595 | 1596 | .post-preview .post-img { 1597 | width: 100px; 1598 | background-size: contain; 1599 | background-repeat: no-repeat; 1600 | background-position: center; 1601 | } 1602 | 1603 | .post-preview .post-info-center { 1604 | position: relative; 1605 | top: 50%; 1606 | left: 50%; 1607 | transform: translate(-50%, -50%); 1608 | } 1609 | 1610 | .post-preview .post-info a { 1611 | cursor: pointer; 1612 | text-decoration: none; 1613 | } 1614 | 1615 | .post-preview .post-info .title { 1616 | color: #101010; 1617 | font-size: 1.2em; 1618 | } 1619 | 1620 | @media (min-width: 768px) { 1621 | .post-preview .post-img { 1622 | width: 120px; 1623 | } 1624 | } 1625 | 1626 | /* ************* 1627 | * Header * 1628 | ***************/ 1629 | .gkt-header { 1630 | background-color: #3e474f; 1631 | position: fixed; 1632 | top: 0; 1633 | z-index: 9999; 1634 | } 1635 | 1636 | .gkt-header>div { 1637 | height: 44px; 1638 | padding: 0; 1639 | line-height: 44px; 1640 | } 1641 | 1642 | .gkt-header img { 1643 | padding: 8px; 1644 | width: 44px; 1645 | margin-right: 6px; 1646 | } 1647 | 1648 | .gkt-header-title { 1649 | font-size: 20px; 1650 | color: rgba(255, 255, 255, 0.9); 1651 | } 1652 | 1653 | .gkt-header-nav li { 1654 | margin-bottom: 0; 1655 | } 1656 | 1657 | .gkt-header-nav>ul>li { 1658 | display: inline-block; 1659 | } 1660 | 1661 | .gkt-header-nav ul { 1662 | list-style: none; 1663 | } 1664 | 1665 | .gkt-header-nav a { 1666 | padding: 0 5px; 1667 | font-size: 18px; 1668 | color: #b2bbbd; 1669 | fill: #b2bbbd; 1670 | } 1671 | 1672 | .gkt-cate-name>a { 1673 | padding: 0 10px; 1674 | } 1675 | 1676 | .gkt-header a:hover, 1677 | .gkt-cate-name.active>a { 1678 | color: #ffffff; 1679 | } 1680 | 1681 | .gkt-sub-cate { 1682 | display: none; 1683 | position: absolute; 1684 | margin-top: 44px; 1685 | background: #fafafa; 1686 | min-width: 200px; 1687 | border: 1px solid #eaeaea; 1688 | border-radius: 3px; 1689 | -webkit-box-shadow: 0 4px 6px rgba(0, 0, 0, .175); 1690 | box-shadow: 0 4px 6px rgba(0, 0, 0, .15); 1691 | } 1692 | 1693 | .gkt-sub-cate-name>a { 1694 | color: #333; 1695 | padding: 5px 10px; 1696 | width: 100%; 1697 | font-size: 16px; 1698 | } 1699 | 1700 | .gkt-sub-cate-name a:hover, 1701 | .gkt-sub-cate-name.active>a { 1702 | display: block; 1703 | color: #ffffff; 1704 | background-color: rgba(62, 71, 79, .8) 1705 | } 1706 | 1707 | .gkt-sub-cate-name.active>a { 1708 | background-color: #3e474f; 1709 | } 1710 | 1711 | .gkt-sub-cate-name { 1712 | line-height: 30px; 1713 | } 1714 | 1715 | /* start sidebar */ 1716 | .gkt-sidebar { 1717 | background-color: transparent; 1718 | } 1719 | 1720 | .gkt-sidebar, 1721 | .gkt-sidebar>div { 1722 | width: 320px; 1723 | } 1724 | 1725 | .gkt-sidebar section { 1726 | margin-left: 15px; 1727 | background: white; 1728 | overflow: auto; 1729 | margin-bottom: 8px; 1730 | padding: 8px 10px; 1731 | -ms-overflow-style: none; 1732 | overflow: -moz-scrollbars-none; 1733 | } 1734 | 1735 | .gkt-sidebar section::-webkit-scrollbar { 1736 | width: 0 !important; 1737 | } 1738 | 1739 | .gkt-sidebar ul { 1740 | line-height: 1.35; 1741 | } 1742 | 1743 | .gkt-sidebar a { 1744 | color: rgba(0, 0, 0, 0.9); 1745 | font-size: 14px; 1746 | } 1747 | 1748 | .gkt-sidebar-active { 1749 | color: #337ab7 !important; 1750 | font-weight: bold; 1751 | } 1752 | 1753 | .gkt-sidebar-fixed { 1754 | position: fixed; 1755 | top: -70px; 1756 | margin-top: 0; 1757 | z-index: 1; 1758 | } 1759 | /* end sidebar */ 1760 | 1761 | /* post container */ 1762 | .post-container .post-item-date { 1763 | margin-left: 10px; 1764 | color: hsla(0, 0%, 71%, .9); 1765 | font-size: 0.85em; 1766 | } 1767 | 1768 | .post-container .series_links { 1769 | border: 1px solid #eaecef; 1770 | padding: 15px; 1771 | background-color: #fff8dc; 1772 | margin-bottom: 20px; 1773 | border-radius: 5px; 1774 | } 1775 | 1776 | .u-arrow-wrapper { 1777 | position: fixed; 1778 | width: 0; 1779 | left: 0; 1780 | top: 0; 1781 | right: 0; 1782 | bottom: 0; 1783 | } 1784 | 1785 | .u-arrow-wrapper a:hover i { 1786 | border-color: #333; 1787 | } 1788 | 1789 | .u-arrow-wrapper i { 1790 | display: inline-block; 1791 | width: 20px; 1792 | height: 20px; 1793 | border-top: 3px solid #eee; 1794 | border-right: 3px solid #eee; 1795 | cursor: pointer; 1796 | } 1797 | 1798 | .u-arrow-wrapper a { 1799 | height: 100vh; 1800 | line-height: 100vh; 1801 | width: 50px; 1802 | padding-left: 15px; 1803 | } 1804 | 1805 | .u-arrow-left { 1806 | transform: rotate(-135deg); 1807 | } 1808 | 1809 | .u-arrow-right { 1810 | transform: rotate(45deg); 1811 | } 1812 | /* post container */ 1813 | 1814 | /* gitalk-related */ 1815 | #gitalk-related.dis-wrapper { 1816 | font-size: 14px; 1817 | margin: 70px 0; 1818 | overflow: hidden; 1819 | padding-bottom: 10px; 1820 | } 1821 | 1822 | #gitalk-related * { 1823 | margin: 0; 1824 | padding: 0; 1825 | box-sizing: border-box; 1826 | text-decoration: none; 1827 | transform: none; 1828 | -webkit-transform: none; 1829 | } 1830 | 1831 | #gitalk-related .dis-divide { 1832 | border-top: 2px solid #e7e9ee; 1833 | width: 100%; 1834 | float: left; 1835 | padding: 5px 10px; 1836 | margin-top: 20px; 1837 | text-align: center; 1838 | } 1839 | 1840 | #gitalk-related .dis-item { 1841 | width: 50%; 1842 | float: left; 1843 | padding: 0px 10px; 1844 | margin-top: 20px; 1845 | height: 108px; 1846 | overflow: hidden; 1847 | } 1848 | 1849 | #gitalk-related .dis-item-title { 1850 | font-size: 16px; 1851 | color: #6190e8; 1852 | font-weight: 500; 1853 | max-height: 3em; 1854 | line-height: 1.5; 1855 | overflow: hidden; 1856 | } 1857 | 1858 | #gitalk-related .dis-item-des { 1859 | font-size: 0.85em; 1860 | } 1861 | 1862 | #gitalk-related .dis-divide a, 1863 | #gitalk-related .dis-item-des, 1864 | #gitalk-related .dis-item-user { 1865 | color: rgba(30, 55, 70, .4); 1866 | } 1867 | 1868 | #gitalk-related .dis-item-img { 1869 | width: 30px; 1870 | height: 30px; 1871 | margin-top: 3px; 1872 | } 1873 | 1874 | #gitalk-related .dis-item-content { 1875 | display: flex; 1876 | } 1877 | 1878 | #gitalk-related .dis-item-content>p { 1879 | padding-left: 10px; 1880 | color: #333; 1881 | line-height: 1.4em; 1882 | max-height: 4.2em; 1883 | overflow: hidden; 1884 | } 1885 | /* gitalk-related*/ 1886 | 1887 | /* highlight issue */ 1888 | .markdown-it .highlight table tr { 1889 | background-color: transparent;; 1890 | border-top: none; 1891 | } 1892 | .gkt-article-start + p > img { 1893 | width: 100%; 1894 | } 1895 | @media (min-width: 992px) { 1896 | .gkt-article-start + p > img { 1897 | min-height: 24rem; 1898 | object-fit: contain; 1899 | } 1900 | } 1901 | /* geektutu.css end */ 1902 | -------------------------------------------------------------------------------- /source/css/gitalk.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: octicons-link; 3 | src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff'); 4 | } 5 | 6 | .markdown-body { 7 | -ms-text-size-adjust: 100%; 8 | -webkit-text-size-adjust: 100%; 9 | line-height: 1.5; 10 | color: #24292e; 11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 12 | font-size: 16px; 13 | line-height: 1.5; 14 | word-wrap: break-word; 15 | } 16 | 17 | .markdown-body .pl-c { 18 | color: #6a737d; 19 | } 20 | 21 | .markdown-body .pl-c1, 22 | .markdown-body .pl-s .pl-v { 23 | color: #005cc5; 24 | } 25 | 26 | .markdown-body .pl-e, 27 | .markdown-body .pl-en { 28 | color: #6f42c1; 29 | } 30 | 31 | .markdown-body .pl-smi, 32 | .markdown-body .pl-s .pl-s1 { 33 | color: #24292e; 34 | } 35 | 36 | .markdown-body .pl-ent { 37 | color: #22863a; 38 | } 39 | 40 | .markdown-body .pl-k { 41 | color: #d73a49; 42 | } 43 | 44 | .markdown-body .pl-s, 45 | .markdown-body .pl-pds, 46 | .markdown-body .pl-s .pl-pse .pl-s1, 47 | .markdown-body .pl-sr, 48 | .markdown-body .pl-sr .pl-cce, 49 | .markdown-body .pl-sr .pl-sre, 50 | .markdown-body .pl-sr .pl-sra { 51 | color: #032f62; 52 | } 53 | 54 | .markdown-body .pl-v, 55 | .markdown-body .pl-smw { 56 | color: #e36209; 57 | } 58 | 59 | .markdown-body .pl-bu { 60 | color: #b31d28; 61 | } 62 | 63 | .markdown-body .pl-ii { 64 | color: #fafbfc; 65 | background-color: #b31d28; 66 | } 67 | 68 | .markdown-body .pl-c2 { 69 | color: #fafbfc; 70 | background-color: #d73a49; 71 | } 72 | 73 | .markdown-body .pl-c2::before { 74 | content: "^M"; 75 | } 76 | 77 | .markdown-body .pl-sr .pl-cce { 78 | font-weight: bold; 79 | color: #22863a; 80 | } 81 | 82 | .markdown-body .pl-ml { 83 | color: #735c0f; 84 | } 85 | 86 | .markdown-body .pl-mh, 87 | .markdown-body .pl-mh .pl-en, 88 | .markdown-body .pl-ms { 89 | font-weight: bold; 90 | color: #005cc5; 91 | } 92 | 93 | .markdown-body .pl-mi { 94 | font-style: italic; 95 | color: #24292e; 96 | } 97 | 98 | .markdown-body .pl-mb { 99 | font-weight: bold; 100 | color: #24292e; 101 | } 102 | 103 | .markdown-body .pl-md { 104 | color: #b31d28; 105 | background-color: #ffeef0; 106 | } 107 | 108 | .markdown-body .pl-mi1 { 109 | color: #22863a; 110 | background-color: #f0fff4; 111 | } 112 | 113 | .markdown-body .pl-mc { 114 | color: #e36209; 115 | background-color: #ffebda; 116 | } 117 | 118 | .markdown-body .pl-mi2 { 119 | color: #f6f8fa; 120 | background-color: #005cc5; 121 | } 122 | 123 | .markdown-body .pl-mdr { 124 | font-weight: bold; 125 | color: #6f42c1; 126 | } 127 | 128 | .markdown-body .pl-ba { 129 | color: #586069; 130 | } 131 | 132 | .markdown-body .pl-sg { 133 | color: #959da5; 134 | } 135 | 136 | .markdown-body .pl-corl { 137 | text-decoration: underline; 138 | color: #032f62; 139 | } 140 | 141 | .markdown-body .octicon { 142 | display: inline-block; 143 | vertical-align: text-top; 144 | fill: currentColor; 145 | } 146 | 147 | .markdown-body a { 148 | background-color: transparent; 149 | -webkit-text-decoration-skip: objects; 150 | } 151 | 152 | .markdown-body a:active, 153 | .markdown-body a:hover { 154 | outline-width: 0; 155 | } 156 | 157 | .markdown-body strong { 158 | font-weight: inherit; 159 | } 160 | 161 | .markdown-body strong { 162 | font-weight: bolder; 163 | } 164 | 165 | .markdown-body h1 { 166 | font-size: 2em; 167 | margin: 0.67em 0; 168 | } 169 | 170 | .markdown-body img { 171 | border-style: none; 172 | } 173 | 174 | .markdown-body svg:not(:root) { 175 | overflow: hidden; 176 | } 177 | 178 | .markdown-body code, 179 | .markdown-body kbd, 180 | .markdown-body pre { 181 | font-family: monospace, monospace; 182 | font-size: 1em; 183 | } 184 | 185 | .markdown-body hr { 186 | -webkit-box-sizing: content-box; 187 | box-sizing: content-box; 188 | height: 0; 189 | overflow: visible; 190 | } 191 | 192 | .markdown-body input { 193 | font: inherit; 194 | margin: 0; 195 | } 196 | 197 | .markdown-body input { 198 | overflow: visible; 199 | } 200 | 201 | .markdown-body [type="checkbox"] { 202 | -webkit-box-sizing: border-box; 203 | box-sizing: border-box; 204 | padding: 0; 205 | } 206 | 207 | .markdown-body * { 208 | -webkit-box-sizing: border-box; 209 | box-sizing: border-box; 210 | } 211 | 212 | .markdown-body input { 213 | font-family: inherit; 214 | font-size: inherit; 215 | line-height: inherit; 216 | } 217 | 218 | .markdown-body a { 219 | color: #0366d6; 220 | text-decoration: none; 221 | } 222 | 223 | .markdown-body a:hover { 224 | text-decoration: underline; 225 | } 226 | 227 | .markdown-body strong { 228 | font-weight: 600; 229 | } 230 | 231 | .markdown-body hr { 232 | height: 0; 233 | margin: 15px 0; 234 | overflow: hidden; 235 | background: transparent; 236 | border: 0; 237 | border-bottom: 1px solid #dfe2e5; 238 | } 239 | 240 | .markdown-body hr::before { 241 | display: table; 242 | content: ""; 243 | } 244 | 245 | .markdown-body hr::after { 246 | display: table; 247 | clear: both; 248 | content: ""; 249 | } 250 | 251 | .markdown-body table { 252 | border-spacing: 0; 253 | border-collapse: collapse; 254 | } 255 | 256 | .markdown-body td, 257 | .markdown-body th { 258 | padding: 0; 259 | } 260 | 261 | .markdown-body h1, 262 | .markdown-body h2, 263 | .markdown-body h3, 264 | .markdown-body h4, 265 | .markdown-body h5, 266 | .markdown-body h6 { 267 | margin-top: 0; 268 | margin-bottom: 0; 269 | } 270 | 271 | .markdown-body h1 { 272 | font-size: 32px; 273 | font-weight: 600; 274 | } 275 | 276 | .markdown-body h2 { 277 | font-size: 24px; 278 | font-weight: 600; 279 | } 280 | 281 | .markdown-body h3 { 282 | font-size: 20px; 283 | font-weight: 600; 284 | } 285 | 286 | .markdown-body h4 { 287 | font-size: 16px; 288 | font-weight: 600; 289 | } 290 | 291 | .markdown-body h5 { 292 | font-size: 14px; 293 | font-weight: 600; 294 | } 295 | 296 | .markdown-body h6 { 297 | font-size: 12px; 298 | font-weight: 600; 299 | } 300 | 301 | .markdown-body p { 302 | margin-top: 0; 303 | margin-bottom: 10px; 304 | } 305 | 306 | .markdown-body blockquote { 307 | margin: 0; 308 | } 309 | 310 | .markdown-body ul, 311 | .markdown-body ol { 312 | padding-left: 0; 313 | margin-top: 0; 314 | margin-bottom: 0; 315 | } 316 | 317 | .markdown-body ol ol, 318 | .markdown-body ul ol { 319 | list-style-type: lower-roman; 320 | } 321 | 322 | .markdown-body ul ul ol, 323 | .markdown-body ul ol ol, 324 | .markdown-body ol ul ol, 325 | .markdown-body ol ol ol { 326 | list-style-type: lower-alpha; 327 | } 328 | 329 | .markdown-body dd { 330 | margin-left: 0; 331 | } 332 | 333 | .markdown-body code { 334 | font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 335 | font-size: 12px; 336 | } 337 | 338 | .markdown-body pre { 339 | margin-top: 0; 340 | margin-bottom: 0; 341 | font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 342 | } 343 | 344 | .markdown-body .octicon { 345 | vertical-align: text-bottom; 346 | } 347 | 348 | .markdown-body .pl-0 { 349 | padding-left: 0 !important; 350 | } 351 | 352 | .markdown-body .pl-1 { 353 | padding-left: 4px !important; 354 | } 355 | 356 | .markdown-body .pl-2 { 357 | padding-left: 8px !important; 358 | } 359 | 360 | .markdown-body .pl-3 { 361 | padding-left: 16px !important; 362 | } 363 | 364 | .markdown-body .pl-4 { 365 | padding-left: 24px !important; 366 | } 367 | 368 | .markdown-body .pl-5 { 369 | padding-left: 32px !important; 370 | } 371 | 372 | .markdown-body .pl-6 { 373 | padding-left: 40px !important; 374 | } 375 | 376 | .markdown-body::before { 377 | display: table; 378 | content: ""; 379 | } 380 | 381 | .markdown-body::after { 382 | display: table; 383 | clear: both; 384 | content: ""; 385 | } 386 | 387 | .markdown-body>*:first-child { 388 | margin-top: 0 !important; 389 | } 390 | 391 | .markdown-body>*:last-child { 392 | margin-bottom: 0 !important; 393 | } 394 | 395 | .markdown-body a:not([href]) { 396 | color: inherit; 397 | text-decoration: none; 398 | } 399 | 400 | .markdown-body .anchor { 401 | float: left; 402 | padding-right: 4px; 403 | margin-left: -20px; 404 | line-height: 1; 405 | } 406 | 407 | .markdown-body .anchor:focus { 408 | outline: none; 409 | } 410 | 411 | .markdown-body p, 412 | .markdown-body blockquote, 413 | .markdown-body ul, 414 | .markdown-body ol, 415 | .markdown-body dl, 416 | .markdown-body table, 417 | .markdown-body pre { 418 | margin-top: 0; 419 | margin-bottom: 16px; 420 | } 421 | 422 | .markdown-body hr { 423 | height: 0.25em; 424 | padding: 0; 425 | margin: 24px 0; 426 | background-color: #e1e4e8; 427 | border: 0; 428 | } 429 | 430 | .markdown-body blockquote { 431 | padding: 0 1em; 432 | color: #6a737d; 433 | border-left: 0.25em solid #dfe2e5; 434 | } 435 | 436 | .markdown-body blockquote>:first-child { 437 | margin-top: 0; 438 | } 439 | 440 | .markdown-body blockquote>:last-child { 441 | margin-bottom: 0; 442 | } 443 | 444 | .markdown-body kbd { 445 | display: inline-block; 446 | padding: 3px 5px; 447 | font-size: 11px; 448 | line-height: 10px; 449 | color: #444d56; 450 | vertical-align: middle; 451 | background-color: #fafbfc; 452 | border: solid 1px #c6cbd1; 453 | border-bottom-color: #959da5; 454 | border-radius: 3px; 455 | -webkit-box-shadow: inset 0 -1px 0 #959da5; 456 | box-shadow: inset 0 -1px 0 #959da5; 457 | } 458 | 459 | .markdown-body h1, 460 | .markdown-body h2, 461 | .markdown-body h3, 462 | .markdown-body h4, 463 | .markdown-body h5, 464 | .markdown-body h6 { 465 | margin-top: 24px; 466 | margin-bottom: 16px; 467 | font-weight: 600; 468 | line-height: 1.25; 469 | } 470 | 471 | .markdown-body h1 .octicon-link, 472 | .markdown-body h2 .octicon-link, 473 | .markdown-body h3 .octicon-link, 474 | .markdown-body h4 .octicon-link, 475 | .markdown-body h5 .octicon-link, 476 | .markdown-body h6 .octicon-link { 477 | color: #1b1f23; 478 | vertical-align: middle; 479 | visibility: hidden; 480 | } 481 | 482 | .markdown-body h1:hover .anchor, 483 | .markdown-body h2:hover .anchor, 484 | .markdown-body h3:hover .anchor, 485 | .markdown-body h4:hover .anchor, 486 | .markdown-body h5:hover .anchor, 487 | .markdown-body h6:hover .anchor { 488 | text-decoration: none; 489 | } 490 | 491 | .markdown-body h1:hover .anchor .octicon-link, 492 | .markdown-body h2:hover .anchor .octicon-link, 493 | .markdown-body h3:hover .anchor .octicon-link, 494 | .markdown-body h4:hover .anchor .octicon-link, 495 | .markdown-body h5:hover .anchor .octicon-link, 496 | .markdown-body h6:hover .anchor .octicon-link { 497 | visibility: visible; 498 | } 499 | 500 | .markdown-body h1 { 501 | padding-bottom: 0.3em; 502 | font-size: 2em; 503 | border-bottom: 1px solid #eaecef; 504 | } 505 | 506 | .markdown-body h2 { 507 | padding-bottom: 0.3em; 508 | font-size: 1.5em; 509 | border-bottom: 1px solid #eaecef; 510 | } 511 | 512 | .markdown-body h3 { 513 | font-size: 1.25em; 514 | } 515 | 516 | .markdown-body h4 { 517 | font-size: 1em; 518 | } 519 | 520 | .markdown-body h5 { 521 | font-size: 0.875em; 522 | } 523 | 524 | .markdown-body h6 { 525 | font-size: 0.85em; 526 | color: #6a737d; 527 | } 528 | 529 | .markdown-body ul, 530 | .markdown-body ol { 531 | padding-left: 2em; 532 | } 533 | 534 | .markdown-body ul ul, 535 | .markdown-body ul ol, 536 | .markdown-body ol ol, 537 | .markdown-body ol ul { 538 | margin-top: 0; 539 | margin-bottom: 0; 540 | } 541 | 542 | .markdown-body li>p { 543 | margin-top: 16px; 544 | } 545 | 546 | .markdown-body li+li { 547 | margin-top: 0.25em; 548 | } 549 | 550 | .markdown-body dl { 551 | padding: 0; 552 | } 553 | 554 | .markdown-body dl dt { 555 | padding: 0; 556 | margin-top: 16px; 557 | font-size: 1em; 558 | font-style: italic; 559 | font-weight: 600; 560 | } 561 | 562 | .markdown-body dl dd { 563 | padding: 0 16px; 564 | margin-bottom: 16px; 565 | } 566 | 567 | .markdown-body table { 568 | display: block; 569 | width: 100%; 570 | overflow: auto; 571 | } 572 | 573 | .markdown-body table th { 574 | font-weight: 600; 575 | } 576 | 577 | .markdown-body table th, 578 | .markdown-body table td { 579 | padding: 6px 13px; 580 | border: 1px solid #dfe2e5; 581 | } 582 | 583 | .markdown-body table tr { 584 | background-color: #fff; 585 | border-top: 1px solid #c6cbd1; 586 | } 587 | 588 | .markdown-body table tr:nth-child(2n) { 589 | background-color: #f6f8fa; 590 | } 591 | 592 | .markdown-body img { 593 | max-width: 100%; 594 | -webkit-box-sizing: content-box; 595 | box-sizing: content-box; 596 | background-color: #fff; 597 | } 598 | 599 | .markdown-body code { 600 | padding: 0; 601 | padding-top: 0.2em; 602 | padding-bottom: 0.2em; 603 | margin: 0; 604 | font-size: 85%; 605 | background-color: rgba(27,31,35,0.05); 606 | border-radius: 3px; 607 | } 608 | 609 | .markdown-body code::before, 610 | .markdown-body code::after { 611 | letter-spacing: -0.2em; 612 | content: "\A0"; 613 | } 614 | 615 | .markdown-body pre { 616 | word-wrap: normal; 617 | } 618 | 619 | .markdown-body pre>code { 620 | padding: 0; 621 | margin: 0; 622 | font-size: 100%; 623 | word-break: normal; 624 | white-space: pre; 625 | background: transparent; 626 | border: 0; 627 | } 628 | 629 | .markdown-body .highlight { 630 | margin-bottom: 16px; 631 | } 632 | 633 | .markdown-body .highlight pre { 634 | margin-bottom: 0; 635 | word-break: normal; 636 | } 637 | 638 | .markdown-body .highlight pre, 639 | .markdown-body pre { 640 | padding: 16px; 641 | overflow: auto; 642 | font-size: 85%; 643 | line-height: 1.45; 644 | background-color: #f6f8fa; 645 | border-radius: 3px; 646 | } 647 | 648 | .markdown-body pre code { 649 | display: inline; 650 | max-width: auto; 651 | padding: 0; 652 | margin: 0; 653 | overflow: visible; 654 | line-height: inherit; 655 | word-wrap: normal; 656 | background-color: transparent; 657 | border: 0; 658 | } 659 | 660 | .markdown-body pre code::before, 661 | .markdown-body pre code::after { 662 | content: normal; 663 | } 664 | 665 | .markdown-body .full-commit .btn-outline:not(:disabled):hover { 666 | color: #005cc5; 667 | border-color: #005cc5; 668 | } 669 | 670 | .markdown-body kbd { 671 | display: inline-block; 672 | padding: 3px 5px; 673 | font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; 674 | line-height: 10px; 675 | color: #444d56; 676 | vertical-align: middle; 677 | background-color: #fafbfc; 678 | border: solid 1px #d1d5da; 679 | border-bottom-color: #c6cbd1; 680 | border-radius: 3px; 681 | -webkit-box-shadow: inset 0 -1px 0 #c6cbd1; 682 | box-shadow: inset 0 -1px 0 #c6cbd1; 683 | } 684 | 685 | .markdown-body :checked+.radio-label { 686 | position: relative; 687 | z-index: 1; 688 | border-color: #0366d6; 689 | } 690 | 691 | .markdown-body .task-list-item { 692 | list-style-type: none; 693 | } 694 | 695 | .markdown-body .task-list-item+.task-list-item { 696 | margin-top: 3px; 697 | } 698 | 699 | .markdown-body .task-list-item input { 700 | margin: 0 0.2em 0.25em -1.6em; 701 | vertical-align: middle; 702 | } 703 | 704 | .markdown-body hr { 705 | border-bottom-color: #eee; 706 | } 707 | /* variables */ 708 | /* functions & mixins */ 709 | /* variables - calculated */ 710 | /* styles */ 711 | .gt-container { 712 | -webkit-box-sizing: border-box; 713 | box-sizing: border-box; 714 | font-size: 16px; 715 | /* loader */ 716 | /* error */ 717 | /* initing */ 718 | /* no int */ 719 | /* link */ 720 | /* meta */ 721 | /* popup */ 722 | /* header */ 723 | /* comments */ 724 | /* comment */ 725 | } 726 | .gt-container * { 727 | -webkit-box-sizing: border-box; 728 | box-sizing: border-box; 729 | } 730 | .gt-container a { 731 | color: #6190e8; 732 | } 733 | .gt-container a:hover { 734 | color: #81a6ed; 735 | border-color: #81a6ed; 736 | } 737 | .gt-container a.is--active { 738 | color: #333; 739 | cursor: default !important; 740 | } 741 | .gt-container a.is--active:hover { 742 | color: #333; 743 | } 744 | .gt-container .hide { 745 | display: none !important; 746 | } 747 | .gt-container .gt-svg { 748 | display: inline-block; 749 | width: 1em; 750 | height: 1em; 751 | vertical-align: sub; 752 | } 753 | .gt-container .gt-svg svg { 754 | width: 100%; 755 | height: 100%; 756 | fill: #6190e8; 757 | } 758 | .gt-container .gt-ico { 759 | display: inline-block; 760 | } 761 | .gt-container .gt-ico-text { 762 | margin-left: 0.3125em; 763 | } 764 | .gt-container .gt-ico-github { 765 | width: 100%; 766 | height: 100%; 767 | } 768 | .gt-container .gt-ico-github .gt-svg { 769 | width: 100%; 770 | height: 100%; 771 | } 772 | .gt-container .gt-ico-github svg { 773 | fill: inherit; 774 | } 775 | .gt-container .gt-spinner { 776 | position: relative; 777 | } 778 | .gt-container .gt-spinner::before { 779 | content: ''; 780 | -webkit-box-sizing: border-box; 781 | box-sizing: border-box; 782 | position: absolute; 783 | top: 3px; 784 | width: 0.75em; 785 | height: 0.75em; 786 | margin-top: -0.1875em; 787 | margin-left: -0.375em; 788 | border-radius: 50%; 789 | border: 1px solid #fff; 790 | border-top-color: #6190e8; 791 | -webkit-animation: gt-kf-rotate 0.6s linear infinite; 792 | animation: gt-kf-rotate 0.6s linear infinite; 793 | } 794 | .gt-container .gt-loader { 795 | position: relative; 796 | border: 1px solid #999; 797 | -webkit-animation: ease gt-kf-rotate 1.5s infinite; 798 | animation: ease gt-kf-rotate 1.5s infinite; 799 | display: inline-block; 800 | font-style: normal; 801 | width: 1.75em; 802 | height: 1.75em; 803 | line-height: 1.75em; 804 | border-radius: 50%; 805 | } 806 | .gt-container .gt-loader:before { 807 | content: ''; 808 | position: absolute; 809 | display: block; 810 | top: 0; 811 | left: 50%; 812 | margin-top: -0.1875em; 813 | margin-left: -0.1875em; 814 | width: 0.375em; 815 | height: 0.375em; 816 | background-color: #999; 817 | border-radius: 50%; 818 | } 819 | .gt-container .gt-avatar { 820 | display: inline-block; 821 | width: 3.125em; 822 | height: 3.125em; 823 | } 824 | @media (max-width: 479px) { 825 | .gt-container .gt-avatar { 826 | width: 2em; 827 | height: 2em; 828 | } 829 | } 830 | .gt-container .gt-avatar img { 831 | width: 100%; 832 | height: auto; 833 | border-radius: 3px; 834 | } 835 | .gt-container .gt-avatar-github { 836 | width: 3em; 837 | height: 3em; 838 | cursor: pointer; 839 | } 840 | @media (max-width: 479px) { 841 | .gt-container .gt-avatar-github { 842 | width: 1.875em; 843 | height: 1.875em; 844 | } 845 | } 846 | .gt-container .gt-btn { 847 | padding: 0.75em 1.25em; 848 | display: inline-block; 849 | line-height: 1; 850 | text-decoration: none; 851 | white-space: nowrap; 852 | cursor: pointer; 853 | border: 1px solid #6190e8; 854 | border-radius: 5px; 855 | background-color: #6190e8; 856 | color: #fff; 857 | outline: none; 858 | font-size: 0.75em; 859 | } 860 | .gt-container .gt-btn-text { 861 | font-weight: 400; 862 | } 863 | .gt-container .gt-btn-loading { 864 | position: relative; 865 | margin-left: 0.5em; 866 | display: inline-block; 867 | width: 0.75em; 868 | height: 1em; 869 | vertical-align: top; 870 | } 871 | .gt-container .gt-btn.is--disable { 872 | cursor: not-allowed; 873 | opacity: 0.5; 874 | } 875 | .gt-container .gt-btn-login { 876 | margin-right: 0; 877 | } 878 | .gt-container .gt-btn-preview { 879 | background-color: #fff; 880 | color: #6190e8; 881 | } 882 | .gt-container .gt-btn-preview:hover { 883 | background-color: #f2f2f2; 884 | border-color: #81a6ed; 885 | } 886 | .gt-container .gt-btn-public:hover { 887 | background-color: #81a6ed; 888 | border-color: #81a6ed; 889 | } 890 | .gt-container .gt-error { 891 | text-align: center; 892 | margin: 0.625em; 893 | color: #ff3860; 894 | } 895 | .gt-container .gt-initing { 896 | padding: 1.25em 0; 897 | text-align: center; 898 | } 899 | .gt-container .gt-initing-text { 900 | margin: 0.625em auto; 901 | font-size: 92%; 902 | } 903 | .gt-container .gt-no-init { 904 | padding: 1.25em 0; 905 | text-align: center; 906 | } 907 | .gt-container .gt-link { 908 | border-bottom: 1px dotted #6190e8; 909 | } 910 | .gt-container .gt-link-counts, 911 | .gt-container .gt-link-project { 912 | text-decoration: none; 913 | } 914 | .gt-container .gt-meta { 915 | margin: 1.25em 0; 916 | padding: 1em 0; 917 | position: relative; 918 | border-bottom: 1px solid #e9e9e9; 919 | font-size: 1em; 920 | position: relative; 921 | z-index: 10; 922 | } 923 | .gt-container .gt-meta:before, 924 | .gt-container .gt-meta:after { 925 | content: " "; 926 | display: table; 927 | } 928 | .gt-container .gt-meta:after { 929 | clear: both; 930 | } 931 | .gt-container .gt-counts { 932 | margin: 0 0.625em 0 0; 933 | } 934 | .gt-container .gt-user { 935 | float: right; 936 | margin: 0; 937 | font-size: 92%; 938 | } 939 | .gt-container .gt-user-pic { 940 | width: 16px; 941 | height: 16px; 942 | vertical-align: top; 943 | margin-right: 0.5em; 944 | } 945 | .gt-container .gt-user-inner { 946 | display: inline-block; 947 | cursor: pointer; 948 | } 949 | .gt-container .gt-user .gt-ico { 950 | margin: 0 0 0 0.3125em; 951 | } 952 | .gt-container .gt-user .gt-ico svg { 953 | fill: inherit; 954 | } 955 | .gt-container .gt-user .is--poping .gt-ico svg { 956 | fill: #6190e8; 957 | } 958 | .gt-container .gt-version { 959 | color: #a1a1a1; 960 | margin-left: 0.375em; 961 | } 962 | .gt-container .gt-copyright { 963 | margin: 0 0.9375em 0.5em; 964 | border-top: 1px solid #e9e9e9; 965 | padding-top: 0.5em; 966 | } 967 | .gt-container .gt-popup { 968 | position: absolute; 969 | right: 0; 970 | top: 2.375em; 971 | background: #fff; 972 | display: inline-block; 973 | border: 1px solid #e9e9e9; 974 | padding: 0.625em 0; 975 | font-size: 0.875em; 976 | letter-spacing: 0.5px; 977 | } 978 | .gt-container .gt-popup .gt-action { 979 | cursor: pointer; 980 | display: block; 981 | margin: 0.5em 0; 982 | padding: 0 1.125em; 983 | position: relative; 984 | text-decoration: none; 985 | } 986 | .gt-container .gt-popup .gt-action.is--active:before { 987 | content: ''; 988 | width: 0.25em; 989 | height: 0.25em; 990 | background: #6190e8; 991 | position: absolute; 992 | left: 0.5em; 993 | top: 0.4375em; 994 | } 995 | .gt-container .gt-header { 996 | position: relative; 997 | display: -webkit-box; 998 | display: -ms-flexbox; 999 | display: flex; 1000 | } 1001 | .gt-container .gt-header-comment { 1002 | -webkit-box-flex: 1; 1003 | -ms-flex: 1; 1004 | flex: 1; 1005 | margin-left: 1.25em; 1006 | } 1007 | @media (max-width: 479px) { 1008 | .gt-container .gt-header-comment { 1009 | margin-left: 0.875em; 1010 | } 1011 | } 1012 | .gt-container .gt-header-textarea { 1013 | padding: 0.75em; 1014 | display: block; 1015 | -webkit-box-sizing: border-box; 1016 | box-sizing: border-box; 1017 | width: 100%; 1018 | min-height: 5.125em; 1019 | max-height: 15em; 1020 | border-radius: 5px; 1021 | border: 1px solid rgba(0,0,0,0.1); 1022 | font-size: 0.875em; 1023 | word-wrap: break-word; 1024 | resize: vertical; 1025 | background-color: #f6f6f6; 1026 | outline: none; 1027 | -webkit-transition: all 0.25s ease; 1028 | transition: all 0.25s ease; 1029 | } 1030 | .gt-container .gt-header-textarea:hover { 1031 | background-color: #fbfbfb; 1032 | } 1033 | .gt-container .gt-header-preview { 1034 | padding: 0.75em; 1035 | border-radius: 5px; 1036 | border: 1px solid rgba(0,0,0,0.1); 1037 | background-color: #f6f6f6; 1038 | } 1039 | .gt-container .gt-header-controls { 1040 | position: relative; 1041 | margin: 0.75em 0 0; 1042 | } 1043 | .gt-container .gt-header-controls:before, 1044 | .gt-container .gt-header-controls:after { 1045 | content: " "; 1046 | display: table; 1047 | } 1048 | .gt-container .gt-header-controls:after { 1049 | clear: both; 1050 | } 1051 | @media (max-width: 479px) { 1052 | .gt-container .gt-header-controls { 1053 | margin: 0; 1054 | } 1055 | } 1056 | .gt-container .gt-header-controls-tip { 1057 | font-size: 0.875em; 1058 | color: #6190e8; 1059 | text-decoration: none; 1060 | vertical-align: sub; 1061 | } 1062 | @media (max-width: 479px) { 1063 | .gt-container .gt-header-controls-tip { 1064 | display: none; 1065 | } 1066 | } 1067 | .gt-container .gt-header-controls .gt-btn { 1068 | float: right; 1069 | margin-left: 1.25em; 1070 | } 1071 | @media (max-width: 479px) { 1072 | .gt-container .gt-header-controls .gt-btn { 1073 | float: none; 1074 | width: 100%; 1075 | margin: 0.75em 0 0; 1076 | } 1077 | } 1078 | .gt-container:after { 1079 | content: ''; 1080 | position: fixed; 1081 | bottom: 100%; 1082 | left: 0; 1083 | right: 0; 1084 | top: 0; 1085 | opacity: 0; 1086 | } 1087 | .gt-container.gt-input-focused { 1088 | position: relative; 1089 | } 1090 | .gt-container.gt-input-focused:after { 1091 | content: ''; 1092 | position: fixed; 1093 | bottom: 0%; 1094 | left: 0; 1095 | right: 0; 1096 | top: 0; 1097 | background: #000; 1098 | opacity: 0.6; 1099 | -webkit-transition: opacity 0.3s, bottom 0s; 1100 | transition: opacity 0.3s, bottom 0s; 1101 | z-index: 9999; 1102 | } 1103 | .gt-container.gt-input-focused .gt-header-comment { 1104 | z-index: 10000; 1105 | } 1106 | .gt-container .gt-comments { 1107 | padding-top: 1.25em; 1108 | } 1109 | .gt-container .gt-comments-null { 1110 | text-align: center; 1111 | } 1112 | .gt-container .gt-comments-controls { 1113 | margin: 1.25em 0; 1114 | text-align: center; 1115 | } 1116 | .gt-container .gt-comment { 1117 | position: relative; 1118 | padding: 0.625em 0; 1119 | display: -webkit-box; 1120 | display: -ms-flexbox; 1121 | display: flex; 1122 | } 1123 | .gt-container .gt-comment-content { 1124 | -webkit-box-flex: 1; 1125 | -ms-flex: 1; 1126 | flex: 1; 1127 | margin-left: 1.25em; 1128 | padding: 0.75em 1em; 1129 | background-color: #f9f9f9; 1130 | overflow: auto; 1131 | -webkit-transition: all ease 0.25s; 1132 | transition: all ease 0.25s; 1133 | } 1134 | .gt-container .gt-comment-content:hover { 1135 | -webkit-box-shadow: 0 0.625em 3.75em 0 #f4f4f4; 1136 | box-shadow: 0 0.625em 3.75em 0 #f4f4f4; 1137 | } 1138 | @media (max-width: 479px) { 1139 | .gt-container .gt-comment-content { 1140 | margin-left: 0.875em; 1141 | padding: 0.625em 0.75em; 1142 | } 1143 | } 1144 | .gt-container .gt-comment-header { 1145 | margin-bottom: 0.5em; 1146 | font-size: 0.875em; 1147 | position: relative; 1148 | } 1149 | .gt-container .gt-comment-block-1 { 1150 | float: right; 1151 | height: 1.375em; 1152 | width: 2em; 1153 | } 1154 | .gt-container .gt-comment-block-2 { 1155 | float: right; 1156 | height: 1.375em; 1157 | width: 4em; 1158 | } 1159 | .gt-container .gt-comment-username { 1160 | font-weight: 500; 1161 | color: #6190e8; 1162 | text-decoration: none; 1163 | } 1164 | .gt-container .gt-comment-username:hover { 1165 | text-decoration: underline; 1166 | } 1167 | .gt-container .gt-comment-text { 1168 | margin-left: 0.5em; 1169 | color: #a1a1a1; 1170 | } 1171 | .gt-container .gt-comment-date { 1172 | margin-left: 0.5em; 1173 | color: #a1a1a1; 1174 | } 1175 | .gt-container .gt-comment-like, 1176 | .gt-container .gt-comment-edit, 1177 | .gt-container .gt-comment-reply { 1178 | position: absolute; 1179 | height: 1.375em; 1180 | } 1181 | .gt-container .gt-comment-like:hover, 1182 | .gt-container .gt-comment-edit:hover, 1183 | .gt-container .gt-comment-reply:hover { 1184 | cursor: pointer; 1185 | } 1186 | .gt-container .gt-comment-like { 1187 | top: 0; 1188 | right: 2em; 1189 | } 1190 | .gt-container .gt-comment-edit, 1191 | .gt-container .gt-comment-reply { 1192 | top: 0; 1193 | right: 0; 1194 | } 1195 | .gt-container .gt-comment-body { 1196 | color: #333 !important; 1197 | } 1198 | .gt-container .gt-comment-body .email-hidden-toggle a { 1199 | display: inline-block; 1200 | height: 12px; 1201 | padding: 0 9px; 1202 | font-size: 12px; 1203 | font-weight: 600; 1204 | line-height: 6px; 1205 | color: #444d56; 1206 | text-decoration: none; 1207 | vertical-align: middle; 1208 | background: #dfe2e5; 1209 | border-radius: 1px; 1210 | } 1211 | .gt-container .gt-comment-body .email-hidden-toggle a:hover { 1212 | background-color: #c6cbd1; 1213 | } 1214 | .gt-container .gt-comment-body .email-hidden-reply { 1215 | display: none; 1216 | white-space: pre-wrap; 1217 | } 1218 | .gt-container .gt-comment-body .email-hidden-reply .email-signature-reply { 1219 | padding: 0 15px; 1220 | margin: 15px 0; 1221 | color: #586069; 1222 | border-left: 4px solid #dfe2e5; 1223 | } 1224 | .gt-container .gt-comment-body .email-hidden-reply.expanded { 1225 | display: block; 1226 | } 1227 | .gt-container .gt-comment-admin .gt-comment-content { 1228 | background-color: #f6f9fe; 1229 | } 1230 | @-webkit-keyframes gt-kf-rotate { 1231 | 0% { 1232 | -webkit-transform: rotate(0); 1233 | transform: rotate(0); 1234 | } 1235 | 100% { 1236 | -webkit-transform: rotate(360deg); 1237 | transform: rotate(360deg); 1238 | } 1239 | } 1240 | @keyframes gt-kf-rotate { 1241 | 0% { 1242 | -webkit-transform: rotate(0); 1243 | transform: rotate(0); 1244 | } 1245 | 100% { 1246 | -webkit-transform: rotate(360deg); 1247 | transform: rotate(360deg); 1248 | } 1249 | } 1250 | 1251 | /*# sourceMappingURL=gitalk.css.map*/ -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/source/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/source/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/source/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /source/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/source/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /source/icon/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutu/hexo-theme-geektutu/087a7e992143ee0db4bd69937bbdb61a6646c29b/source/icon/top.png -------------------------------------------------------------------------------- /source/js/qrious.min.js: -------------------------------------------------------------------------------- 1 | /*! QRious v4.0.2 | (C) 2017 Alasdair Mercer | GPL v3 License 2 | Based on jsqrencode | (C) 2010 tz@execpc.com | GPL v3 License 3 | */ 4 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.QRious=e()}(this,function(){"use strict";function t(t,e){var n;return"function"==typeof Object.create?n=Object.create(t):(s.prototype=t,n=new s,s.prototype=null),e&&i(!0,n,e),n}function e(e,n,s,r){var o=this;return"string"!=typeof e&&(r=s,s=n,n=e,e=null),"function"!=typeof n&&(r=s,s=n,n=function(){return o.apply(this,arguments)}),i(!1,n,o,r),n.prototype=t(o.prototype,s),n.prototype.constructor=n,n.class_=e||o.class_,n.super_=o,n}function i(t,e,i){for(var n,s,a=0,h=(i=o.call(arguments,2)).length;a>1&1,n=0;n0;e--)n[e]=n[e]?n[e-1]^_.EXPONENT[v._modN(_.LOG[n[e]]+t)]:n[e-1];n[0]=_.EXPONENT[v._modN(_.LOG[n[0]]+t)]}for(t=0;t<=i;t++)n[t]=_.LOG[n[t]]},_checkBadness:function(){var t,e,i,n,s,r=0,o=this._badness,a=this.buffer,h=this.width;for(s=0;sh*h;)u-=h*h,c++;for(r+=c*v.N4,n=0;n=o-2&&(t=o-2,s>9&&t--);var a=t;if(s>9){for(r[a+2]=0,r[a+3]=0;a--;)e=r[a],r[a+3]|=255&e<<4,r[a+2]=e>>4;r[2]|=255&t<<4,r[1]=t>>4,r[0]=64|t>>12}else{for(r[a+1]=0,r[a+2]=0;a--;)e=r[a],r[a+2]|=255&e<<4,r[a+1]=e>>4;r[1]|=255&t<<4,r[0]=64|t>>4}for(a=t+3-(s<10);a=5&&(i+=v.N1+n[e]-5);for(e=3;et||3*n[e-3]>=4*n[e]||3*n[e+3]>=4*n[e])&&(i+=v.N3);return i},_finish:function(){this._stringBuffer=this.buffer.slice();var t,e,i=0,n=3e4;for(e=0;e<8&&(this._applyMask(e),(t=this._checkBadness())>=1)1&n&&(s[r-1-e+8*r]=1,e<6?s[8+r*e]=1:s[8+r*(e+1)]=1);for(e=0;e<7;e++,n>>=1)1&n&&(s[8+r*(r-7+e)]=1,e?s[6-e+8*r]=1:s[7+8*r]=1)},_interleaveBlocks:function(){var t,e,i=this._dataBlock,n=this._ecc,s=this._eccBlock,r=0,o=this._calculateMaxLength(),a=this._neccBlock1,h=this._neccBlock2,f=this._stringBuffer;for(t=0;t1)for(t=u.BLOCK[n],i=s-7;;){for(e=s-7;e>t-3&&(this._addAlignment(e,i),!(e6)for(t=d.BLOCK[r-7],e=17,i=0;i<6;i++)for(n=0;n<3;n++,e--)1&(e>11?r>>e-12:t>>e)?(s[5-i+o*(2-n+o-11)]=1,s[2-n+o-11+o*(5-i)]=1):(this._setMask(5-i,2-n+o-11),this._setMask(2-n+o-11,5-i))},_isMasked:function(t,e){var i=v._getMaskBit(t,e);return 1===this._mask[i]},_pack:function(){var t,e,i,n=1,s=1,r=this.width,o=r-1,a=r-1,h=(this._dataBlock+this._eccBlock)*(this._neccBlock1+this._neccBlock2)+this._neccBlock2;for(e=0;ee&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,i+=t},_modN:function(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t},N1:3,N2:3,N3:40,N4:10}),p=v,m=f.extend({draw:function(){this.element.src=this.qrious.toDataURL()},reset:function(){this.element.src=""},resize:function(){var t=this.element;t.width=t.height=this.qrious.size}}),g=h.extend(function(t,e,i,n){this.name=t,this.modifiable=Boolean(e),this.defaultValue=i,this._valueTransformer=n},{transform:function(t){var e=this._valueTransformer;return"function"==typeof e?e(t,this):t}}),k=h.extend(null,{abs:function(t){return null!=t?Math.abs(t):null},hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},noop:function(){},toUpperCase:function(t){return null!=t?t.toUpperCase():null}}),w=h.extend(function(t){this.options={},t.forEach(function(t){this.options[t.name]=t},this)},{exists:function(t){return null!=this.options[t]},get:function(t,e){return w._get(this.options[t],e)},getAll:function(t){var e,i=this.options,n={};for(e in i)k.hasOwn(i,e)&&(n[e]=w._get(i[e],t));return n},init:function(t,e,i){"function"!=typeof i&&(i=k.noop);var n,s;for(n in this.options)k.hasOwn(this.options,n)&&(s=this.options[n],w._set(s,s.defaultValue,e),w._createAccessor(s,e,i));this._setAll(t,e,!0)},set:function(t,e,i){return this._set(t,e,i)},setAll:function(t,e){return this._setAll(t,e)},_set:function(t,e,i,n){var s=this.options[t];if(!s)throw new Error("Invalid option: "+t);if(!s.modifiable&&!n)throw new Error("Option cannot be modified: "+t);return w._set(s,e,i)},_setAll:function(t,e,i){if(!t)return!1;var n,s=!1;for(n in t)k.hasOwn(t,n)&&this._set(n,t[n],e,i)&&(s=!0);return s}},{_createAccessor:function(t,e,i){var n={get:function(){return w._get(t,e)}};t.modifiable&&(n.set=function(n){w._set(t,n,e)&&i(n,t)}),Object.defineProperty(e,t.name,n)},_get:function(t,e){return e["_"+t.name]},_set:function(t,e,i){var n="_"+t.name,s=i[n],r=t.transform(null!=e?e:t.defaultValue);return i[n]=r,r!==s}}),M=w,b=h.extend(function(){this._services={}},{getService:function(t){var e=this._services[t];if(!e)throw new Error("Service is not being managed with name: "+t);return e},setService:function(t,e){if(this._services[t])throw new Error("Service is already managed with name: "+t);e&&(this._services[t]=e)}}),B=new M([new g("background",!0,"white"),new g("backgroundAlpha",!0,1,k.abs),new g("element"),new g("foreground",!0,"black"),new g("foregroundAlpha",!0,1,k.abs),new g("level",!0,"L",k.toUpperCase),new g("mime",!0,"image/png"),new g("padding",!0,null,k.abs),new g("size",!0,100,k.abs),new g("value",!0,"")]),y=new b,O=h.extend(function(t){B.init(t,this,this.update.bind(this));var e=B.get("element",this),i=y.getService("element"),n=e&&i.isCanvas(e)?e:i.createCanvas(),s=e&&i.isImage(e)?e:i.createImage();this._canvasRenderer=new c(this,n,!0),this._imageRenderer=new m(this,s,s===e),this.update()},{get:function(){return B.getAll(this)},set:function(t){B.setAll(t,this)&&this.update()},toDataURL:function(t){return this.canvas.toDataURL(t||this.mime)},update:function(){var t=new p({level:this.level,value:this.value});this._canvasRenderer.render(t),this._imageRenderer.render(t)}},{use:function(t){y.setService(t.getName(),t)}});Object.defineProperties(O.prototype,{canvas:{get:function(){return this._canvasRenderer.getElement()}},image:{get:function(){return this._imageRenderer.getElement()}}});var A=O,L=h.extend({getName:function(){}}).extend({createCanvas:function(){},createImage:function(){},getName:function(){return"element"},isCanvas:function(t){},isImage:function(t){}}).extend({createCanvas:function(){return document.createElement("canvas")},createImage:function(){return document.createElement("img")},isCanvas:function(t){return t instanceof HTMLCanvasElement},isImage:function(t){return t instanceof HTMLImageElement}});return A.use(new L),A}); --------------------------------------------------------------------------------