diff --git a/.gitignore b/.gitignore index 26b5eab0b..063b0e4ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,7 @@ .DS_Store -.idea/ +Thumbs.db +db.json *.log -*.iml -yarn.lock -package-lock.json node_modules/ - -# Ignore optional external libraries -source/lib/* - -# Track internal libraries & Ignore unused verdors files -source/lib/font-awesome/less/ -source/lib/font-awesome/scss/ -!source/lib/font-awesome/* - -!source/lib/jquery/ - -source/lib/ua-parser-js/* -!source/lib/ua-parser-js/dist/ - -!source/lib/velocity/ +public/ +.deploy*/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 9591f0b23..74b71d1d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,30 @@ -language: node_js -#node_js: node -node_js: lts/* - +language: node_js # 设置语言 +node_js: stable # 设置相应的版本 cache: - directories: - - node_modules - -install: npm install - + directories: + - node_modules # 据说可以减少travis构建时间 +before_install: + - npm install -g hexo + - npm install -g hexo-cli +install: + - npm install # 安装hexo及插件 before_script: - - npm install -g gulp - -addons: - browserstack: - username: "ivannginx1" - access_key: - secure: "NutOhdgtUdBUXMPZhy8X1F1Jq+tan1LeNOV0FArBt15SNlxtNArqhiyTi4XnG9MPruX4306aGF2RBrKso+OiGNRdGtRGngH613Q0GWNtlC/boMqnI7fHqLIyCs6S12y2uA8PK4Ifxg9bZ0VtCTYYbMy+p1KvBM//L12vmtfdnby8z5Qvex3tB3dLoPOR50CKkINHJVDLm+iVRFrdz4/83oDsulZSRRGIaxu5taDWPIcp3fYZtre2Nc+RXcsyFDyjN7U0Hvr5tKBbloJxXEQEBv2xLkMOtp85nmCPD06s1Il8Wus1ux3raVsfUyaW5FpNX37Jeb5e00RQUM1wgU5m75H6qiGwDvQswbugJG0i/a2nNfsgVmbrSZdMnkHcx2Uxmrw4ejyEP5NSrJSBi05Ck1fQ4UsZ4Qkdf1fd04SI0LpLWt43eoNO/7rHKsQoP4LCX9gxKUuC075NEBLODyJ529RYfA6dKKwwH6o0ZbOgASmCoAWaM65g4+FHRnJcKL/Kj9ZWklQtRa7/ynlHaA65jefFS2lB8Ut6d3rXDDBih9mIrwV1uUaEH96xgAN42bgU/vY6FGzNkDOYZqj4YfsepDM0wbOsslFie7JZq7iFjsYvrXqLvYUMk37AZwQ2Sb6uH4tIT4Qw/4oZfDzA1En3/8HdZJ28nKW/lzjwMSqheIY=" + - npm install -g mocha + - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public +script: + - hexo cl # 清除 + - hexo g # 生成 +after_script: + - cd ./public + - git init + - git config user.name "BladeCode" # 修改成自己的github用户名 + - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 + - git add . + - git commit -m "update by Travis-CI" + - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token +branches: + only: + - dev # 只监测这个分支,一有动静就开始构建 +env: + global: + - GH_REF: github.com/BladeCode/BladeCode.github.io.git \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..80f46a893 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Jerry xu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index ac8019351..545862920 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,10 @@ -
+«NexT» is a high quality elegant Hexo theme. It is crafted from scratch, with love.
- -[![gitter-image]][gitter-url] -[![riot-image]][riot-url] -[![t-chat-image]][t-chat-url] -[![t-news-image]][t-news-url] -[![lang-image]][lang-url] -[![travis-image]][travis-url] -[![rel-image]][releases-url] -[![hexo-image]][hexo-url] -[![lic-image]][lic-url] - -## Live Preview - -* :heart_decoration: Muse scheme: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) -* :six_pointed_star: Mist scheme: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) -* :pisces: Pisces scheme: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) -* :gemini: Gemini scheme: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) - -More «NexT» examples [here](https://github.com/iissnan/hexo-theme-next/issues/119). - -## Installation - -Simplest way to install is by cloning whole repository: - - ```sh - $ cd hexo - $ git clone https://github.com/theme-next/hexo-theme-next themes/next - ``` - -Or you can see [detailed installation instructions][docs-installation-url] if you want any other variant. - -## Plugins - -In NexT config now you can find dependencies on each module which was moved to external repositories which can be found by [main organization link](https://github.com/theme-next). - -For example, you want to use `fancybox` in your site. Go to NexT config and see: - -```yml -# Fancybox -# Dependencies: https://github.com/theme-next/theme-next-fancybox -fancybox: false -``` - -Then turn on `fancybox` and go to «Dependencies» link with installation instructions of this module. - -### Exceptions - -If you use cdn for any plugins, you need to replace your cdn link. - -For example, you want to use `fancybox` and you configured a cdn link. Go to NexT config and see: - -```yml -vendors: - # ... - # Some contents... - # ... - fancybox: # Set or update fancybox cdn url. - fancybox_css: # Set or update fancybox cdn url. -``` - -Instead of defining [main organization link](https://github.com/theme-next) for updates. - -## Update - -You can update to latest master branch by the following command: - -```sh -$ cd themes/next -$ git pull -``` - -And if you see any error message during update (something like **«Commit your changes or stash them before you can merge»**), recommended to learn [Hexo data files][docs-data-files-url] feature.\ -Howbeit, you can bypass update errors by `Commit`, `Stash` or `Discard` local changes. See [here](https://stackoverflow.com/a/15745424/5861495) how to do it. - -**If you want to update from v5.1.x to v6.0.x, read [here][docs-update-5-1-x-url].** - -## Known Bugs - -For those who also encounter **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»**, please check your NPM version. - -* `> 3`: Still not work? Please remove `node_modules` directory and reinstall using `npm install`. -* `< 3`: Please add `hexo-util` explicitly via `npm install --save-dev hexo-util` to you site package deps. - -## Contributing - -Contribution is welcome, feel free to open an issue and fork. Waiting for your pull request. - -## Third party applications - -* :triangular_flag_on_post: HexoEditor - -[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg -[browser-url]: https://www.browserstack.com - -[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Add or improve translation in few seconds!" -[lang-url]: https://crwd.in/theme-next - -[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" -[gitter-url]: https://gitter.im/theme-next - -[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" -[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org - -[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" -[t-chat-url]: https://t.me/theme_next - -[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" -[t-news-url]: https://t.me/theme_next_news - -[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master -[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" - -[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg -[hexo-url]: http://hexo.io - -[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg -[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md - - -[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg - - -[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip -[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest -[releases-url]: https://github.com/theme-next/hexo-theme-next/releases -[tags-url]: https://github.com/theme-next/hexo-theme-next/tags -[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master - -[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md -[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/DATA-FILES.md -[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md +### Thanks +1. [Node](https://nodejs.org) +2. [Hexo](https://hexo.io) +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file diff --git a/_config.yml b/_config.yml index 7b3107c58..f9624c86c 100644 --- a/_config.yml +++ b/_config.yml @@ -1,973 +1,127 @@ -# --------------------------------------------------------------- -# Theme Core Configuration Settings -# --------------------------------------------------------------- - -# If false, merge configs from `_data/next.yml` into default configuration (rewrite). -# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. -# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. -# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. -override: false - -# Allow to cache content generation. Introduced in NexT v6.0.0. -cache: +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: BladeCode +subtitle: Life's a struggle! +description: +keywords: +author: Jerry xu +language: zh-CN +timezone: + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: https://www.incoder.org +root: / +permalink: :year/:month/:day/:title/ +permalink_defaults: + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: README.md + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: true # Open external links in new tab +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: enable: true - -# Redefine custom file paths. Introduced in NexT v6.0.2. -# If commented, will be used default custom file paths. - -# For example, you want to put your custom styles file -# outside theme directory in root `source/_data`, set -# `styles: source/_data/styles.styl` -#custom_file_path: - # Default paths: layout/_custom/* - #head: source/_data/head.swig - #header: source/_data/header.swig - #sidebar: source/_data/sidebar.swig - - # Default path: source/css/_variables/custom.styl - #variables: source/_data/variables.styl - # Default path: source/css/_mixins/custom.styl - #mixins: source/_data/mixins.styl - # Default path: source/css/_custom/custom.styl - #styles: source/_data/styles.styl - - -# --------------------------------------------------------------- -# Site Information Settings -# --------------------------------------------------------------- - -# To get or check favicons visit: https://realfavicongenerator.net -# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. - -# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. -# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. - -# For example, you put your favicons into `hexo-site/source/images` directory. -# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. -favicon: - small: /images/favicon-16x16-next.png - medium: /images/favicon-32x32-next.png - apple_touch_icon: /images/apple-touch-icon-next.png - safari_pinned_tab: /images/logo.svg - #android_manifest: /images/manifest.json - #ms_browserconfig: /images/browserconfig.xml - -# Set rss to false to disable feed link. -# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. -# Set rss to specific value if you have burned your feed already. -rss: - -footer: - # Specify the date when the site was setup. - # If not defined, current year will be used. - #since: 2015 - - # Icon between year and copyright info. - icon: - # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons - # `heart` is recommended with animation in red (#ff0000). - name: user - # If you want to animate the icon, set it to true. - animated: false - # Change the color of icon, using Hex Code. - color: "#808080" - - # If not defined, will be used `author` from Hexo main config. - copyright: - # ------------------------------------------------------------- - powered: - # Hexo link (Powered by Hexo). - enable: true - # Version info of Hexo after Hexo link (vX.X.X). - version: true - - theme: - # Theme & scheme info link (Theme - NexT.scheme). - enable: true - # Version info of NexT after scheme info (vX.X.X). - version: true - # ------------------------------------------------------------- - # Any custom text can be defined here. - #custom_text: Hosted by Coding Pages - -# --------------------------------------------------------------- -# SEO Settings -# --------------------------------------------------------------- - -# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. -# See: https://support.google.com/webmasters/answer/139066 -# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) -canonical: true - -# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. -seo: false - -# If true, will add site-subtitle to index page, added in main hexo config. -# subtitle: Subtitle -index_with_subtitle: false - - -# --------------------------------------------------------------- -# Menu Settings -# --------------------------------------------------------------- - -# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). -# Usage: `Key: /link/ || icon` -# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. -# Value before `||` delimeter is the target link. -# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. -menu: - home: / || home - #about: /about/ || user - #tags: /tags/ || tags - #categories: /categories/ || th - archives: /archives/ || archive - #schedule: /schedule/ || calendar - #sitemap: /sitemap.xml || sitemap - #commonweal: /404/ || heartbeat - -# Enable/Disable menu icons / item badges. -menu_settings: - icons: true - badges: false - -# --------------------------------------------------------------- -# Scheme Settings -# --------------------------------------------------------------- - -# Schemes -scheme: Muse -#scheme: Mist -#scheme: Pisces -#scheme: Gemini - - -# --------------------------------------------------------------- -# Sidebar Settings -# --------------------------------------------------------------- - -# Posts / Categories / Tags in sidebar. -site_state: true - -# Social Links. -# Usage: `Key: permalink || icon` -# Key is the link label showing to end users. -# Value before `||` delimeter is the target permalink. -# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. -#social: - #GitHub: https://github.com/yourname || github - #E-Mail: mailto:yourname@gmail.com || envelope - #Google: https://plus.google.com/yourname || google - #Twitter: https://twitter.com/yourname || twitter - #FB Page: https://www.facebook.com/yourname || facebook - #VK Group: https://vk.com/yourname || vk - #StackOverflow: https://stackoverflow.com/yourname || stack-overflow - #YouTube: https://youtube.com/yourname || youtube - #Instagram: https://instagram.com/yourname || instagram - #Skype: skype:yourname?call|chat || skype - -social_icons: - enable: true - icons_only: false - transition: false - # Dependencies: exturl: true in Tags Settings section below. - # To encrypt links above use https://www.base64encode.org - # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` - exturl: false - -# Follow me on GitHub banner in right-top corner. -# Usage: `permalink || title` -# Value before `||` delimeter is the target permalink. -# Value after `||` delimeter is the title and aria-label name. -#github_banner: https://github.com/yourname || Follow me on GitHub - -# Blog rolls -links_icon: link -links_title: Links -links_layout: block -#links_layout: inline -#links: - #Title: http://example.com/ - -# Sidebar Avatar -avatar: - # in theme directory(source/images): /images/avatar.gif - # in site directory(source/uploads): /uploads/avatar.gif - # You can also use other linking images. - url: #/images/avatar.gif - # If true, the avatar would be dispalyed in circle. - rounded: false - # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. - opacity: 1 - # If true, the avatar would be rotated with the cursor. - rotated: false - -# Table Of Contents in the Sidebar -toc: + line_number: true + auto_detect: false + tab_replace: + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Extensions +## Plugins: https://hexo.io/plugins/ + +# RSS订阅支持 +plugin: +- hexo-generator-feed +# Feed Atom +feed: + type: atom + path: atom.xml + limit: 20 + +## Themes: https://hexo.io/themes/ +theme: next + +# Deployment +## Docs: https://hexo.io/docs/deployment.html +deploy: +- type: git +- type: leancloud_counter_security_sync + repo: https://github.com/BladeCode/BladeCode.github.io.git + branch: master + +githubEmojis: enable: true + className: github-emoji + unicode: false + styles: + localEmojis: - # Automatically add list number to toc. - number: true - - # If true, all words will placed on next lines if header width longer then sidebar width. - wrap: false - -# Creative Commons 4.0 International License. -# http://creativecommons.org/ -# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero -#creative_commons: by-nc-sa -#creative_commons: - -sidebar: - # Sidebar Position, available value: left | right (only for Pisces | Gemini). - position: left - #position: right - - # Sidebar Display, available value (only for Muse | Mist): - # - post expand on posts automatically. Default. - # - always expand for all pages automatically - # - hide expand only when click on the sidebar toggle icon. - # - remove Totally remove sidebar including sidebar toggle. - display: post - #display: always - #display: hide - #display: remove - - # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). - offset: 12 - - # Back to top in sidebar (only for Pisces | Gemini). - b2t: false - - # Scroll percent label in b2t button. - scrollpercent: false - - # Enable sidebar on narrow view (only for Muse | Mist). - onmobile: false - - -# --------------------------------------------------------------- -# Post Settings -# --------------------------------------------------------------- - -# Automatically scroll page to section which is under mark. -scroll_to_more: true - -# Automatically saving scroll position on each post/page in cookies. -save_scroll: false - -# Automatically excerpt description in homepage as preamble text. -excerpt_description: true - -# Automatically Excerpt. Not recommend. -# Please use in the post to control excerpt accurately. -auto_excerpt: - enable: false - length: 150 - -# Post meta display settings -post_meta: - item_text: true - created_at: true - updated_at: - enabled: true - # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). - # And if post will edited in same day as created, edited time will show in popup title under created time label. - # If false show anyway, but if post edited in same day, show only edited time. - another_day: true - categories: true - -# Post wordcount display settings -# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +# hexo-symbols-count-time symbols_count_time: - separated_meta: true - item_text_post: true - item_text_total: false - awl: 4 - wpm: 275 - -codeblock: - # Manual define the border radius in codeblock - # Leave it empty for the default 1 - border_radius: - # Add copy button on codeblock - copy_button: - enable: false - # Show text copy result - show_result: false - -# Wechat Subscriber -#wechat_subscriber: - #enabled: true - #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg - #description: ex. subscribe to my blog by scanning my public wechat account - -# Reward -#reward_comment: Donate comment here -#wechatpay: /images/wechatpay.jpg -#alipay: /images/alipay.jpg -#bitcoin: /images/bitcoin.png - -# Related popular posts -# Dependencies: https://github.com/tea3/hexo-related-popular-posts -related_posts: - enable: false - title: # custom header, leave empty to use the default one - display_in_home: false - params: - maxCount: 5 - #PPMixingRate: 0.0 - #isDate: false - #isImage: false - #isExcerpt: false - -# Declare license on posts -post_copyright: - enable: false - license: CC BY-NC-SA 4.0 - -# Post edit -# Dependencies: https://github.com/hexojs/hexo-deployer-git -post_edit: - enable: false - url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. -# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. - - -# --------------------------------------------------------------- -# Misc Theme Settings -# --------------------------------------------------------------- - -# Reduce padding / margin indents on devices with narrow width. -mobile_layout_economy: false - -# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). -android_chrome_color: "#222" - -# Custom Logo. -# !!Only available for Default Scheme currently. -# Options: -# enabled: [true/false] - Replace with specific image -# image: url-of-image - Images's url -custom_logo: - enabled: false - image: - -# Code Highlight theme -# Available values: normal | night | night eighties | night blue | night bright -# https://github.com/chriskempson/tomorrow-theme -highlight_theme: normal - -# Enable "cheers" for archive page. -cheers_enabled: true - -# Manual define the max content width -# !!Only available for Gemini Scheme currently -# Leave it empty for the default 75% (suggest not less than 1000px) -#max_content_width: 1000px - -# Manual define the sidebar width -# !!Only available for Gemini Scheme currently -# Leave it empty for the default 240 -sidebar_width: - -# --------------------------------------------------------------- -# Font Settings -# - Find fonts on Google Fonts (https://www.google.com/fonts) -# - All fonts set here will have the following styles: -# light, light italic, normal, normal italic, bold, bold italic -# - Be aware that setting too much fonts will cause site running slowly -# - Introduce in 5.0.1 -# --------------------------------------------------------------- -# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 -# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): -# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS -# --------------------------------------------------------------- -font: - enable: false - - # Uri of fonts host. E.g. //fonts.googleapis.com (Default). - host: - - # Font options: - # `external: true` will load this font family from `host` above. - # `family: Times New Roman`. Without any quotes. - # `size: xx`. Use `px` as unit. - - # Global font settings used for all elements in . - global: - external: true - family: Lato - size: - - # Font settings for Headlines (H1, H2, H3, H4, H5, H6). - # Fallback to `global` font settings. - headings: - external: true - family: - size: - - # Font settings for posts. - # Fallback to `global` font settings. - posts: - external: true - family: - - # Font settings for Logo. - # Fallback to `global` font settings. - logo: - external: true - family: - size: - - # Font settings for and code blocks.
- codes:
- external: true
- family:
- size:
-
-
-# ---------------------------------------------------------------
-# Third Party Services Settings
-# ---------------------------------------------------------------
-
-# Math Equations Render Support
-math:
- enable: false
-
- # Default(true) will load mathjax/katex script on demand
- # That is it only render those page who has 'mathjax: true' in Front Matter.
- # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE.
- per_page: true
-
- engine: mathjax
- #engine: katex
-
- # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support.
- mathjax:
- # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China
- cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML
- # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org).
- #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
- # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com).
- #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML
- # For automatic detect latest version link to MathJax.js and get from Bootcss.
- #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML
-
- # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin)
- # needed to full Katex support.
- katex:
- # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China
- cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css
- # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China
- #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css
- # Bootcss, works great in China, but not so well in other region
- #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css
-
-# Han Support
-# Dependencies: https://github.com/theme-next/theme-next-han
-han: false
-
-# Pangu Support
-# Dependencies: https://github.com/theme-next/theme-next-pangu
-# For more information: https://github.com/vinta/pangu.js
-pangu: false
-
-# Swiftype Search API Key
-#swiftype_key:
-
-# Baidu Analytics ID
-#baidu_analytics:
-
-# Disqus
-disqus:
- enable: false
- shortname:
- count: true
- lazyload: false
-
-# Hypercomments
-#hypercomments_id:
-
-# changyan
-changyan:
- enable: false
- appid:
- appkey:
-
-
-# Valine.
-# You can get your appid and appkey from https://leancloud.cn
-# more info please open https://valine.js.org
-valine:
- enable: false
- appid: # your leancloud application appid
- appkey: # your leancloud application appkey
- notify: false # mail notifier , https://github.com/xCss/Valine/wiki
- verify: false # Verification code
- placeholder: Just go go # comment box placeholder
- avatar: mm # gravatar style
- guest_info: nick,mail,link # custom comment header
- pageSize: 10 # pagination size
-
-
-# Support for youyan comments system.
-# You can get your uid from http://www.uyan.cc
-#youyan_uid: your uid
-
-# Support for LiveRe comments system.
-# You can get your uid from https://livere.com/insight/myCode (General web site)
-#livere_uid: your uid
-
-# Gitment
-# Introduction: https://imsun.net/posts/gitment-introduction/
-gitment:
- enable: false
- mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway
- count: true # Show comments count in post meta area
- lazy: false # Comments lazy loading with a button
- cleanly: false # Hide 'Powered by ...' on footer, and more
- language: # Force language, or auto switch by theme
- github_user: # MUST HAVE, Your Github Username
- github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments
- client_id: # MUST HAVE, Github client id for the Gitment
- client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment
- proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect
- redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled
-
-# Baidu Share
-# Available value:
-# button | slide
-# Warning: Baidu Share does not support https.
-#baidushare:
-## type: button
-
-# Share
-# This plugin is more useful in China, make sure you known how to use it.
-# And you can find the use guide at official webiste: http://www.jiathis.com/.
-# Warning: JiaThis does not support https.
-#jiathis:
- ##uid: Get this uid from http://www.jiathis.com/
-
-#add_this_id:
-
-# NeedMoreShare2
-# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2
-# See: https://github.com/revir/need-more-share2
-# Also see: https://github.com/DzmVasileusky/needShareButton
-# iconStyle: default | box
-# boxForm: horizontal | vertical
-# position: top / middle / bottom + Left / Center / Right
-# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit,
-# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot,
-# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine,
-# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru
-needmoreshare2:
- enable: false
- postbottom:
- enable: false
- options:
- iconStyle: box
- boxForm: horizontal
- position: bottomCenter
- networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook
- float:
- enable: false
- options:
- iconStyle: box
- boxForm: horizontal
- position: middleRight
- networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook
-
-# Google Webmaster tools verification setting
-# See: https://www.google.com/webmasters/
-#google_site_verification:
-
-# Google Analytics
-#google_analytics:
-
-# Bing Webmaster tools verification setting
-# See: https://www.bing.com/webmaster/
-#bing_site_verification:
-
-# Yandex Webmaster tools verification setting
-# See: https://webmaster.yandex.ru/
-#yandex_site_verification:
-
-# CNZZ count
-#cnzz_siteid:
-
-# Application Insights
-# See https://azure.microsoft.com/en-us/services/application-insights/
-# application_insights:
-
-# Post widgets & FB/VK comments settings.
-# ---------------------------------------------------------------
-# Facebook SDK Support.
-# https://github.com/iissnan/hexo-theme-next/pull/410
-facebook_sdk:
- enable: false
- app_id: #
- fb_admin: #
- like_button: #true
- webmaster: #true
-
-# Facebook comments plugin
-# This plugin depends on Facebook SDK.
-# If facebook_sdk.enable is false, Facebook comments plugin is unavailable.
-facebook_comments_plugin:
- enable: false
- num_of_posts: 10 # min posts num is 1
- width: 100% # default width is 550px
- scheme: light # default scheme is light (light or dark)
-
-# VKontakte API Support.
-# To get your AppID visit https://vk.com/editapp?act=create
-vkontakte_api:
- enable: false
- app_id: #
- like: true
- comments: true
- num_of_posts: 10
-
-# Star rating support to each article.
-# To get your ID visit https://widgetpack.com
-rating:
- enable: false
- id: #
- color: fc6423
-# ---------------------------------------------------------------
-
-# Show number of visitors to each article.
-# You can visit https://leancloud.cn get AppID and AppKey.
-leancloud_visitors:
- enable: false
- app_id: #
- app_key: #
- # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
- # If you don't care about security in lc counter and just want to use it directly
- # (without hexo-leancloud-counter-security plugin), set the `security` to `false`.
- security: true
- betterPerformance: false
-
-# Another tool to show number of visitors to each article.
-# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId
-# visit https://firebase.google.com/docs/firestore/ to get more information about firestore
-firestore:
- enable: false
- collection: articles #required, a string collection name to access firestore database
- apiKey: #required
- projectId: #required
- bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill
-
-# Show Views/Visitors of the website/page with busuanzi.
-# Get more information on http://ibruce.info/2015/04/04/busuanzi/
-busuanzi_count:
- enable: false
- total_visitors: true
- total_visitors_icon: user
- total_views: true
- total_views_icon: eye
- post_views: true
- post_views_icon: eye
-
-
-# Tencent analytics ID
-# tencent_analytics:
-
-# Tencent MTA ID
-# tencent_mta:
-
-
-# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
-baidu_push: false
-
-# Google Calendar
-# Share your recent schedule to others via calendar page
-#
-# API Documentation:
-# https://developers.google.com/google-apps/calendar/v3/reference/events/list
-calendar:
- enable: false
- calendar_id:
- api_key:
- orderBy: startTime
- offsetMax: 24
- offsetMin: 4
- timeZone:
- showDeleted: false
- singleEvents: true
- maxResults: 250
-
-# Algolia Search
-# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md
-# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search
-algolia_search:
- enable: false
- hits:
- per_page: 10
- labels:
- input_placeholder: Search for Posts
- hits_empty: "We didn't find any results for the search: ${query}"
- hits_stats: "${hits} results found in ${time} ms"
-
-# Local search
-# Dependencies: https://github.com/theme-next/hexo-generator-searchdb
-local_search:
- enable: false
- # if auto, trigger search by changing input
- # if manual, trigger search by pressing enter key or search button
- trigger: auto
- # show top n results per article, show all results by setting to -1
- top_n_per_article: 1
- # unescape html strings to the readable one
- unescape: false
-
-# Bookmark Support
-# Dependencies: https://github.com/theme-next/theme-next-bookmark
-bookmark:
- enable: false
- # if auto
- # - save the reading position when closing the page
- # - or clicking the bookmark-icon
- # if manual, only save it by clicking the bookmark-icon
- save: auto
-
-
-# ---------------------------------------------------------------
-# Tags Settings
-# ---------------------------------------------------------------
-
-# External URL with BASE64 encrypt & decrypt.
-# Usage: {% exturl text url "title" %}
-# Alias: {% extlink text url "title" %}
-exturl: false
-
-# Note tag (bs-callout).
-note:
- # Note tag style values:
- # - simple bs-callout old alert style. Default.
- # - modern bs-callout new (v2-v3) alert style.
- # - flat flat callout style with background, like on Mozilla or StackOverflow.
- # - disabled disable all CSS styles import of note tag.
- style: simple
- icons: false
- border_radius: 3
- # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
- # Offset also applied to label tag variables. This option can work with disabled note tag.
- light_bg_offset: 0
-
-# Label tag.
-label: true
-
-# Tabs tag.
-tabs:
- enable: true
- transition:
- tabs: false
- labels: true
- border_radius: 0
-
-# Reading progress bar
-# Dependencies: https://github.com/theme-next/theme-next-reading-progress
-reading_progress:
- enable: false
- color: "#37c6c0"
- height: 2px
-
-
-#! ---------------------------------------------------------------
-#! DO NOT EDIT THE FOLLOWING SETTINGS
-#! UNLESS YOU KNOW WHAT YOU ARE DOING
-#! ---------------------------------------------------------------
-
-# Use velocity to animate everything.
-motion:
- enable: true
- async: false
- transition:
- # Transition variants:
- # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut
- # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut
- # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut
- # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut
- # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut
- # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut
- post_block: fadeIn
- post_header: slideDownIn
- post_body: slideDownIn
- coll_header: slideLeftIn
- # Only for Pisces | Gemini.
- sidebar: slideUpIn
-
-# Fancybox. There is support for old version 2 and new version 3.
-# Please, choose only any one variant, do not need to install both.
-# For install 2.x: https://github.com/theme-next/theme-next-fancybox
-# For install 3.x: https://github.com/theme-next/theme-next-fancybox3
-fancybox: false
-
-# Added switch option for separated repo in 6.0.0.
-# Dependencies: https://github.com/theme-next/theme-next-fastclick
-fastclick: false
-
-# Added switch option for separated repo in 6.0.0.
-# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload
-lazyload: false
-
-# Progress bar in the top during page loading.
-# Dependencies: https://github.com/theme-next/theme-next-pace
-pace: false
-# Themes list:
-#pace-theme-big-counter
-#pace-theme-bounce
-#pace-theme-barber-shop
-#pace-theme-center-atom
-#pace-theme-center-circle
-#pace-theme-center-radar
-#pace-theme-center-simple
-#pace-theme-corner-indicator
-#pace-theme-fill-left
-#pace-theme-flash
-#pace-theme-loading-bar
-#pace-theme-mac-osx
-#pace-theme-minimal
-# For example
-# pace_theme: pace-theme-center-simple
-pace_theme: pace-theme-minimal
-
-# Canvas-nest
-# Dependencies: https://github.com/theme-next/theme-next-canvas-nest
-canvas_nest: false
-
-# JavaScript 3D library.
-# Dependencies: https://github.com/theme-next/theme-next-three
-# three_waves
-three_waves: false
-# canvas_lines
-canvas_lines: false
-# canvas_sphere
-canvas_sphere: false
-
-# Only fit scheme Pisces
-# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon
-# Canvas-ribbon
-# size: The width of the ribbon.
-# alpha: The transparency of the ribbon.
-# zIndex: The display level of the ribbon.
-canvas_ribbon:
- enable: false
- size: 300
- alpha: 0.6
- zIndex: -1
-
-# Script Vendors.
-# Set a CDN address for the vendor you want to customize.
-# For example
-# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
-# Be aware that you should use the same version as internal ones to avoid potential problems.
-# Please use the https protocol of CDN files when you enable https on your site.
-vendors:
- # Internal path prefix. Please do not edit it.
- _internal: lib
-
- # Internal version: 2.1.3
- jquery:
-
- # Internal version: 2.1.5
- # See: http://fancyapps.com/fancybox/
- fancybox:
- fancybox_css:
-
- # Internal version: 1.0.6
- # See: https://github.com/ftlabs/fastclick
- fastclick:
-
- # Internal version: 1.9.7
- # See: https://github.com/tuupola/jquery_lazyload
- lazyload:
-
- # Internal version: 1.2.1
- # See: http://VelocityJS.org
- velocity:
-
- # Internal version: 1.2.1
- # See: http://VelocityJS.org
- velocity_ui:
-
- # Internal version: 0.7.9
- # See: https://faisalman.github.io/ua-parser-js/
- ua_parser:
-
- # Internal version: 4.6.2
- # See: http://fontawesome.io/
- fontawesome:
-
- # Internal version: 1
- # https://www.algolia.com
- algolia_instant_js:
- algolia_instant_css:
-
- # Internal version: 1.0.2
- # See: https://github.com/HubSpot/pace
- # Or use direct links below:
- # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js
- # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css
- pace:
- pace_css:
-
- # Internal version: 1.0.0
- # https://github.com/hustcc/canvas-nest.js
- canvas_nest:
-
- # three
- three:
-
- # three_waves
- # https://github.com/jjandxa/three_waves
- three_waves:
-
- # three_waves
- # https://github.com/jjandxa/canvas_lines
- canvas_lines:
-
- # three_waves
- # https://github.com/jjandxa/canvas_sphere
- canvas_sphere:
-
- # Internal version: 1.0.0
- # https://github.com/zproo/canvas-ribbon
- canvas_ribbon:
-
- # Internal version: 3.3.0
- # https://github.com/ethantw/Han
- Han:
-
- # Internal version: 3.3.0
- # https://github.com/vinta/pangu.js
- pangu:
-
- # needMoreShare2
- # https://github.com/revir/need-more-share2
- needmoreshare2_js:
- needmoreshare2_css:
-
- # bookmark
- # Internal version: 1.0.0
- # https://github.com/theme-next/theme-next-bookmark
- bookmark:
-
- # reading_progress
- # Internal version: 1.0
- # https://github.com/theme-next/theme-next-reading-progress
- # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js
- reading_progress:
-
- # valine comment
- # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js
- valine:
-
-
-# Assets
-css: css
-js: js
-images: images
+ symbols: true
+ time: true
+ total_symbols: true
+ total_time: true
+
+search:
+ path: search.xml
+ field: post
+ format: html
+ limit: 10000
+
+douban:
+ user: incoder
+ book:
+ title: '书中自有黄金屋'
+ quote: '只有学习才能让我快乐~'
+ movie:
+ title: '有人的地方,就有江湖'
+ quote: '时光追忆!'
+ game:
+ title: '那时候太年轻'
+ quote: '游戏可以重来,人生呢?'
+ timeout: 10000 # optional
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..9c98cd655
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3114 @@
+{
+ "name": "hexo-site",
+ "version": "0.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "JSONStream": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
+ "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
+ "requires": {
+ "jsonparse": "1.3.1",
+ "through": "2.3.8"
+ }
+ },
+ "a-sync-waterfall": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.0.tgz",
+ "integrity": "sha1-OOgxnXk3niRiiEW1O5ZyKyng5Hw="
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "requires": {
+ "mime-types": "2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "address": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
+ "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg=="
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "requires": {
+ "micromatch": "2.3.11",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "babel-eslint": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz",
+ "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "2.5.5",
+ "regenerator-runtime": "0.11.1"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
+ "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
+ }
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.4",
+ "lodash": "4.17.10"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.10",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "balloon-css": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-0.5.0.tgz",
+ "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M="
+ },
+ "basic-auth": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
+ "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "browser-fingerprint": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz",
+ "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "requires": {
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
+ }
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.4.0"
+ }
+ },
+ "cheerio": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
+ "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+ "requires": {
+ "css-select": "1.2.0",
+ "dom-serializer": "0.1.0",
+ "entities": "1.1.1",
+ "htmlparser2": "3.9.2",
+ "lodash.assignin": "4.2.0",
+ "lodash.bind": "4.2.1",
+ "lodash.defaults": "4.2.0",
+ "lodash.filter": "4.6.0",
+ "lodash.flatten": "4.4.0",
+ "lodash.foreach": "4.5.0",
+ "lodash.map": "4.6.0",
+ "lodash.merge": "4.6.1",
+ "lodash.pick": "4.4.0",
+ "lodash.reduce": "4.6.0",
+ "lodash.reject": "4.6.0",
+ "lodash.some": "4.6.0"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "requires": {
+ "anymatch": "1.3.2",
+ "async-each": "1.0.1",
+ "fsevents": "1.2.2",
+ "glob-parent": "2.0.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "2.0.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0"
+ }
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "command-exists": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz",
+ "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw=="
+ },
+ "compressible": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz",
+ "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
+ "compression": {
+ "version": "1.7.2",
+ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz",
+ "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
+ "requires": {
+ "accepts": "1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "2.0.13",
+ "debug": "2.6.9",
+ "on-headers": "1.0.1",
+ "safe-buffer": "5.1.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "connect": {
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+ "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.0",
+ "parseurl": "1.3.2",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "copy-to": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz",
+ "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU="
+ },
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cross-spawn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
+ "requires": {
+ "lru-cache": "4.1.2",
+ "which": "1.3.0"
+ }
+ },
+ "css-parse": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
+ "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs="
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.0",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0="
+ },
+ "cuid": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz",
+ "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=",
+ "requires": {
+ "browser-fingerprint": "0.0.1",
+ "core-js": "1.2.7",
+ "node-fingerprint": "0.0.2"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "default-user-agent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz",
+ "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=",
+ "requires": {
+ "os-name": "1.0.3"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "digest-header": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz",
+ "integrity": "sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y=",
+ "requires": {
+ "utility": "0.1.11"
+ },
+ "dependencies": {
+ "utility": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz",
+ "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=",
+ "requires": {
+ "address": "1.0.3"
+ }
+ }
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "requires": {
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
+ }
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ },
+ "dplayer": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz",
+ "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==",
+ "requires": {
+ "balloon-css": "0.5.0",
+ "promise-polyfill": "7.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "ejs": {
+ "version": "2.5.9",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz",
+ "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.3.1",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz",
+ "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==",
+ "optional": true,
+ "requires": {
+ "nan": "2.10.0",
+ "node-pre-gyp": "0.9.1"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "2.2.4"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.21",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ },
+ "minipass": {
+ "version": "2.2.4",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "2.2.4"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.21",
+ "sax": "1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.9.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.0",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.1.10",
+ "npmlog": "4.1.2",
+ "rc": "1.2.6",
+ "rimraf": "2.6.2",
+ "semver": "5.5.0",
+ "tar": "4.4.1"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.1.10",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.3"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "chownr": "1.0.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.2.4",
+ "minizlib": "1.1.0",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "gitment": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz",
+ "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=",
+ "requires": {
+ "mobx": "3.6.2"
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "optional": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "hexo": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz",
+ "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==",
+ "requires": {
+ "abbrev": "1.1.1",
+ "archy": "1.0.0",
+ "bluebird": "3.5.1",
+ "chalk": "2.4.1",
+ "cheerio": "0.22.0",
+ "hexo-cli": "1.1.0",
+ "hexo-front-matter": "0.2.3",
+ "hexo-fs": "0.2.3",
+ "hexo-i18n": "0.2.1",
+ "hexo-log": "0.2.0",
+ "hexo-util": "0.6.3",
+ "js-yaml": "3.11.0",
+ "lodash": "4.17.10",
+ "minimatch": "3.0.4",
+ "moment": "2.22.1",
+ "moment-timezone": "0.5.17",
+ "nunjucks": "3.1.2",
+ "pretty-hrtime": "1.0.3",
+ "resolve": "1.7.1",
+ "strip-ansi": "4.0.0",
+ "strip-indent": "2.0.0",
+ "swig-extras": "0.0.1",
+ "swig-templates": "2.0.2",
+ "text-table": "0.2.0",
+ "tildify": "1.2.0",
+ "titlecase": "1.1.2",
+ "warehouse": "2.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "hexo-cli": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz",
+ "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==",
+ "requires": {
+ "abbrev": "1.1.1",
+ "bluebird": "3.5.1",
+ "chalk": "1.1.3",
+ "command-exists": "1.2.6",
+ "hexo-fs": "0.2.3",
+ "hexo-log": "0.2.0",
+ "hexo-util": "0.6.3",
+ "minimist": "1.2.0",
+ "object-assign": "4.1.1",
+ "resolve": "1.7.1",
+ "tildify": "1.2.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "hexo-bunyan": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz",
+ "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==",
+ "requires": {
+ "moment": "2.22.1",
+ "mv": "2.1.1",
+ "safe-json-stringify": "1.1.0"
+ }
+ },
+ "hexo-deployer-git": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz",
+ "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==",
+ "requires": {
+ "babel-eslint": "7.2.3",
+ "bluebird": "3.5.1",
+ "chalk": "1.1.3",
+ "hexo-fs": "0.2.3",
+ "hexo-util": "0.6.3",
+ "moment": "2.22.1",
+ "swig": "1.4.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.1.34",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
+ "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "swig": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz",
+ "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=",
+ "requires": {
+ "optimist": "0.6.1",
+ "uglify-js": "2.4.24"
+ }
+ },
+ "uglify-js": {
+ "version": "2.4.24",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
+ "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=",
+ "requires": {
+ "async": "0.2.10",
+ "source-map": "0.1.34",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.5.4"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ },
+ "yargs": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
+ "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=",
+ "requires": {
+ "camelcase": "1.2.1",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0",
+ "wordwrap": "0.0.2"
+ }
+ }
+ }
+ },
+ "hexo-douban": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/hexo-douban/-/hexo-douban-0.2.16.tgz",
+ "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==",
+ "requires": {
+ "ejs": "2.5.6",
+ "hexo-fs": "0.2.3",
+ "hexo-i18n": "0.2.1",
+ "hexo-log": "0.2.0",
+ "path": "0.12.7",
+ "urllib-sync": "1.1.4",
+ "xmldom": "0.1.27",
+ "xpath": "0.0.24"
+ },
+ "dependencies": {
+ "ejs": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz",
+ "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg="
+ }
+ }
+ },
+ "hexo-front-matter": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz",
+ "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=",
+ "requires": {
+ "js-yaml": "3.11.0"
+ }
+ },
+ "hexo-fs": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz",
+ "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "chokidar": "1.7.0",
+ "escape-string-regexp": "1.0.5",
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "hexo-generator-archive": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz",
+ "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==",
+ "requires": {
+ "hexo-pagination": "0.0.2",
+ "object-assign": "2.1.1"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
+ "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo="
+ }
+ }
+ },
+ "hexo-generator-category": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz",
+ "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=",
+ "requires": {
+ "hexo-pagination": "0.0.2",
+ "object-assign": "2.1.1"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
+ "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo="
+ }
+ }
+ },
+ "hexo-generator-feed": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz",
+ "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==",
+ "requires": {
+ "nunjucks": "3.1.2",
+ "object-assign": "4.1.1"
+ }
+ },
+ "hexo-generator-index": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz",
+ "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=",
+ "requires": {
+ "hexo-pagination": "0.0.2",
+ "object-assign": "4.1.1"
+ }
+ },
+ "hexo-generator-searchdb": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz",
+ "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=",
+ "requires": {
+ "ejs": "1.0.0",
+ "striptags": "3.1.1",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "ejs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz",
+ "integrity": "sha1-ycYKSKRu5FL7MqccMXuV5aofyz0="
+ },
+ "striptags": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz",
+ "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0="
+ }
+ }
+ },
+ "hexo-generator-sitemap": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz",
+ "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=",
+ "requires": {
+ "minimatch": "3.0.4",
+ "nunjucks": "2.5.2",
+ "object-assign": "4.1.1"
+ },
+ "dependencies": {
+ "nunjucks": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz",
+ "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=",
+ "requires": {
+ "asap": "2.0.6",
+ "chokidar": "1.7.0",
+ "yargs": "3.32.0"
+ }
+ }
+ }
+ },
+ "hexo-generator-tag": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz",
+ "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=",
+ "requires": {
+ "hexo-pagination": "0.0.2",
+ "object-assign": "4.1.1"
+ }
+ },
+ "hexo-i18n": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz",
+ "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=",
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "hexo-log": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz",
+ "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==",
+ "requires": {
+ "chalk": "1.1.3",
+ "hexo-bunyan": "1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "hexo-pagination": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz",
+ "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=",
+ "requires": {
+ "utils-merge": "1.0.1"
+ }
+ },
+ "hexo-renderer-ejs": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz",
+ "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==",
+ "requires": {
+ "ejs": "2.5.9",
+ "object-assign": "4.1.1"
+ }
+ },
+ "hexo-renderer-marked": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz",
+ "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==",
+ "requires": {
+ "hexo-util": "0.6.3",
+ "marked": "0.3.19",
+ "object-assign": "4.1.1",
+ "strip-indent": "2.0.0"
+ }
+ },
+ "hexo-renderer-stylus": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz",
+ "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=",
+ "requires": {
+ "nib": "1.1.2",
+ "stylus": "0.54.5"
+ }
+ },
+ "hexo-server": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz",
+ "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "chalk": "1.1.3",
+ "compression": "1.7.2",
+ "connect": "3.6.6",
+ "mime": "1.6.0",
+ "morgan": "1.9.0",
+ "object-assign": "4.1.1",
+ "opn": "4.0.2",
+ "serve-static": "1.13.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "hexo-symbols-count-time": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/hexo-symbols-count-time/-/hexo-symbols-count-time-0.4.2.tgz",
+ "integrity": "sha1-kbyvaVfhtPfHQVVMKweuXS+o8/s="
+ },
+ "hexo-tag-dplayer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz",
+ "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==",
+ "requires": {
+ "dplayer": "1.22.2",
+ "hexo-fs": "0.2.3",
+ "hexo-log": "0.2.0",
+ "hexo-util": "0.6.3"
+ }
+ },
+ "hexo-util": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz",
+ "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==",
+ "requires": {
+ "bluebird": "3.5.1",
+ "camel-case": "3.0.0",
+ "cross-spawn": "4.0.2",
+ "highlight.js": "9.12.0",
+ "html-entities": "1.2.1",
+ "striptags": "2.2.1"
+ }
+ },
+ "highlight.js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
+ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
+ },
+ "htmlparser2": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
+ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+ "requires": {
+ "domelementtype": "1.3.0",
+ "domhandler": "2.4.2",
+ "domutils": "1.5.1",
+ "entities": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "requires": {
+ "depd": "1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.5.0"
+ },
+ "dependencies": {
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ }
+ }
+ },
+ "humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "1.3.1"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "1.11.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ },
+ "js-yaml": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
+ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.0"
+ }
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
+ },
+ "lodash.assignin": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
+ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
+ },
+ "lodash.bind": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
+ "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
+ },
+ "lodash.filter": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
+ "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
+ },
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
+ },
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
+ },
+ "lodash.merge": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
+ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
+ },
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
+ },
+ "lodash.reduce": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
+ "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
+ },
+ "lodash.reject": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
+ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "requires": {
+ "js-tokens": "3.0.2"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw="
+ },
+ "lru-cache": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
+ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "markdown": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz",
+ "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=",
+ "requires": {
+ "nopt": "2.1.2"
+ }
+ },
+ "marked": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
+ "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg=="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "mobx": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.6.2.tgz",
+ "integrity": "sha512-Dq3boJFLpZEvuh5a/MbHLUIyN9XobKWIb0dBfkNOJffNkE3vtuY0C9kSDVpfH8BB0BPkVw8g22qCv7d05LEhKg=="
+ },
+ "moment": {
+ "version": "2.22.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz",
+ "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ=="
+ },
+ "moment-timezone": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz",
+ "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==",
+ "requires": {
+ "moment": "2.22.1"
+ }
+ },
+ "morgan": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz",
+ "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=",
+ "requires": {
+ "basic-auth": "2.0.0",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "on-finished": "2.3.0",
+ "on-headers": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "mv": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
+ "optional": true,
+ "requires": {
+ "mkdirp": "0.5.1",
+ "ncp": "2.0.0",
+ "rimraf": "2.4.5"
+ }
+ },
+ "nan": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "optional": true
+ },
+ "ncp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "optional": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "nib": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz",
+ "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=",
+ "requires": {
+ "stylus": "0.54.5"
+ }
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "requires": {
+ "lower-case": "1.1.4"
+ }
+ },
+ "node-fingerprint": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz",
+ "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE="
+ },
+ "nopt": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
+ "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=",
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "requires": {
+ "boolbase": "1.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "nunjucks": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz",
+ "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==",
+ "requires": {
+ "a-sync-waterfall": "1.0.0",
+ "asap": "2.0.6",
+ "chokidar": "1.7.0",
+ "postinstall-build": "5.0.1",
+ "yargs": "3.32.0"
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "requires": {
+ "object-assign": "4.1.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "requires": {
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
+ }
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "1.0.0"
+ }
+ },
+ "os-name": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz",
+ "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=",
+ "requires": {
+ "osx-release": "1.1.0",
+ "win-release": "1.1.1"
+ }
+ },
+ "osx-release": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz",
+ "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=",
+ "requires": {
+ "minimist": "1.2.0"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ },
+ "path": {
+ "version": "0.12.7",
+ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+ "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
+ "requires": {
+ "process": "0.11.10",
+ "util": "0.10.3"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "postinstall-build": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.1.tgz",
+ "integrity": "sha1-uRepB5smF42aJK9aXNjLSpkdEbk="
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ },
+ "promise-polyfill": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.0.tgz",
+ "integrity": "sha512-P6NJ2wU/8fac44ENORsuqT8TiolKGB2u0fEClPtXezn7w5cmLIjM/7mhPlTebke2EPr6tmqZbXvnX0TxwykGrg=="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "readable-stream": "2.3.6",
+ "set-immediate-shim": "1.0.1"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "requires": {
+ "align-text": "0.1.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
+ "optional": true,
+ "requires": {
+ "glob": "6.0.4"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safe-json-stringify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz",
+ "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==",
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sax": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
+ "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE="
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.6.3",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.4.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "requires": {
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
+ "send": "0.16.2"
+ }
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ }
+ }
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g="
+ },
+ "striptags": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz",
+ "integrity": "sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI="
+ },
+ "stylus": {
+ "version": "0.54.5",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
+ "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
+ "requires": {
+ "css-parse": "1.7.0",
+ "debug": "3.1.0",
+ "glob": "7.0.6",
+ "mkdirp": "0.5.1",
+ "sax": "0.5.8",
+ "source-map": "0.1.43"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ },
+ "swig-extras": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz",
+ "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=",
+ "requires": {
+ "markdown": "0.5.0"
+ }
+ },
+ "swig-templates": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz",
+ "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=",
+ "requires": {
+ "optimist": "0.6.1",
+ "uglify-js": "2.6.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "titlecase": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.2.tgz",
+ "integrity": "sha1-eBE9EQgIa4MmMxoyR96o9aSeqFM="
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ },
+ "uglify-js": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz",
+ "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=",
+ "requires": {
+ "async": "0.2.10",
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
+ },
+ "urllib": {
+ "version": "2.11.1",
+ "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz",
+ "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=",
+ "requires": {
+ "any-promise": "1.3.0",
+ "debug": "2.6.9",
+ "default-user-agent": "1.0.0",
+ "digest-header": "0.0.1",
+ "humanize-ms": "1.2.1",
+ "iconv-lite": "0.4.23",
+ "media-typer": "0.3.0",
+ "statuses": "1.3.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "urllib-sync": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz",
+ "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=",
+ "requires": {
+ "urllib": "2.11.1",
+ "utility": "1.7.1"
+ }
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utility": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz",
+ "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=",
+ "requires": {
+ "copy-to": "2.0.1",
+ "escape-html": "1.0.3"
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "warehouse": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz",
+ "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=",
+ "requires": {
+ "JSONStream": "1.3.2",
+ "bluebird": "3.5.1",
+ "cuid": "1.3.8",
+ "graceful-fs": "4.1.11",
+ "is-plain-object": "2.0.4",
+ "lodash": "4.17.10"
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "win-release": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz",
+ "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=",
+ "requires": {
+ "semver": "5.5.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+ "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
+ },
+ "xpath": {
+ "version": "0.0.24",
+ "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.24.tgz",
+ "integrity": "sha1-Gt4WLhzFI8jTn8fQavwW6iFvKfs="
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yargs": {
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "requires": {
+ "camelcase": "2.1.1",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "os-locale": "1.4.0",
+ "string-width": "1.0.2",
+ "window-size": "0.1.4",
+ "y18n": "3.2.1"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index dcd68887a..0aa35ad9a 100644
--- a/package.json
+++ b/package.json
@@ -1,36 +1,27 @@
{
- "name": "hexo-theme-next",
- "version": "6.3.0",
- "description": "Elegant and powerful theme for Hexo",
- "main": "index.js",
- "directories": {
- "test": "test"
+ "name": "hexo-site",
+ "version": "0.0.0",
+ "private": true,
+ "hexo": {
+ "version": "3.7.1"
},
- "scripts": {
- "test": "gulp"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/theme-next/hexo-theme-next.git"
- },
- "keywords": [
- "hexo",
- "theme",
- "next"
- ],
- "author": "NexT (https://theme-next.org)",
- "license": "AGPL",
- "bugs": {
- "url": "https://github.com/theme-next/hexo-theme-next/issues"
- },
- "homepage": "https://theme-next.org",
- "devDependencies": {
- "coffee-script": "^1.10.0",
- "gulp": "^3.9.0",
- "gulp-jshint": "^1.12.0",
- "gulp-shell": "^0.6.1",
- "js-yaml": "^3.8.1",
- "jshint-stylish": "^2.1.0",
- "stylint": "^1.5.9"
+ "dependencies": {
+ "gitment": "0.0.3",
+ "hexo": "^3.7.1",
+ "hexo-deployer-git": "^0.3.1",
+ "hexo-douban": "^0.2.16",
+ "hexo-generator-archive": "^0.1.4",
+ "hexo-generator-category": "^0.1.3",
+ "hexo-generator-feed": "^1.2.2",
+ "hexo-generator-index": "^0.2.0",
+ "hexo-generator-searchdb": "^1.0.8",
+ "hexo-generator-sitemap": "^1.2.0",
+ "hexo-generator-tag": "^0.2.0",
+ "hexo-renderer-ejs": "^0.3.0",
+ "hexo-renderer-marked": "^0.3.0",
+ "hexo-renderer-stylus": "^0.3.1",
+ "hexo-server": "^0.2.0",
+ "hexo-symbols-count-time": "^0.4.2",
+ "hexo-tag-dplayer": "^0.3.3"
}
}
diff --git a/scaffolds/draft.md b/scaffolds/draft.md
new file mode 100644
index 000000000..498e95baf
--- /dev/null
+++ b/scaffolds/draft.md
@@ -0,0 +1,4 @@
+---
+title: {{ title }}
+tags:
+---
diff --git a/scaffolds/page.md b/scaffolds/page.md
new file mode 100644
index 000000000..f01ba3cd8
--- /dev/null
+++ b/scaffolds/page.md
@@ -0,0 +1,4 @@
+---
+title: {{ title }}
+date: {{ date }}
+---
diff --git a/scaffolds/post.md b/scaffolds/post.md
new file mode 100644
index 000000000..1f9b9a465
--- /dev/null
+++ b/scaffolds/post.md
@@ -0,0 +1,5 @@
+---
+title: {{ title }}
+date: {{ date }}
+tags:
+---
diff --git a/source/CNAME b/source/CNAME
new file mode 100644
index 000000000..c5eb9eade
--- /dev/null
+++ b/source/CNAME
@@ -0,0 +1 @@
+incoder.org
\ No newline at end of file
diff --git a/source/README.md b/source/README.md
new file mode 100644
index 000000000..545862920
--- /dev/null
+++ b/source/README.md
@@ -0,0 +1,10 @@
+
+ BladeCode
+
+
+![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev)
+
+### Thanks
+1. [Node](https://nodejs.org)
+2. [Hexo](https://hexo.io)
+3. [Next](https://github.com/theme-next/hexo-theme-next)
\ No newline at end of file
diff --git a/source/_data/next.yml b/source/_data/next.yml
new file mode 100644
index 000000000..cb9173c00
--- /dev/null
+++ b/source/_data/next.yml
@@ -0,0 +1,978 @@
+# ---------------------------------------------------------------
+# Theme Core Configuration Settings
+# ---------------------------------------------------------------
+
+# If false, merge configs from `_data/next.yml` into default configuration (rewrite).
+# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings.
+# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing.
+# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config.
+override: true
+
+# Allow to cache content generation. Introduced in NexT v6.0.0.
+cache:
+ enable: true
+
+# Redefine custom file paths. Introduced in NexT v6.0.2.
+# If commented, will be used default custom file paths.
+
+# For example, you want to put your custom styles file
+# outside theme directory in root `source/_data`, set
+# `styles: source/_data/styles.styl`
+#custom_file_path:
+ # Default paths: layout/_custom/*
+ #head: source/_data/head.swig
+ #header: source/_data/header.swig
+ #sidebar: source/_data/sidebar.swig
+
+ # Default path: source/css/_variables/custom.styl
+ #variables: source/_data/variables.styl
+ # Default path: source/css/_mixins/custom.styl
+ #mixins: source/_data/mixins.styl
+ # Default path: source/css/_custom/custom.styl
+ #styles: source/_data/styles.styl
+
+
+# ---------------------------------------------------------------
+# Site Information Settings
+# ---------------------------------------------------------------
+
+# To get or check favicons visit: https://realfavicongenerator.net
+# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory.
+
+# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory.
+# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes.
+
+# For example, you put your favicons into `hexo-site/source/images` directory.
+# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo.
+favicon:
+ small: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-16x16.png
+ medium: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png
+ apple_touch_icon: https://res.cloudinary.com/incoder/image/upload/v1525515979/apple-touch-icon.png
+ safari_pinned_tab: /images/logo.svg
+ #android_manifest: /images/manifest.json
+ #ms_browserconfig: /images/browserconfig.xml
+
+# Set rss to false to disable feed link.
+# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`.
+# Set rss to specific value if you have burned your feed already.
+rss:
+
+footer:
+ # Specify the date when the site was setup.
+ # If not defined, current year will be used.
+ #since: 2015
+
+ # Icon between year and copyright info.
+ icon:
+ # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons
+ # `heart` is recommended with animation in red (#ff0000).
+ name: user
+ # If you want to animate the icon, set it to true.
+ animated: false
+ # Change the color of icon, using Hex Code.
+ color: "#808080"
+
+ # If not defined, will be used `author` from Hexo main config.
+ copyright:
+ # -------------------------------------------------------------
+ powered:
+ # Hexo link (Powered by Hexo).
+ enable: true
+ # Version info of Hexo after Hexo link (vX.X.X).
+ version: true
+
+ theme:
+ # Theme & scheme info link (Theme - NexT.scheme).
+ enable: true
+ # Version info of NexT after scheme info (vX.X.X).
+ version: true
+ # -------------------------------------------------------------
+ # Any custom text can be defined here.
+ #custom_text: Hosted by Coding Pages
+
+# ---------------------------------------------------------------
+# SEO Settings
+# ---------------------------------------------------------------
+
+# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog.
+# See: https://support.google.com/webmasters/answer/139066
+# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com )
+canonical: true
+
+# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization.
+seo: false
+
+# If true, will add site-subtitle to index page, added in main hexo config.
+# subtitle: Subtitle
+index_with_subtitle: false
+
+
+# ---------------------------------------------------------------
+# Menu Settings
+# ---------------------------------------------------------------
+
+# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives).
+# Usage: `Key: /link/ || icon`
+# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive.
+# Value before `||` delimeter is the target link.
+# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded.
+menu:
+ home: / || home
+ tags: /tags/ || tags
+ categories: /categories/ || th
+ archives: /archives/ || archive
+ books: /books/ || book
+ movies: /movies || film
+ about: /about/ || user
+ #schedule: /schedule/ || calendar
+ #sitemap: /sitemap.xml || sitemap
+ #commonweal: /404/ || heartbeat
+
+# Enable/Disable menu icons / item badges.
+menu_settings:
+ icons: true
+ badges: true
+
+# ---------------------------------------------------------------
+# Scheme Settings
+# ---------------------------------------------------------------
+
+# Schemes
+scheme: Muse
+#scheme: Mist
+#scheme: Pisces
+#scheme: Gemini
+
+
+# ---------------------------------------------------------------
+# Sidebar Settings
+# ---------------------------------------------------------------
+
+# Posts / Categories / Tags in sidebar.
+site_state: true
+
+# Social Links.
+# Usage: `Key: permalink || icon`
+# Key is the link label showing to end users.
+# Value before `||` delimeter is the target permalink.
+# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded.
+social:
+ GitHub: https://github.com/BladeCode || github
+ E-Mail: mailto:incoder.xu@gmail.com || envelope
+ # Google: https://plus.google.com/101381611051487754759 || google
+ Twitter: https://twitter.com/_incoder || twitter
+ Weibo: http://weibo.com/onblade || weibo
+ Medium: https://medium.com/@incoder || medium
+ #FB Page: https://www.facebook.com/yourname || facebook
+ #VK Group: https://vk.com/yourname || vk
+ # StackOverflow: https://stackoverflow.com/users/5776993/blade || stack-overflow
+ #YouTube: https://youtube.com/yourname || youtube
+ #Instagram: https://instagram.com/yourname || instagram
+ #Skype: skype:yourname?call|chat || skype
+
+social_icons:
+ enable: true
+ icons_only: false
+ transition: false
+ # Dependencies: exturl: true in Tags Settings section below.
+ # To encrypt links above use https://www.base64encode.org
+ # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github`
+ exturl: false
+
+# Follow me on GitHub banner in right-top corner.
+# Usage: `permalink || title`
+# Value before `||` delimeter is the target permalink.
+# Value after `||` delimeter is the title and aria-label name.
+#github_banner: https://github.com/yourname || Follow me on GitHub
+
+# Blog rolls
+links_icon: link
+links_title: Links
+links_layout: block
+#links_layout: inline
+links:
+ TwoDragonLake: http://www.twodragonlake.com
+ RootCluster: https://rootcluster.github.io
+ 南贺神社: https://1156721874.github.io
+
+# Sidebar Avatar
+avatar:
+ # in theme directory(source/images): /images/avatar.gif
+ # in site directory(source/uploads): /uploads/avatar.gif
+ # You can also use other linking images.
+ # url: #/images/avatar.gif
+ url: https://res.cloudinary.com/incoder/image/upload/v1525515979/avatar.png
+
+ # If true, the avatar would be dispalyed in circle.
+ rounded: false
+ # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar.
+ opacity: 1
+ # If true, the avatar would be rotated with the cursor.
+ rotated: false
+
+# Table Of Contents in the Sidebar
+toc:
+ enable: true
+
+ # Automatically add list number to toc.
+ number: true
+
+ # If true, all words will placed on next lines if header width longer then sidebar width.
+ wrap: false
+
+# Creative Commons 4.0 International License.
+# http://creativecommons.org/
+# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero
+#creative_commons: by-nc-sa
+#creative_commons:
+
+sidebar:
+ # Sidebar Position, available value: left | right (only for Pisces | Gemini).
+ position: left
+ #position: right
+
+ # Sidebar Display, available value (only for Muse | Mist):
+ # - post expand on posts automatically. Default.
+ # - always expand for all pages automatically
+ # - hide expand only when click on the sidebar toggle icon.
+ # - remove Totally remove sidebar including sidebar toggle.
+ display: post
+ #display: always
+ #display: hide
+ #display: remove
+
+ # Sidebar offset from top menubar in pixels (only for Pisces | Gemini).
+ offset: 12
+
+ # Back to top in sidebar (only for Pisces | Gemini).
+ b2t: false
+
+ # Scroll percent label in b2t button.
+ scrollpercent: false
+
+ # Enable sidebar on narrow view (only for Muse | Mist).
+ onmobile: false
+
+
+# ---------------------------------------------------------------
+# Post Settings
+# ---------------------------------------------------------------
+
+# Automatically scroll page to section which is under mark.
+scroll_to_more: false
+
+# Automatically saving scroll position on each post/page in cookies.
+save_scroll: false
+
+# Automatically excerpt description in homepage as preamble text.
+excerpt_description: true
+
+# Automatically Excerpt. Not recommend.
+# Please use in the post to control excerpt accurately.
+auto_excerpt:
+ enable: true
+ length: 150
+
+# Post meta display settings
+post_meta:
+ item_text: true
+ created_at: true
+ updated_at:
+ enabled: false
+ # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created).
+ # And if post will edited in same day as created, edited time will show in popup title under created time label.
+ # If false show anyway, but if post edited in same day, show only edited time.
+ another_day: true
+ categories: true
+
+# Post wordcount display settings
+# Dependencies: https://github.com/theme-next/hexo-symbols-count-time
+symbols_count_time:
+ separated_meta: true
+ item_text_post: true
+ item_text_total: false
+ awl: 2
+ wpm: 275
+
+codeblock:
+ # Manual define the border radius in codeblock
+ # Leave it empty for the default 1
+ border_radius:
+ # Add copy button on codeblock
+ copy_button: false
+
+# Wechat Subscriber
+#wechat_subscriber:
+ #enabled: true
+ #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg
+ #description: ex. subscribe to my blog by scanning my public wechat account
+
+# Reward
+#reward_comment: Donate comment here
+wechatpay: https://res.cloudinary.com/incoder/image/upload/v1525515979/wechatpay.png
+alipay: https://res.cloudinary.com/incoder/image/upload/v1525515979/alipay.png
+#bitcoin: /images/bitcoin.png
+
+# Related popular posts
+# Dependencies: https://github.com/tea3/hexo-related-popular-posts
+related_posts:
+ enable: false
+ title: # custom header, leave empty to use the default one
+ display_in_home: false
+ params:
+ maxCount: 5
+ #PPMixingRate: 0.0
+ #isDate: false
+ #isImage: false
+ #isExcerpt: false
+
+# Declare license on posts
+post_copyright:
+ enable: true
+ license: CC BY-NC-SA 4.0
+
+# Post edit
+# Dependencies: https://github.com/hexojs/hexo-deployer-git
+post_edit:
+ enable: false
+ url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source.
+# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit.
+
+
+# ---------------------------------------------------------------
+# Misc Theme Settings
+# ---------------------------------------------------------------
+
+# Reduce padding / margin indents on devices with narrow width.
+mobile_layout_economy: false
+
+# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep).
+android_chrome_color: "#222"
+
+# Custom Logo.
+# !!Only available for Default Scheme currently.
+# Options:
+# enabled: [true/false] - Replace with specific image
+# image: url-of-image - Images's url
+custom_logo:
+ enabled: true
+ image: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png
+
+# Code Highlight theme
+# Available values: normal | night | night eighties | night blue | night bright
+# https://github.com/chriskempson/tomorrow-theme
+highlight_theme: night
+
+# Enable "cheers" for archive page.
+cheers_enabled: true
+
+# Manual define the max content width
+# !!Only available for Gemini Scheme currently
+# Leave it empty for the default 75% (suggest not less than 1000px)
+#max_content_width: 1000px
+
+# Manual define the sidebar width
+# !!Only available for Gemini Scheme currently
+# Leave it empty for the default 240
+sidebar_width:
+
+# ---------------------------------------------------------------
+# Font Settings
+# - Find fonts on Google Fonts (https://www.google.com/fonts)
+# - All fonts set here will have the following styles:
+# light, light italic, normal, normal italic, bold, bold italic
+# - Be aware that setting too much fonts will cause site running slowly
+# - Introduce in 5.0.1
+# ---------------------------------------------------------------
+# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844
+# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`):
+# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS
+# ---------------------------------------------------------------
+font:
+ enable: false
+
+ # Uri of fonts host. E.g. //fonts.googleapis.com (Default).
+ host:
+
+ # Font options:
+ # `external: true` will load this font family from `host` above.
+ # `family: Times New Roman`. Without any quotes.
+ # `size: xx`. Use `px` as unit.
+
+ # Global font settings used for all elements in .
+ global:
+ external: true
+ family: Lato
+ size:
+
+ # Font settings for Headlines (H1, H2, H3, H4, H5, H6).
+ # Fallback to `global` font settings.
+ headings:
+ external: true
+ family:
+ size:
+
+ # Font settings for posts.
+ # Fallback to `global` font settings.
+ posts:
+ external: true
+ family:
+
+ # Font settings for Logo.
+ # Fallback to `global` font settings.
+ logo:
+ external: true
+ family:
+ size:
+
+ # Font settings for and code blocks.
+ codes:
+ external: true
+ family:
+ size:
+
+
+# ---------------------------------------------------------------
+# Third Party Services Settings
+# ---------------------------------------------------------------
+
+# Math Equations Render Support
+math:
+ enable: false
+
+ # Default(true) will load mathjax/katex script on demand
+ # That is it only render those page who has 'mathjax: true' in Front Matter.
+ # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE.
+ per_page: true
+
+ engine: mathjax
+ #engine: katex
+
+ # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support.
+ mathjax:
+ # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China
+ cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML
+ # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org).
+ #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
+ # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com).
+ #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML
+ # For automatic detect latest version link to MathJax.js and get from Bootcss.
+ #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML
+
+ # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin)
+ # needed to full Katex support.
+ katex:
+ # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China
+ cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css
+ # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China
+ #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css
+ # Bootcss, works great in China, but not so well in other region
+ #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css
+
+# Han Support
+# Dependencies: https://github.com/theme-next/theme-next-han
+han: false
+
+# Pangu Support
+# Dependencies: https://github.com/theme-next/theme-next-pangu
+# For more information: https://github.com/vinta/pangu.js
+pangu: false
+
+# Swiftype Search API Key
+#swiftype_key:
+
+# Baidu Analytics ID
+#baidu_analytics:
+
+# Disqus
+disqus:
+ enable: false
+ shortname:
+ count: true
+ lazyload: false
+
+# Hypercomments
+#hypercomments_id:
+
+# changyan
+changyan:
+ enable: false
+ appid:
+ appkey:
+
+
+# Valine.
+# You can get your appid and appkey from https://leancloud.cn
+# more info please open https://valine.js.org
+valine:
+ enable: false
+ appid: # your leancloud application appid
+ appkey: # your leancloud application appkey
+ notify: false # mail notifier , https://github.com/xCss/Valine/wiki
+ verify: false # Verification code
+ placeholder: Just go go # comment box placeholder
+ avatar: mm # gravatar style
+ guest_info: nick,mail,link # custom comment header
+ pageSize: 10 # pagination size
+
+
+# Support for youyan comments system.
+# You can get your uid from http://www.uyan.cc
+#youyan_uid: your uid
+
+# Support for LiveRe comments system.
+# You can get your uid from https://livere.com/insight/myCode (General web site)
+#livere_uid: your uid
+
+# Gitment
+# Introduction: https://imsun.net/posts/gitment-introduction/
+gitment:
+ enable: true
+ mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway
+ count: true # Show comments count in post meta area
+ lazy: false # Comments lazy loading with a button
+ cleanly: false # Hide 'Powered by ...' on footer, and more
+ language: # Force language, or auto switch by theme
+ github_user: BladeCode # MUST HAVE, Your Github Username
+ github_repo: BladeCode.github.io # MUST HAVE, The name of the repo you use to store Gitment comments
+ client_id: 2e3028f6ae11f92b2c38 # MUST HAVE, Github client id for the Gitment
+ client_secret: 97aa93b198112873842f608c0feb14c3740ac491 # EITHER this or proxy_gateway, Github access secret token for the Gitment
+ proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect
+ redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled
+
+# Baidu Share
+# Available value:
+# button | slide
+# Warning: Baidu Share does not support https.
+#baidushare:
+## type: button
+
+# Share
+# This plugin is more useful in China, make sure you known how to use it.
+# And you can find the use guide at official webiste: http://www.jiathis.com/.
+# Warning: JiaThis does not support https.
+#jiathis:
+ ##uid: Get this uid from http://www.jiathis.com/
+
+#add_this_id:
+
+# NeedMoreShare2
+# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2
+# See: https://github.com/revir/need-more-share2
+# Also see: https://github.com/DzmVasileusky/needShareButton
+# iconStyle: default | box
+# boxForm: horizontal | vertical
+# position: top / middle / bottom + Left / Center / Right
+# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit,
+# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot,
+# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine,
+# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru
+needmoreshare2:
+ enable: false
+ postbottom:
+ enable: false
+ options:
+ iconStyle: box
+ boxForm: horizontal
+ position: bottomCenter
+ networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook
+ float:
+ enable: false
+ options:
+ iconStyle: box
+ boxForm: horizontal
+ position: middleRight
+ networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook
+
+# Google Webmaster tools verification setting
+# See: https://www.google.com/webmasters/
+#google_site_verification:
+
+# Google Analytics
+# google_analytics: UA-100235665-1
+
+# Bing Webmaster tools verification setting
+# See: https://www.bing.com/webmaster/
+#bing_site_verification:
+
+# Yandex Webmaster tools verification setting
+# See: https://webmaster.yandex.ru/
+#yandex_site_verification:
+
+# CNZZ count
+#cnzz_siteid:
+
+# Application Insights
+# See https://azure.microsoft.com/en-us/services/application-insights/
+# application_insights:
+
+# Post widgets & FB/VK comments settings.
+# ---------------------------------------------------------------
+# Facebook SDK Support.
+# https://github.com/iissnan/hexo-theme-next/pull/410
+facebook_sdk:
+ enable: false
+ app_id: #
+ fb_admin: #
+ like_button: #true
+ webmaster: #true
+
+# Facebook comments plugin
+# This plugin depends on Facebook SDK.
+# If facebook_sdk.enable is false, Facebook comments plugin is unavailable.
+facebook_comments_plugin:
+ enable: false
+ num_of_posts: 10 # min posts num is 1
+ width: 100% # default width is 550px
+ scheme: light # default scheme is light (light or dark)
+
+# VKontakte API Support.
+# To get your AppID visit https://vk.com/editapp?act=create
+vkontakte_api:
+ enable: false
+ app_id: #
+ like: true
+ comments: true
+ num_of_posts: 10
+
+# Star rating support to each article.
+# To get your ID visit https://widgetpack.com
+rating:
+ enable: false
+ id: #
+ color: fc6423
+# ---------------------------------------------------------------
+
+# Show number of visitors to each article.
+# You can visit https://leancloud.cn get AppID and AppKey.
+leancloud_visitors:
+ enable: true
+ app_id: 3ShrIGfQL4TLamd48UtbdDEK-gzGzoHsz
+ app_key: cW8VJrB2yJiIBLtYA0KdE8vW
+ # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
+ # If you don't care about security in lc counter and just want to use it directly
+ # (without hexo-leancloud-counter-security plugin), set the `security` to `false`.
+ security: false
+ betterPerformance: false
+
+# Another tool to show number of visitors to each article.
+# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId
+# visit https://firebase.google.com/docs/firestore/ to get more information about firestore
+firestore:
+ enable: false
+ collection: articles #required, a string collection name to access firestore database
+ apiKey: #required
+ projectId: #required
+ bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill
+
+# Show Views/Visitors of the website/page with busuanzi.
+# Get more information on http://ibruce.info/2015/04/04/busuanzi/
+busuanzi_count:
+ enable: false
+ total_visitors: true
+ total_visitors_icon: user
+ total_views: true
+ total_views_icon: eye
+ post_views: true
+ post_views_icon: eye
+
+
+# Tencent analytics ID
+# tencent_analytics:
+
+# Tencent MTA ID
+# tencent_mta:
+
+
+# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO
+baidu_push: false
+
+# Google Calendar
+# Share your recent schedule to others via calendar page
+#
+# API Documentation:
+# https://developers.google.com/google-apps/calendar/v3/reference/events/list
+calendar:
+ enable: false
+ calendar_id:
+ api_key:
+ orderBy: startTime
+ offsetMax: 24
+ offsetMin: 4
+ timeZone:
+ showDeleted: false
+ singleEvents: true
+ maxResults: 250
+
+# Algolia Search
+# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md
+# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search
+algolia_search:
+ enable: false
+ hits:
+ per_page: 10
+ labels:
+ input_placeholder: Search for Posts
+ hits_empty: "We didn't find any results for the search: ${query}"
+ hits_stats: "${hits} results found in ${time} ms"
+
+# Local search
+# Dependencies: https://github.com/theme-next/hexo-generator-searchdb
+local_search:
+ enable: true
+ # if auto, trigger search by changing input
+ # if manual, trigger search by pressing enter key or search button
+ trigger: auto
+ # show top n results per article, show all results by setting to -1
+ top_n_per_article: 1
+ # unescape html strings to the readable one
+ unescape: false
+
+# Bookmark Support
+# Dependencies: https://github.com/theme-next/theme-next-bookmark
+bookmark:
+ enable: false
+ # if auto
+ # - save the reading position when closing the page
+ # - or clicking the bookmark-icon
+ # if manual, only save it by clicking the bookmark-icon
+ save: auto
+
+
+# ---------------------------------------------------------------
+# Tags Settings
+# ---------------------------------------------------------------
+
+# External URL with BASE64 encrypt & decrypt.
+# Usage: {% exturl text url "title" %}
+# Alias: {% extlink text url "title" %}
+exturl: true
+
+# Note tag (bs-callout).
+note:
+ # Note tag style values:
+ # - simple bs-callout old alert style. Default.
+ # - modern bs-callout new (v2-v3) alert style.
+ # - flat flat callout style with background, like on Mozilla or StackOverflow.
+ # - disabled disable all CSS styles import of note tag.
+ style: simple
+ icons: false
+ border_radius: 3
+ # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
+ # Offset also applied to label tag variables. This option can work with disabled note tag.
+ light_bg_offset: 0
+
+# Label tag.
+label: true
+
+# Tabs tag.
+tabs:
+ enable: true
+ transition:
+ tabs: false
+ labels: true
+ border_radius: 0
+
+# Reading progress bar
+# Dependencies: https://github.com/theme-next/theme-next-reading-progress
+reading_progress:
+ enable: true
+ color: "#37c6c0"
+ height: 2px
+
+
+#! ---------------------------------------------------------------
+#! DO NOT EDIT THE FOLLOWING SETTINGS
+#! UNLESS YOU KNOW WHAT YOU ARE DOING
+#! ---------------------------------------------------------------
+
+# Use velocity to animate everything.
+motion:
+ enable: true
+ async: true
+ transition:
+ # Transition variants:
+ # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut
+ # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut
+ # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut
+ # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut
+ # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut
+ # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut
+ post_block: fadeIn
+ post_header: slideDownIn
+ post_body: slideDownIn
+ coll_header: slideLeftIn
+ # Only for Pisces | Gemini.
+ sidebar: slideUpIn
+
+# Fancybox. There is support for old version 2 and new version 3.
+# Please, choose only any one variant, do not need to install both.
+# For install 2.x: https://github.com/theme-next/theme-next-fancybox
+# For install 3.x: https://github.com/theme-next/theme-next-fancybox3
+fancybox: true
+
+# Added switch option for separated repo in 6.0.0.
+# Dependencies: https://github.com/theme-next/theme-next-fastclick
+fastclick: false
+
+# Added switch option for separated repo in 6.0.0.
+# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload
+lazyload: false
+
+# Progress bar in the top during page loading.
+# Dependencies: https://github.com/theme-next/theme-next-pace
+pace: false
+# Themes list:
+#pace-theme-big-counter
+#pace-theme-bounce
+#pace-theme-barber-shop
+#pace-theme-center-atom
+#pace-theme-center-circle
+#pace-theme-center-radar
+#pace-theme-center-simple
+#pace-theme-corner-indicator
+#pace-theme-fill-left
+#pace-theme-flash
+#pace-theme-loading-bar
+#pace-theme-mac-osx
+#pace-theme-minimal
+# For example
+# pace_theme: pace-theme-center-simple
+pace_theme: pace-theme-minimal
+
+# Canvas-nest
+# Dependencies: https://github.com/theme-next/theme-next-canvas-nest
+canvas_nest: false
+
+# JavaScript 3D library.
+# Dependencies: https://github.com/theme-next/theme-next-three
+# three_waves
+three_waves: false
+# canvas_lines
+canvas_lines: false
+# canvas_sphere
+canvas_sphere: false
+
+# Only fit scheme Pisces
+# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon
+# Canvas-ribbon
+# size: The width of the ribbon.
+# alpha: The transparency of the ribbon.
+# zIndex: The display level of the ribbon.
+canvas_ribbon:
+ enable: false
+ size: 300
+ alpha: 0.6
+ zIndex: -1
+
+# Script Vendors.
+# Set a CDN address for the vendor you want to customize.
+# For example
+# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
+# Be aware that you should use the same version as internal ones to avoid potential problems.
+# Please use the https protocol of CDN files when you enable https on your site.
+vendors:
+ # Internal path prefix. Please do not edit it.
+ _internal: lib
+
+ # Internal version: 2.1.3
+ jquery:
+
+ # Internal version: 2.1.5
+ # See: http://fancyapps.com/fancybox/
+ fancybox:
+ fancybox_css:
+
+ # Internal version: 1.0.6
+ # See: https://github.com/ftlabs/fastclick
+ fastclick:
+
+ # Internal version: 1.9.7
+ # See: https://github.com/tuupola/jquery_lazyload
+ lazyload:
+
+ # Internal version: 1.2.1
+ # See: http://VelocityJS.org
+ velocity:
+
+ # Internal version: 1.2.1
+ # See: http://VelocityJS.org
+ velocity_ui:
+
+ # Internal version: 0.7.9
+ # See: https://faisalman.github.io/ua-parser-js/
+ ua_parser:
+
+ # Internal version: 4.6.2
+ # See: http://fontawesome.io/
+ fontawesome:
+
+ # Internal version: 1
+ # https://www.algolia.com
+ algolia_instant_js:
+ algolia_instant_css:
+
+ # Internal version: 1.0.2
+ # See: https://github.com/HubSpot/pace
+ # Or use direct links below:
+ # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js
+ # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css
+ pace:
+ pace_css:
+
+ # Internal version: 1.0.0
+ # https://github.com/hustcc/canvas-nest.js
+ canvas_nest:
+
+ # three
+ three:
+
+ # three_waves
+ # https://github.com/jjandxa/three_waves
+ three_waves:
+
+ # three_waves
+ # https://github.com/jjandxa/canvas_lines
+ canvas_lines:
+
+ # three_waves
+ # https://github.com/jjandxa/canvas_sphere
+ canvas_sphere:
+
+ # Internal version: 1.0.0
+ # https://github.com/zproo/canvas-ribbon
+ canvas_ribbon:
+
+ # Internal version: 3.3.0
+ # https://github.com/ethantw/Han
+ han:
+
+ # Internal version: 3.3.0
+ # https://github.com/vinta/pangu.js
+ pangu:
+
+ # needMoreShare2
+ # https://github.com/revir/need-more-share2
+ needmoreshare2_js:
+ needmoreshare2_css:
+
+ # bookmark
+ # Internal version: 1.0.0
+ # https://github.com/theme-next/theme-next-bookmark
+ bookmark:
+
+ # reading_progress
+ # Internal version: 1.0
+ # https://github.com/theme-next/theme-next-reading-progress
+ # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js
+ reading_progress:
+
+ # valine comment
+ # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js
+ valine:
+
+
+# Assets
+css: css
+js: js
+images: images
\ No newline at end of file
diff --git a/source/_posts/git-account.md b/source/_posts/git-account.md
new file mode 100644
index 000000000..5da330130
--- /dev/null
+++ b/source/_posts/git-account.md
@@ -0,0 +1,70 @@
+---
+title: Git 多账号
+date: 2018-10-06 10:54:50
+categories: Git
+tag: [git account]
+---
+
+以前,git的账号只用来在Github上操作,随着积累Git管理的项目不仅仅只来自Github,还有一些其它Git项目托管的平台,例如:[Bitbucket](https://bitbucket.org),[Coding](https://coding.net),[Gitee](https://gitee.com),[Gitlib](https://gitlab.com),以及公司内Git仓库
+
+不同的托管平台有着不同的Git账号,无法用一个账号来管理其它的仓库,而且由于不同的托管平台账号不同,因此需要添加不同账号的公钥,这样我们再能在对应平台用对应的账号进行操作
+
+## 环境
+* Windows 10 x64
+* Git version 2.16.0
+
+>这里Git的安装不在赘述
+
+## 生成对应账号的密钥
+```sh
+# 进入到`your_pc_name/.ssh`,
+cd .ssh
+# Jerry.x@outlook.com 是我的Github的邮箱,这里需要替换成自己的邮箱
+ssh-keygen -t rsa -C "Jerry.x@outlook.com"
+# 命名文件名称或指定文件存放路径等
+# 其它可以回车键进行确认,进行下一步
+```
+![git-account](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-account.png)
+
+>完成后,将会生成`id_rsa_company.pub`(存放公钥)与`id_rsa_company`(存放私钥)两个文件
+
+## 添加公钥到托管平台
+* 在`.ssh`路径下,用文本编辑器打开`id_rsa_company.pub`文件,复制内容
+* 在托管平台上添加ssh public key
+以下以GitHub添加为例,其它平台类似
+![git-add-key](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-add-key.png)
+
+## 添加配置文件
+在`.ssh`路径下,创建`config`文件,无文件后缀名,如下示例
+
+```sh
+# 配置github.com
+Host github.com
+ HostName github.com
+ IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa
+ PreferredAuthentications publickey
+ User BladeCode
+
+# 配置 company.domain.com
+Host company.domain.com
+ HostName company.domain.com
+ IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa_company
+ PreferredAuthentications publickey
+ User Jerry xu
+```
+
+* `Host`:的名字可以取为自己喜欢的名字
+* `HostName`:这个是真实的域名地址
+例如:https://github.com/BladeCode/BladeCode.github.io.git,红色标注字段
+* `IdentityFile`:这里是id_rsa的地址
+* `PreferredAuthentications`:配置登录时用什么权限认证
+可设为publickey,password publickey,keyboard-interactive等
+* `User`:配置使用用户名
+
+## 测试
+```sh
+ssh -T git@github.com
+```
+![git-test](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-test.png)
+
+>git@github.com,github.com就是上一步中`config`文件中配置的`HostName`字段内容
\ No newline at end of file
diff --git a/source/_posts/git-bash.md b/source/_posts/git-bash.md
new file mode 100644
index 000000000..c9534216a
--- /dev/null
+++ b/source/_posts/git-bash.md
@@ -0,0 +1,107 @@
+---
+title: Git 常用命令
+date: 2018-10-07 12:43:50
+categories: Git
+tag: [git bash]
+---
+
+记录 Git 日常操作常用命令
+
+## git config
+Git级别:system() < global(当前用户) < local(当前仓库)
+* 新增或修改
+```sh
+git config --global user.name xxxxx
+git config --global user.email xxx@xxxx.com
+```
+* 删除用品配置信息
+```sh
+# 如果当前只有一个用户,就不用加入xxxx
+git config --global --unset user.name xxxx
+```
+
+## git clone
+* clone
+```sh
+git clone url
+```
+* clone 指定分支
+```sh
+git clone -b branch_name url
+```
+* clone 指定tag
+```sh
+# clone
+git clone url
+# checkout tag
+git checkout tag_name
+```
+* clone 指定commit
+```sh
+# 查看git commit 历史的
+git log
+# 指定 commit SHA
+git clone commit_sha_value
+```
+
+## git commit
+```sh
+git commit -m "注释"
+```
+
+## git branch
+* 创建分支
+```sh
+# 创建分支
+git branch branch_name
+# 创建并切换到新分支
+git checkout -b branch_name
+```
+* 切换分支
+```sh
+git checkout branch_name
+```
+* 删除分支
+```sh
+# 删除本地分支
+git branch -d branch_name
+# 删除远程指定分支
+git push origin --delete branch_name
+```
+* 重命名分支
+```sh
+git branch -m old_branch_name new_branch_name
+```
+* 查看分支
+```sh
+# 查看本地所有分支
+git branch
+# 查看远程所有分支
+git branch -r
+# 查看本地和远程所有分支
+git branch -a
+```
+
+## git tag
+* 新增tag
+```sh
+git tag -a tag_name -m "注释"
+```
+* 查看tag
+```sh
+git tag -l
+```
+* 删除tag
+```sh
+# 删除本地tag
+git tag -d tag_name
+# 删除远程指定tag
+git push origin --delete tag tag_name
+```
+## git help
+更多命令
+```sh
+git --help
+```
+## 附录
+* [Git Docs](https://git-scm.com/docs)
diff --git a/source/_posts/git-sub.md b/source/_posts/git-sub.md
new file mode 100644
index 000000000..e5e6d08eb
--- /dev/null
+++ b/source/_posts/git-sub.md
@@ -0,0 +1,211 @@
+---
+title: Git 子仓库管理
+date: 2018-05-17 10:30:50
+categories: Git
+tag: [git subtree, git submodule]
+---
+
+在使用NexT作为Hexo博客的主题时,不能 **友好** 的支持其主题的更新,以及 **多设备** 之间的主题同步。
+按照官方提供的导入主题操作指引
+```bash
+$ cd hexo
+$ git clone https://github.com/theme-next/hexo-theme-next themes/next
+```
+发现commit并push到GitHub的远程服务器上,发现`themes/next`路径下并不能打开和查看该路径下的文件,原因是NexT是当前项目的一个子仓库(项目),在Github上对于之仓库项目的引用,推荐使用`git subtree`命令来进行对子仓库的管理,不推荐直接拷贝需要子仓库的代码到自己的项目中
+
+原因是我是使用Travis CI来部署自己的项目,具体的[构建脚本和介绍](https://incoder.org/2018/05/02/hexo-iterative)请看,下面分别使用 `git submodule`、`git subtree`的方式进行NexT主题的管理
+
+## git submodule 与 git subtree
+* `git submodule`、`git subtree`都可以实现一个仓库作为其他仓库的子仓库的管理
+* `git submodule`:是Git官方以前的推荐方案
+* `git subtree`:Git [1.5.2](https://lwn.net/Articles/235109) 开始,Git 新增并推荐使用这个功能来管理子项目
+* `git subtree`与`git submodule`不同,它不增加任何像`.gitmodule`这样的新的元数据文件
+* `git subtree`对于项目中的其他成员透明,意味着可以不知道`git subtree`的存在
+
+## git submodule 常用操作
+[Git Submodule](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97)功能官方操作指引
+
+### add 一个submodule
+1. Fork Repository
+[hexo-theme-next](https://github.com/theme-next/hexo-theme-next)项目右上角`Fork`按钮即可
+2. Clone Repository
+```bash
+git clone git@github.com:RootCluster/hexo-theme-test.git
+```
+3. Add Submodule
+```bash
+# 进入项目
+cd hexo-theme-test
+# 注册next项目是一个submodule,并把数据拷贝到`themes/next`路径
+git submodule add git@github.com:RootCluster/hexo-theme-next.git themes/next
+```
+4. status
+```bash
+# 当前submodule已被注册并指向了某个commit
+git submodule status
+ 1f5643061ec5257269673bd6159403c24015c53d themes/next (v6.3.0)
+```
+
+ ```bash
+ # 查看在父仓库中有哪些变化被注册
+ git status
+ On branch submodule
+ Changes to be committed:
+ (use "git reset HEAD ..." to unstage)
+
+ new file: .gitmodules
+ new file: themes/next
+ ```
+ 有2个文件被修改过:`.gitmodules`,`themes/next`,当在父仓库时,Git不会跟踪submodule中的文件,Git只把它当成一个单一的文件
+ * `.gitmodules`:存有submodule的信息
+ * `themes/next`:submodule它自己
+
+5. commint
+```bash
+# 推送到远程submodule分支
+git commit -am "add next submodule"
+[submodule a5a612b] add next submodule
+ 2 files changed, 4 insertions(+)
+ create mode 100644 .gitmodules
+ create mode 160000 themes/next
+```
+6. push
+```bash
+git push origin submodule
+Counting objects: 4, done.
+Delta compression using up to 4 threads.
+Compressing objects: 100% (4/4), done.
+Writing objects: 100% (4/4), 451 bytes | 451.00 KiB/s, done.
+Total 4 (delta 1), reused 0 (delta 0)
+remote: Resolving deltas: 100% (1/1), completed with 1 local object.
+To github.com:RootCluster/hexo-themes-test.git
+ 71879a8..a5a612b submodule -> submodule
+```
+查看Github上的仓库,发现父仓库里有一个指向submodule的链接,表示你已经成功添加了一个submodule
+
+### clone 带 submodule的项目
+新路径下,clone项目,submodule分支
+```bash
+# clone项目
+git clone -b submodule git@github.com:RootCluster/hexo-themes-test.git
+# 进入项目路径
+cd hexo-themes-test/
+# 项目注册submodule
+git submodule init
+# clone submodule代码
+git submodule update
+
+```
+
+### update 带 submodule的项目
+只要在submodule路径下,所有的常规Git操作,如`push`,`pull`,`reset`,`status`等,都可以正常工作,如果要保证submodule和远程仓库保存同步,在submodule路径下运行`git pull`
+
+* 如果你得到一个错误信息, 说你不在任何分支之上, 只要运行`git checkout master`就可修复
+* 如果你在`pull`后 `submodule` 有一些更新, 父仓库会告诉你有一些变动需要 `commit` 了. `submodule`自身指向一个指定的 `commit`, 并且如果这个 `commit` 改变了, 父仓库会得知这个改变. 如果你的 `submodule` 需要在一个指定 `commit` 上工作, 可用`git reset`来设置
+
+例如:我需要把NexT的版本改变到上一个Tag 6.2.0 (目前是6.3.0)
+> git reset --hard (commit hash)
+
+```bash
+# 进入项目路径
+cd hexo-themes-test/
+# 重新指向submodule关联的commit记录
+git reset --hard 206d463
+# 回到父目录
+cd ..
+# commit本次的修改
+git commit -am "set next version to 6.2.0"
+```
+
+{% note info %} 推送到远程仓库后,`submodule` 会和指定的`commit` 关联起来。如果你和别人一起工作在同一个项目,别人也可以在`submodule`下`pull`并且`commit`,因此改变了`submodule`的`commit`指向,这个问题,可以通过`git reset` 来解决{% endnote %}
+
+### remove 项目中的 submodule
+* 项目的根目录下(不是 submodule 的目录),编辑 .gitmodules 文件,删除submodule配置
+```bash
+[submodule "themes/next"]
+ path = themes/next
+ url = https://github.com/RootCluster/hexo-theme-next.git
+```
+* 项目根目录下,编辑`.git`文件夹下`config`文件,删除submodule配置
+```bash
+[submodule "themes/next"]
+ url = https://github.com/RootCluster/hexo-theme-next.git
+```
+* 清除submodule缓存
+```bash
+git rm --cached themes/next
+```
+
+## git subtree 常用操作(重点)
+
+### add一个subtree
+* 在父仓库中新增子仓库
+```bash
+# 添加子仓库
+git subtree add --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master --squash
+git fetch https://github.com/RootCluster/hexo-theme-next.git master
+warning: no common commits
+remote: Counting objects: 3407, done.
+remote: Total 3407 (delta 0), reused 0 (delta 0), pack-reused 3406
+Receiving objects: 100% (3407/3407), 1.21 MiB | 36.00 KiB/s, done.
+Resolving deltas: 100% (2192/2192), done.
+From https://github.com/RootCluster/hexo-theme-next
+ * branch master -> FETCH_HEAD
+Added dir 'themes/next'
+```
+>`--squash`参数表示不拉取历史信息,而只生成一条commit信息
+
+* 查看项目状态
+```bash
+# 查看项目状态
+git status
+On branch subtree
+Your branch is ahead of 'origin/subtree' by 2 commits.
+ (use "git push" to publish your local commits)
+
+nothing to commit, working tree clean
+```
+
+* 推送更改到远程仓库
+```bash
+git push origin subtree
+Counting objects: 381, done.
+Delta compression using up to 4 threads.
+Compressing objects: 100% (334/334), done.
+Writing objects: 100% (381/381), 650.26 KiB | 34.22 MiB/s, done.
+Total 381 (delta 23), reused 225 (delta 19)
+remote: Resolving deltas: 100% (23/23), completed with 1 local object.
+To https://github.com/RootCluster/hexo-themes-test.git
+ 8ed2e2e..405af42 subtree -> subtree
+```
+
+### pull 子仓库更新
+```bash
+# 更新子仓库
+git subtree pull --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master --squash
+From https://github.com/RootCluster/hexo-theme-next
+ * branch master -> FETCH_HEAD
+Subtree is already at commit 1f5643061ec5257269673bd6159403c24015c53d.
+```
+
+### push 子仓库修改
+在引用子仓库的项目中修改了子仓库的相关代码,推送修改到源仓库
+* commit 修改记录
+* push 到源仓库
+```bash
+# 推送子仓库修改到源仓库master分支
+git subtree push --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master
+```
+
+### subtree 常用命令
+```bash
+git subtree add --prefix=
+git subtree add --prefix=
+git subtree pull --prefix=
+git subtree push --prefix=
+git subtree merge --prefix=
+git subtree split --prefix= [OPTIONS] []
+```
+> 学习参考附录:
+* [如何使用 Git Submodule](http://linlexus.com/git-submodule-usage)
+* [git subtree教程](https://www.jianshu.com/p/d42d330bfead)
\ No newline at end of file
diff --git a/source/_posts/gitignore.md b/source/_posts/gitignore.md
new file mode 100644
index 000000000..ebd190039
--- /dev/null
+++ b/source/_posts/gitignore.md
@@ -0,0 +1,44 @@
+---
+title: .gitignore 基础知识
+date: 2018-04-13 00:30:50
+categories: Git
+tag: ignore
+---
+
+.gitignore顾名思义是Git中用来管理所需要忽略或者说不用纳入版本控制文件
+
+## 基本配置语法
+1. “#“:表示注释
+2. “/“:表示目录
+3. “*“:表示通配符,用来通配多个字符
+4. “?“:表示通配单个字符
+5. “[]“:表示包含单个字符的匹配列表
+6. “!“:表示不忽略匹配到的文件或者目录
+
+>注意:Git对.gitignore配置文件是从上往下进行规则匹配,这也意味如果:前(limit)>后(limit),则后面的规则不会被执行
+
+## 全局与局部
+.gitignore分为: **全局** ignore,**局部** ignore
+
+### 全局ignore设置
+* 在用户账户文件夹(C:\Users\<'YourName'>)路径下新建一个命名为`.gitignore_global`的文件
+* 使用Git Bash(需要切换路径到C:\Users\<'YourName'>)或者Git CMD命令行工具输入:
+``` bash
+git config --global core.excludesfile ~/.gitignore_global
+```
+* 此时全局ignore已经设置完成,你只需要修改`.gitignore_global`文件内需要忽略的文件类型就可以全局控制忽略不需要纳入版本控制的文件或文件夹
+* 不难发现,其实是往 `.gitconfig`中加入如下内容来指名Git忽略不纳入版本控制的文件,当然如果你不想用命令行完成全局设置,你也可以直接在`.gitconfig`文件中加入`[core] excludesfile= ~/.gitignore_global`内容即可
+
+### 局部ignore设置
+* 只需要在Git控制版本控制项目的根目录中加入.gitignore文件,在.gitignore文件中写明忽略不纳入版本控制的文件即可
+
+## 参考示例
+
+>你可以查看参考[Github](https://github.com/github/gitignore)官方所写好的示例
+
+## 插件.ignore
+支持Android Studio,JetBrains系列
+安装方法
+
+* `Settings` > `Plugs` > `Browse repositories` > `.ignore` > `Install plugin`
+* 里面有已经写好的模板,只需适当修改
\ No newline at end of file
diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md
new file mode 100644
index 000000000..c57b9a057
--- /dev/null
+++ b/source/_posts/gitlab1.md
@@ -0,0 +1,142 @@
+---
+title: Gitlab 应用搭建
+date: 2018-04-24 21:11:10
+categories: Git
+tag: Gitlab
+---
+
+我司团队之前一直使用SVN来进行代码托管,主要问题
+1. 每次来个新人都需要找对应的[SVN](https://tortoisesvn.net/index.zh.html)管理员进行授权分配指定的仓库操作权限,有时候需要多个项目切换,还得再次提出进行仓库的指定
+2. SVN都是以中文命名,这其实没啥,但是在[eclipse](https://eclipse.org) 以及[IDEA](https://www.jetbrains.com/idea/?fromMenu) ,[Xcode](https://developer.apple.com/xcode)等开发工具,链接地址都会把中文字进行编码,造成路径非常的长,强迫症的我这怎么忍得了
+3. 产品相关的,设计相关的啥也都放在SVN里面,搞得SVN里面鱼龙混杂
+
+因此在我提出及建议下,部门经理同意了对代码的管理进行隔离方便有效的对代码的授权监管,并同时制定代码的相关规范和服务的自动化部署等,提高团队的开发效率和代码质量。
+
+本节主要介绍Gitlab的环境搭建和基础的功能配置
+
+目的:
+1. 搭建Gitlab服务
+2. 和公司AD域账号关联,用域账号直接登录Gitlab
+3. 挂载Gitlab 仓库到指定存储位置
+
+## Gitlab安装
+
+### 环境
+* OS:CentOS 7
+* Gitlab:[Gitlab CE 10.6.4](https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.6.4-ce.0.el7.x86_64.rpm)
+
+>Gitlab 版本
+* Gitlab Community Edition (CE):社区版,免费,用户自行托管,通过社区提供技术支持
+* Gitlab Enterprise Edition (EE):企业版,付费,用户自行托管,提供附加的功能以及技术支持
+* Gitlab.com:免费的SaaS服务,可以创建共有以及私有的版本库,可以购买额外的技术支持
+* GitHost.io:由Gitlab提供的用户私有的独享服务
+
+### Gitlab部署
+1. 系统防火墙中打开HTTP和SSH访问
+```bash
+sudo yum install -y curl policycoreutils-python openssh-server
+sudo systemctl enable sshd
+sudo systemctl start sshd
+
+sudo firewall-cmd --permanent --add-service=http
+sudo systemctl reload firewalld
+
+```
+2. 安装Postfix发送通知邮件。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器
+```bash
+sudo yum install postfix
+sudo systemctl enable postfix
+sudo systemctl start postfix
+
+```
+3. 添加GitLab软件包存储库
+```bash
+curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
+```
+4. 安装软件包
+```bash
+rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
+```
+ 完成安装如下日志显示:
+
+ ```
+ *. *.
+ *** ***
+ ***** *****
+ .****** *******
+ ******** ********
+ ,,,,,,,,,***********,,,,,,,,,
+ ,,,,,,,,,,,*********,,,,,,,,,,,
+ .,,,,,,,,,,,*******,,,,,,,,,,,,
+ ,,,,,,,,,*****,,,,,,,,,.
+ ,,,,,,,****,,,,,,
+ .,,,***,,,,
+ ,*,.
+
+
+
+ _______ __ __ __
+ / ____(_) /_/ / ____ _/ /_
+ / / __/ / __/ / / __ \`/ __ \
+ / /_/ / / /_/ /___/ /_/ / /_/ /
+ \____/_/\__/_____/\__,_/_.___/
+
+ ```
+5. 编译配置文件
+```bash
+cd /opt/gitlab/bin
+./gitlab-ctr reconfigure
+```
+6. 启动服务
+```bash
+./gitlab-ctl start
+```
+
+>* 成功启动服务,默认路径访问:http://localhost:80
+* 默认安装位置 `/opt/gitlab/`
+* 配置文件默认路径 `/etc/gitlab/gitlab.rb`
+* 默认账号:root,密码:5iveL!fe
+
+## 常用配置项修改
+以下配置项的修改,完成后**均需要重新编译**文件(配置文件默认路径 `/etc/gitlab/gitlab.rb`),默认,**并重启Gitlab**服务
+
+### 访问地址
+修改`external_url`为Gitlab对应机器IP所配置的域名
+![gitlab-url](https://res.cloudinary.com/incoder/image/upload/v1525517587/blog/gitpages-gitlab-url.png)
+
+### LDAP启用
+修改`host`,`port`,`bind_dn`,`password`,`base`参数即可
+![gitlab-ladp](https://res.cloudinary.com/incoder/image/upload/v1525517612/blog/gitpages-gitlab-ldap.png)
+
+各参数解释:
+* `host` 和 `port` 是 LDAP 服务的主机地址及端口
+* `bind_d`n 和 `password` 是一个管理 LDAP 的 dn 及密码
+* `base` 表示 LDAP 将以该 dn 为 节点,向下查找用户
+* `user_filter` 表示以某种过滤条件筛选用户
+* `attributes` 表示 GitLab 中的字段与 LDAP 中哪些字段可以相互对应,比如可以用 LDAP 中的 uid 来作为 GitLab 用户名
+
+编译重启后,查看登录是否已经显示LDAP登录入口
+
+![gitlab-ldap-login](https://res.cloudinary.com/incoder/image/upload/v1525517639/blog/gitpages-gitlab-ldap-login.png)
+
+为了安全我们需要关闭 GitLab 自己的注册功能,这样新用户只能通过 LDAP 认证的方式进行登陆。
+
+![gitlab-sign-up](https://res.cloudinary.com/incoder/image/upload/v1525517671/blog/gitpages-gitlab-sign-up.png)
+
+### 存储仓库修改
+默认仓库存储位置:`/var/opt/gitlab/git-data/repositories/`
+![gitlab-dirs](https://res.cloudinary.com/incoder/image/upload/v1525517697/blog/gitpages-gitlab-dirs.png)
+
+### Gitlab日志
+默认日志位置: `/var/log/gitlab`
+
+```bash
+cd /opt/gitlab/bin
+gitlab-ctl tail -f nginx/gitlab_access.log
+```
+或者在Gitlab服务的系统设置中查看
+![gitlab-logs](https://res.cloudinary.com/incoder/image/upload/v1525517725/blog/gitpages-gitlab-logs.png)
+
+## 附录
+* [官方安装教程](https://about.gitlab.com/installation)
+* [官方配置文件](https://docs.gitlab.com.cn/omnibus/settings/README.html)
\ No newline at end of file
diff --git a/source/_posts/hexo-blog.md b/source/_posts/hexo-blog.md
new file mode 100644
index 000000000..fe44545ec
--- /dev/null
+++ b/source/_posts/hexo-blog.md
@@ -0,0 +1,135 @@
+---
+title: Hexo Blog 搭建
+date: 2018-03-25 01:18:26
+categories: Hexo
+tag: Build
+---
+
+之前一直纠结用[Jekyll](https://jekyllrb.com)还是[Hexo](https://hexo.io)来搭建[GitHub Page](https://pages.github.com)博客,原本一直想搭建一个[Material Design](https://material.io/guidelines)主题风格,从[Hexo Themes](https://hexo.io/themes)中寻找到一款不错的主题,[indigo](https://github.com/yscoder/hexo-theme-indigo)是一款支持IE10+,评论,目录导航,分享等功能的轻量Blog主题。
+
+简单的修改了该主题之后,本地预览都没有什么问题,但是部署到[Github]()上,样式什么的都无法加载,应该是我的操作姿势不对吧,调整了半天没有解决,烦躁中找到之前star的另一款很受欢迎的[Next](https://github.com/iissnan/hexo-theme-next)主题。
+
+既然自己修改的无法正常部署预览,那就用别人写好的吧,刚好赶上[Next](https://github.com/theme-next/hexo-theme-next)新版本V6.0系列的推出,那就不废话,直接开干
+
+## 材料准备
+* [Node LTS](https://nodejs.org/en/download)
+* [Git](https://git-scm.com/downloads)
+* [Hexo](https://hexo.io)
+* [Next](https://github.com/theme-next/hexo-theme-next)
+
+## 安装
+`Node`,`Git`的安装过程略
+
+### Hexo
+1. Hexo 安装
+``` bash
+$ npm install hexo-cli -g
+```
+2. 初始化
+``` bash
+$ hexo init
+```
+3. 安装依赖包
+``` bash
+$ cd
+$ npm install
+```
+4. 启动服务预览
+``` bash
+$ hexo serve
+```
+
+### Next
+1. 安装Next 主题
+``` bash
+$ git clone https://github.com/theme-next/hexo-theme-next themes/next
+```
+ > 当前操作在 `blog`的根目录下执行
+
+2. 修改Blog 配置
+`you blog name` 根目录 `_config.yml`
+ * theme: 由原来默认`landscape`更改位`next`(大约:76行)
+ * 其他配置项,根据自己的需求进行更改,我这里更改了`title`,`subtitle`,`author`,`language`,`url`配置,其中`language`如果没有修改,默认为英文语言,在V6.0系列由原来`zh-Hans`更新为`zh-CN`
+ * 添加部署到Github配置
+``` bash
+deploy:
+ type: git
+ repo: https://github.com/BladeCode/BladeCode.github.io.git # 用户名仓库
+ branch: master # 用户名仓库的分支应该指定master,master分支也可以不用写
+```
+
+3. 修改Theme 配置
+路径:`you blog name`/Themes/next/_config.yml
+这里不罗嗦了,其配置可参考[hexo-theme-next](https://github.com/iissnan/hexo-theme-next)项目`README`文件
+
+### 部署
+上面已经配置好了部署的目标仓库,那么这里直接使用Hexo提供的部署命令即可
+``` bash
+$ hexo d
+```
+相关命令介绍等,请查看[官方文档说明](https://hexo.io/docs)
+
+部署完成后,可以直接访问 http://`you blog name`/github.io
+
+## 自定义域名
+虽然现在blog可以使用Githug提供的项目二级域名来访问,为了个性化以及方便等,配置自己的域名
+1. 登录域名所属的管理网站(这里以阿里云域名服务为例)
+ ![gitpages-domain-manger](https://res.cloudinary.com/incoder/image/upload/v1525516603/blog/gitpages-domain-manger.png)
+2. 添加解析
+``` bash
+$ # 解析一
+记录类型:CNAME
+主机记录:www
+记录值:bladecode.github.io
+解析路线:default
+
+$ # 解析二
+记录类型:A
+主机记录:@
+记录值:192.30.252.153
+解析路线:default
+
+$ # 解析三
+记录类型:A
+主机记录:@
+记录值:192.30.252.154
+解析路线:default
+```
+ > 192.30.252.153是GitHub的地址,你也可以ping你的 http://xxxx.github.io 的ip地址,填入进去
+
+3. 修改Github上项目的domain设置
+ ![gitpages-domain-custom](https://res.cloudinary.com/incoder/image/upload/v1525516630/blog/gitpages-domain-custom.png)
+4. 添加CNAME文件
+保存路径:`you blog name`/source
+新增文件:CNAME 文件 (格式要求:`保存成所有文件而不是txt文件`)
+CNAME 文件内容:`incoder.org`
+> 如果带有www,那么以后访问的时候必须带有www完整的域名才可以访问,但如果不带有www,以后访问的时候带不带www都可以访问。所以建议,不要带有www
+
+## Https开启
+开启Https 需要借助[Cloudflare](https://www.cloudflare.com),关于Cloudflare的介绍等不在这里展开
+1. 注册账号
+2. Add website
+ ![site](https://res.cloudinary.com/incoder/image/upload/v1525516650/blog/gitpages-https-add-site.png)
+3. Querying your DNS
+ ![query](https://res.cloudinary.com/incoder/image/upload/v1525516664/blog/gitpages-https-dns-query.png)
+4. Select Plan
+ ![plan](https://res.cloudinary.com/incoder/image/upload/v1525516681/blog/gitpages-https-select-plan.png)
+5. 域名解析记录获取
+ ![continue](https://res.cloudinary.com/incoder/image/upload/v1525516694/blog/gitpages-https-continue.png)
+6. DNS 对比,并修改[Cloudflare]()提供的DNS来解析
+ ![change](https://res.cloudinary.com/incoder/image/upload/v1525516714/blog/gitpages-https-change-dns.png)
+7. 域名管理后台,修改DNS
+ ![dns](https://res.cloudinary.com/incoder/image/upload/v1525516733/blog/gitpages-https-wanwang-dns.png)
+ > 阿里云服务相关域名DNS修改帮助[文档](https://help.aliyun.com/knowledge_detail/39844.html)
+8. 成功激活
+ ![active](https://res.cloudinary.com/incoder/image/upload/v1525516756/blog/gitpages-https-active.png)
+9. SSL证书申请提醒
+ ![cer](https://res.cloudinary.com/incoder/image/upload/v1525516994/blog/gitpages-https-ssl-cer.png)
+10. 添加强制HTTPS规则
+ ![rule](https://res.cloudinary.com/incoder/image/upload/v1525517025/blog/gitpages-https-page-rule.png)
+11. 规则制定
+ ![deploy](https://res.cloudinary.com/incoder/image/upload/v1525517045/blog/gitpages-https-deploy-https.png)
+
+好了剩下的就是等证书颁发,可能要等上一些时间,具体每个人不尽相同,这里就不多做解释了。
+
+Let's all,本次的Hexo的相关初级教程就到这里
diff --git a/source/_posts/hexo-iterative.md b/source/_posts/hexo-iterative.md
new file mode 100644
index 000000000..6b17bc2bf
--- /dev/null
+++ b/source/_posts/hexo-iterative.md
@@ -0,0 +1,102 @@
+---
+title: Hexo Blog 迭代
+date: 2018-05-02 18:18:18
+categories: Hexo
+tag: Build
+---
+
+最初博客通过[Cloudflare](https://www.cloudflare.com)反向代理进行HTTPS解析,放完五一假期,Github官方开始支持[自定义域名的HTTPS解析](https://blog.github.com/2018-05-01-github-pages-custom-domains-https),在使用Cloudflare期间,经常性的521等问题烦恼,这次也可以名正言顺的弃用CloudFlare
+
+**本次迭代内容**
+* 弃用Cloudflare
+* 自动化部署
+* 常用设置
+* 常用插件安装
+
+## 弃用Cloudflare
+1. 关闭Cloudflare中设置Page Rules
+2. 删除Cloudflare的DNS记录
+3. 还原域名配置中的DNS解析
+4. 添加Github提供的IP解析
+
+[官方自定义域名设置](https://help.github.com/articles/setting-up-an-apex-domain/#configuring-an-alias-or-aname-record-with-your-dns-provider)
+
+## 自动化部署
+>[Github Pages](https://pages.github.com)是Github 提供一个渲染静态的Web页面服务
+* `{username}.github.io`仓库默认`master`分支
+* 其他项目仓库,默认`gh-pages`分支
+* [官方说明文档](https://help.github.com/articles/user-organization-and-project-pages)
+
+因此`{username}.github.io`仓库,dev分支用来存储网站的源码,`master`分支存放生成的静态文件,这样一个仓库就可以管理整个项目。每次`push`新的功能,然而每次都需要先`push`到`dev`分支,然后生成静态文件,再`push`到`master`分支,这种重复性的操作,实在太不优雅,所以采用[Travis CI](https://travis-ci.org)进行自动化部署
+
+接着Github支持自定义域名开启HTTPS的好消息,Travis CI (https://travis-ci.com) 也支持开源项目啦
+
+> Travis CI 区别
+* Travis-CI(https://travis-ci.org) :GitHub公开项目
+* Travis-CI(https://travis-ci.com) :~~私有付费项目~~,[2018.05.02也开始支持开源项目](https://blog.travis-ci.com/2018-05-02-open-source-projects-on-travis-ci-com-with-github-apps?utm_source=Broadcast&utm_campaign=2may_release)
+
+[GitHub Services are being deprecated](https://developer.github.com/changes/2018-04-25-github-services-deprecation),因此本节的自动化部署就开启Travis CI (https://travis-ci.com) 集成方案
+
+### 准备
+1. 使用GitHub账号登录Travis-CI,并确认接受访问
+2. 同步了GitHub存储库,转到您的配置文件页面并启用您想要构建的存储库
+3. 添加 `.travis.yml` 文件到构建部署项目的根目录下
+
+### Hexo 自动部署
+部署流程
+![部署流程](https://res.cloudinary.com/incoder/image/upload/v1525517765/blog/gitpages-travis-ci-branch-deploy.png)
+
+Hexo 部署脚本示例
+```bash
+language: node_js # 设置语言
+node_js: stable # 设置相应的版本
+cache:
+ directories:
+ - node_modules
+before_install:
+ - npm install -g hexo
+ - npm install -g hexo-cli
+install:
+ - npm install # 安装hexo及插件
+before_script:
+ - npm install -g mocha
+ - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public
+script:
+ - hexo cl # 清除
+ - hexo g # 生成
+after_script:
+ - cd ./public
+ - git init
+ - git config user.name "BladeCode" # 修改成自己的github用户名
+ - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱
+ - git add .
+ - git commit -m "update by Travis-CI" # 更新日志
+ - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token
+branches:
+ only:
+ - dev # 只监测dev分支,一有动静就开始构建
+env:
+ global:
+ - GH_REF: github.com/BladeCode/BladeCode.github.io.git
+```
+
+## 常用设置
+[NexT 配置使用手册](http://theme-next.iissnan.com)
+
+### NexT主题更新
+
+[官方说明](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md)
+
+## 常用插件安装
+
+* 文章字符统计 [hexo-symbols-count-time](https://github.com/theme-next/hexo-symbols-count-time)
+* 修复LeanCloud访客计数器中的严重安全漏洞 [hexo-leancloud-counter-security](https://github.com/theme-next/hexo-leancloud-counter-security)
+* 图片灯箱 [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3)
+* 本地检索 [hexo-generator-searchdb](https://github.com/theme-next/hexo-generator-searchdb)
+
+## 其他
+
+### 图床选择
+* [个人网站中的静态文件云存储选择](https://jimmysong.io/posts/static-website-storage)
+* [嗯,图片就交给它了](https://sspai.com/post/40499)
+* [NexT主题无法备份解决方式](https://github.com/iissnan/hexo-theme-next/issues/932)
diff --git a/source/_posts/hugo.md b/source/_posts/hugo.md
new file mode 100644
index 000000000..96beffa72
--- /dev/null
+++ b/source/_posts/hugo.md
@@ -0,0 +1,55 @@
+---
+title: Hugo 初体验
+date: 2018-07-11 16:34:10
+categories: Hugo
+tag: Build
+---
+
+个人博客使用[Hexo](https://hexo.io/zh-cn/index.html)搭建,使用效果很不错,在Github上创建组织[RootCluster](https://github.com/RootCluster),该组织主要存放自己新技术的学习和一些Demo实验。组织同样也可以使用Github pages服务,因此给RootCluster构建一个静态页面,可用直观清晰的看自己的项目,加之之前已用Hexo,所以这次的静态页面构建选择了新的一个静态页面生成工具,[Hugo](https://gohugo.io)是一款使用Go语言开发的静态页面生成框架。
+
+[Hugo](https://gohugo.io)是世界上最快的静态网站引擎。它是用[Go](https://golang.org)(aka Golang)编写的,由[bep](https://github.com/bep),[spf13](https://github.com/spf13)和[朋友](https://github.com/gohugoio/hugo/graphs/contributors)开发
+
+## 材料准备
+* SystemOS:Windows 10
+* [Chocolatey](https://chocolatey.org):Windows的包管理器
+* [Hugo](https://gohugo.io/getting-started/installing)
+
+## 安装
+### Chocolatey安装
+如果已安装,跳过该步骤
+* 使用 PowerShell.exe
+```bash
+Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
+```
+* 使用 cmd.exe
+```bash
+@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
+```
+以上两种方式,选择其一即可
+![PowerShell.exe 演示](https://res.cloudinary.com/incoder/image/upload/v1531314279/blog/hugo_install.png)
+
+### hugo安装
+
+```bash
+choco install hugo -confirm
+```
+
+### 初始化Hugo
+* 初始化hugo模板
+```bash
+hugo new site project_name
+```
+
+* 进入项目并启动项目
+```bash
+cd project_name
+hugo serve
+```
+
+![hugo_init](https://res.cloudinary.com/incoder/image/upload/v1531314737/blog/hugo_init.png)
+
+* [主题安装](https://themes.gohugo.io)
+
+这里选择[Elate](https://themes.gohugo.io/hugo-elate-theme)主题作为组织的网站
+
+![主题安装](https://res.cloudinary.com/incoder/image/upload/v1531316293/blog/hugo_theme.png)
\ No newline at end of file
diff --git a/source/_posts/linux-build.md b/source/_posts/linux-build.md
new file mode 100644
index 000000000..4577fb620
--- /dev/null
+++ b/source/_posts/linux-build.md
@@ -0,0 +1,314 @@
+---
+title: Linux 常用应用安装
+date: 2018-05-15 00:32:10
+categories: Linux
+tag: Build
+---
+
+作为Android开发者,目标主要是在客户端,平时也就是和服务端对接数据接口,很少直接干到服务端的Linux机器,随着这波推动团队技术平台基础开发工具模块的完善,拿到了一台Linux机器,重新构建移动端的测试服务器。
+
+该机器主要功能:
+1. 提供移动端服务Api接口
+2. 提供移动端通讯录管理授权服务
+3. 提供企业微信通讯录同步服务
+4. 管理移动端服务器Api接口文档
+
+也是第一次正式的从头开始安装所需软件及应用部署,虽然这些工作可以完全找运维去处理,难得这样的机会从头开始去熟悉Linux。
+
+**安卓,是一个基于Linux内核的开放源代码移动操作系统**,因此多了解Linux是一件双赢的事情,基于当前机器需要提供的服务,安装部署需要的软件应用
+
+废话不多说,上来就是干
+
+查看当前系统版本信息
+```bash
+lsb_release -a
+```
+以下软件版本,请下载对应支持系统的软件
+
+## Java
+
+[官方下载地址](http://www.oracle.com/technetwork/java/javase/downloads/index.html),选择需要的版本下载安装包
+>官方提供了`.rpm`,`.gz`两种格式安装包
+
+```bash
+# 1.下载安装包
+# 拷贝安装包到需要安装的服务器
+# 2.解压并安装
+# `.rpm`格式安装(jdk-xxx.rpm更换成对应的文件名)
+sudo rpm -ivh jdk-xxx.rpm
+# `.gz`格式安装(解压到指定目录,常存放`/usr/java/`路径)
+tar zxvf jdk-xxx.tar.gz -C /usr/java/
+# 3.设置环境变量
+vim /etc/profile
+# JAVA_HOME=/usr/java/jdk1.8.0_172 (修改这里路径,指向jdk安装路径)
+# PATH=$JAVA_HOME/bin:$PATH
+# CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
+# export JAVA_HOME PATH CLASSPATH
+# 4.编译配置文件,使修改生效
+source /etc/profile
+# 5.验证jdk是否安装成功
+java –version
+```
+
+## Tomcat
+
+[官方下载地址](http://tomcat.apache.org),选择需要的版本下载安装包
+>官方提供了`.zip`,`.gz`两种格式安装包,Linux服务器下载`Core`类即可
+
+```bash
+# 1.下载安装文件
+wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
+# 2.解压安装文件(解压到指定目录,常存放`/usr/tomcat/`路径)
+tar -zxvf apache-tomcat-9.0.8.tar.gz -C /usr/tomcat/
+# 3.启动tomcat
+cd /usr/local/tomcat/bin
+./startup.sh
+# 4.关闭tomcat
+./shutdown.sh
+```
+
+### 配置Web管理账号
+* 修改文件conf/tomcat-users.xml,在元素中添加帐号密码,需要指定角色
+```bash
+vim /usr/local/tomcat/conf/tomcat-users.xml
+#
+#
+#
+```
+
+### 配置端口
+* 可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效
+```bash
+vim /usr/local/tomcat/conf/server.xml
+#
+```
+
+### 应用部署
+* 放置需部署包到容器中`webapps`路径
+```bash
+cd /usr/local/tomcat/webapps
+```
+* 启动服务
+```bash
+cd /usr/local/tomcat/bin
+./startup.sh
+```
+
+## Apache
+一般系统中以及包含apache应用
+[官方下载地址](http://httpd.apache.org/download.cgi),选择需要的版本下载安装包
+>官方提供了`.bz2`,`.gz`两种格式安装包
+
+### 安装
+查看系统中是否已包含httpd应用
+```
+rpm -qa | grep httpd 或 yum list | grep httpd
+```
+
+* 方式一
+```bash
+# 1.下载需要的版本文件
+wget http://apache.claz.org//httpd/httpd-2.4.33.tar.gz
+# 2.解压安装文件(解压到指定目录,常存放`/usr/local/httpd/`路径)
+tar -zxvf httpd-2.4.33.tar.gz -C /usr/local/httpd/
+```
+
+* 方式二(推荐)
+```bash
+# 1.下载安装httpd
+yum install httpd
+```
+
+### 卸载
+```bash
+yum erase httpd.x86_64 或 rpm -e httpd.x86_64
+```
+
+### 常用命令
+```bash
+# 查看服务运行状态
+systemctl status httpd.service
+# 启动apache服务
+systemctl start httpd.service
+# 停止apache服务
+systemctl stop httpd.service
+```
+
+RPM默认安装路径:
+
+| 路径 | 说明 |
+| ---------- | --- |
+| /etc | 一些设置文件放置的目录如/etc/crontab |
+| /usr/bin | 一些可执行文件 |
+| /usr/lib | 一些程序使用的动态函数库 |
+| /usr/share/doc | 一些基本的软件使用手册与帮助文档 |
+| /usr/share/man | 一些man page文件 |
+
+## Nginx
+[官方下载地址](http://nginx.org/download),选择需要的版本下载安装包(最新安装版本1.14.0)
+>官方提供了`.zip`,`.gz`两种格式安装包
+
+### 安装
+
+* 方式一
+```bash
+# 1.下载安装文件
+wget http://nginx.org/download/nginx-1.14.0.tar.gz
+# 2.解压安装文件(解压到指定目录,常存放`/usr/local/`路径)
+tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/
+# 3. 编译安装依赖库
+cd /usr/local/nginx/
+./configure
+```
+
+* 方式二
+```bash
+# 默认安装路径/etc/nginx/
+yum install nginx
+```
+
+### 常用命令
+* 加压文件安装常用命令
+```bash
+# 停止ngix
+/usr/local/nginx/sbin/nginx -s quit
+# 重新载入nginx(当配置信息发生修改时)
+/usr/local/nginx/sbin/nginx -s reload
+# 查看版本
+/usr/local/nginx/sbin/nginx -v
+# 查看nginx的配置文件的目录
+/usr/local/nginx/sbin/nginx -t
+# 查看帮助信息
+/usr/local/nginx/sbin/nginx -h
+```
+* yum安装常用命令
+```bash
+# 启动
+systemctl start nginx
+# 停止
+systemctl stop nginx
+# 重启
+systemctl restart nginx
+# 查看运行状态
+systemctl status nginx
+# 开机启动
+systemctl enable nginx
+```
+
+## Node
+一般系统中以及包含apache应用
+[官方下载地址](https://nodejs.org),选择需要的版本下载安装包
+>官方提供了`.gz`,`.7z`,`zip`等多种格式安装包
+
+### 安装
+```bash
+# 1.下载安装文件
+wget https://nodejs.org/download/chakracore-release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
+# 2.解压安装文件(解压到当前目录)
+tar -zxf node-v8.6.0-linux-x64.tar.gz
+# 3.建立软链接,实现全局访问
+ln -s /root/node-v8.6.0-linux-x64/bin/node /usr/local/bin/node
+ln -s /root/node-v8.6.0-linux-x64/bin/npm /usr/local/bin/npm
+```
+
+## Redis
+[官方下载地址](https://redis.io/download),选择需要的版本下载安装包
+>官方提供了`.gz`格式安装包
+
+### 安装
+```bash
+# 1.下载安装文件
+wget wget http://download.redis.io/releases/redis-4.0.10.tar.gz
+# 2.解压安装文件(解压到当前目录)
+tar xzf redis-4.0.10.tar.gz
+# 3.编译安装
+cd redis-4.0.10
+make
+# 4.启动服务
+src/redis-server
+```
+
+## 配置
+```bash
+# 1.修改redis.conf文件中daemonize属性 为 yes
+vim /you_install_path/redis.conf
+```
+> 其他配置根据自身需要调整修改
+
+## 其他命令
+1. 关闭服务
+```bash
+redis-cli -h 127.0.0.1 -p 6379 shutdown
+```
+2. 非安全模式启动
+```bash
+# 后台以非安全模式启动
+nohup /usr/local/bin/redis-server --protected-mode no &
+```
+
+## 常用命令
+
+### 文件查找
+#### find
+find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
+* 基本格式:
+find path expression
+* 示例:
+ * 在根目录下查找文件httpd.conf,表示在整个硬盘查找
+ find / -name httpd.conf
+ * 表示当前目录下查找文件名开头是字符串‘srm’的文件
+ find . -name 'srm*'
+ * 查找在系统中最后10分钟访问的文件(access time)
+ find / -amin -10
+ * 查找在系统中属于fred这个用户的文件
+ find / -user fred
+ * 查找出小于1000KB的文件
+ find / -size -1000k
+
+#### grep
+grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
+* 基本格式:
+find expression
+* 主要参数:
+ -c:只输出匹配行的计数。
+ -i:不区分大小写
+ -h:查询多文件时不显示文件名。
+ -l:查询多文件时只输出包含匹配字符的文件名。
+ -n:显示匹配行及行号。
+ -s:不显示不存在或无匹配文本的错误信息。
+ -v:显示不包含匹配文本的所有行。
+* 示例:
+ * 显示所有包含每行字符串至少有5个连续小写字符的字符串的行
+ grep ‘[a-z]\{5\}’ aa
+ * 显示所有以d开头的文件中包含 test的行
+ grep 'test' d*
+
+### 进程相关
+* 查看指定服务进程
+```bash
+# 查看httpd服务进程
+ps -ef | grep httpd
+# UID PID PPID C STIME TTY TIME CMD
+# root 7192 7103 0 19:59 pts/3 00:00:00 grep --color=auto httpd
+```
+ {% note info %}
+ * UID:用户ID
+ * PID:进程ID
+ * PPID:父进程ID
+ * C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
+ * STIME:进程启动的时间
+ * TTY:完整的终端名称
+ * TIME:CPU时间
+ * CMD:完整的启动进程所用的命令和参数
+ {% endnote %}
+
+* 杀死指定进程
+```bash
+kill -9 pid(逐个都删除)
+```
+* 查看指定端口
+```bash
+# 检测6379端口是否在监听
+netstat -lntp | grep 6379
+```
+>
\ No newline at end of file
diff --git a/source/_posts/linux-mysql.md b/source/_posts/linux-mysql.md
new file mode 100644
index 000000000..04748313c
--- /dev/null
+++ b/source/_posts/linux-mysql.md
@@ -0,0 +1,101 @@
+---
+title: Linux 之 MySQL
+date: 2018-07-23 22:30:10
+categories: Linux
+tag: MySQL
+---
+
+之前粗略的接触了Linux的基础使用和安装,这次准备在自购的服务器上跑些应用,纯属娱乐,废话不说,上来就先仍数据库。
+数据库常用的`Oracle`,`MySQL`,`SQL Server`,`MongoDB`等,排名不分先后,自己平时接触最多的也就是`MySQL`,`MongoDB`,好`MySQL`先来一份。
+
+## 介绍
+MySQL是一个开源数据库管理系统,通常作为流行的LEMP(Linux,Nginx,MySQL / MariaDB,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。
+
+[CentOS 7](https://www.centos.org)更喜欢[MariaDB](https://mariadb.org),它是由原始`MySQL`开发人员管理的`MySQL`分支,旨在替代MySQL。如果你在CentOS 7上运行`yum install mysql`,那么安装的是MariaDB,而不是MySQL。
+
+## 清单
+* OS: CentOS 7
+* DataBase:MySQL 8.0.11
+
+## 安装
+
+```bash
+# 1. 获取官方yum源安装包 mysql80-community-release-el7-1.noarch.rpm 是根据官网提供的版本信息
+wget wget https://dev.mysql.com/get/`mysql80-community-release-el7-1.noarch.rpm`
+# 2. 安装rpm包
+rpm -ivh mysql80-community-release-el7-1.noarch.rpm
+# 3. 安装mysql-server
+yum install -y mysql-server
+# 4. 启动mysqld服务
+systemctl start mysqld
+# 5. 查看是否成功启动
+ps aux|grep mysqld
+# 6. 设置mysqld服务开机自启动
+systemctl enable mysqld
+```
+
+## 配置
+
+由于MySQL从5.7开始不允许在首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在`/var/log/mysqld.log`文件中
+
+```bash
+# 1. 查看系统提供密码
+cat /var/log/mysqld.log|grep 'A temporary password'
+# 2. 使用获取到的密码登录MySQL
+mysql -u root -p
+# 3. 切换数据库
+use mysql;
+# 4. 修改root密码 your_password 替换成你自己的密码就可以了,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度大于6
+alter user 'root'@'localhost' identified by 'your_password';
+```
+
+## 链接
+自己平时习惯使用 [Navicat](https://www.navicat.com.cn) 进行数据库操作,因此这里进行配置链接已在云端刚刚安装的MySQL服务
+![linux-mysql](https://res.cloudinary.com/incoder/image/upload/v1532362215/blog/linux-mysql.png)
+### ERROR 1130
+按照上图图的配置信息链接MySQL,发现错误提示:`ERROR 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server`
+
+#### 原因
+不允许从远程登陆MySQL服务,只能在localhost
+
+#### 解决方法
+```bash
+# 切换数据库
+use mysql;
+# 修改user 指定的host 为 %
+update user set host = '%' where user = 'root';
+# 成功修改
++-----------+------------------+
+| host | user |
++-----------+------------------+
+| % | root |
+| localhost | mysql.infoschema |
+| localhost | mysql.session |
+| localhost | mysql.sys |
++-----------+------------------+
+4 rows in set (0.00 sec)
+```
+
+### ERROR 2059
+继续重试链接,错误提示:`ERROR 2059: Authentication plugin 'caching_sha2_password' cannot be loaded:The specified module could not be found.`
+
+#### 原因
+MySQL 8不支持动态修改密码验证方式
+
+#### 解决方法
+```bash
+# 停止mysql
+systemctl stop mysqld.service
+# my.cnf文件中默认有下面的语句,删除前面的#号即可,没有的话就把它添加到my.cnf中 ,默认路径`/etc/my.cnf`
+default-authentication-plugin=mysql_native_password
+# 切换数据库
+use mysql
+# 给指定用户设置密码,这里`%`是因为之前已经将远程没有特殊指定,用%代替了localhost
+ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
+```
+
+## 附录
+* [安装过程Pdf]()
+* [How To Install MySQL on CentOS 7](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7)
+* [ERROR 1130](https://blog.csdn.net/nyist327/article/details/45074559)
+* [ERROR 2059](https://blog.csdn.net/airt_xiang/article/details/80261674)
\ No newline at end of file
diff --git a/source/_posts/memory-hs.md b/source/_posts/memory-hs.md
new file mode 100644
index 000000000..c1755d56c
--- /dev/null
+++ b/source/_posts/memory-hs.md
@@ -0,0 +1,34 @@
+---
+title: 忆·黄山
+date: 2018-05-01 00:02:00
+categories: Memory
+tag: 黄山
+---
+
+{% cq %} 黄山归来不看岳
{% endcq %}
+
+五岳未归,先品黄山。以前看黄山还是小学课本《黄山》一文介绍黄山的美,黄山的秀丽,黄山的与众不同,这次是亲身去体验黄山的姿态;趁着五一,趁着年轻,趁着...。废话不多讲,先看黄山日出美景
+
+{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1528018149/blog/video/HuangShan-Sunrise.mp4" "pic=https://res.cloudinary.com/incoder/image/upload/v1528024134/blog/travel/travel-huangshan-back.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %}
+>别问我为啥抖,没有支撑点,全程手持...逃
+
+这次黄山之行并没有做任何功课,计划到实施前后不超过15天,抱着走一步,看一点的心态去玩,没想到五一节假日,来黄山的人不是很多。
+
+## 出行方式
+杭州 **城西客运站** 做大巴直达黄山景区,票价:¥110,时间:大约4小时左右到达
+## 攻略
+逃,没有......
+由于到达黄山游客集散中心已是14:00,由于距离黄山还有10多公里,你可以走路去黄山山脚下,而且16:00之后没有大巴去黄山景区。因此随便找了个地吃完中午饭,就往乘大巴车黄山景区去了(¥12/人),由于上山的入口有好几个,我们也没有去研究,大巴到 **云谷寺** 景区,我们也就下车从这里出发往山上去了,你可以坐缆车去往山顶,我们一行三人,选择了徒步上山,对了门票:¥230/人
+
+一路说说笑笑,也没有预订上山的旅店,我们心真大,刚走了没多久,就看到了两个人被交椅抬着下山了,其中一个应该是摔了,头破血流的样子,还没开始,就...;没多管,一路还是很轻松,毕竟都是年轻人,体力不错,走到 **白鹅岭** 已经开始下雨,雨越下越大,因为在边走边看的路上,我们决定来黄山当然是去 **迎客松** 的景点,然后我们顺着 **白鹅岭** 前往 **白鹅山庄旅游商场** 去避雨,然后是人多的无法挪开脚,此时天色已晚,我们稍作休息,找了半天也没有能睡得地,那床都是人挤人。我们找了个茶馆,吃了些带着的食品,喝了一小时茶,大约20:00左右,我们决定,今晚夜行到 **迎客松**
+
+雨后起了大雾,山顶那时雾色正浓,能见度大约在3米。我们三人也紧随其形,在 **光明顶** 片区玩了一会,这里看日出不错,当我们并没有这里等日出,毕竟这里离 **迎客松** 有一小时多的行程,我们要明天早早的在 **迎客松** 那里拍照装逼,拍完照然后回走去最高峰 **莲花峰** ,然而到了 **迎客松** 才发现,并不像电视上看到的,是在山的悬崖边。好了,这会才23:00多,怎么办,还有好几小时,又没有帐篷什么地可住,三人就在这 **迎客松** 前的广场上,发现了超大遮阳伞两把,哈哈哈,我们就用遮阳伞前后堵住,加上自己的雨伞,构建了一个堡垒,这下,我们三可用在里面睡觉了,雨后的山上很潮湿,就这样半将半究的,坚持到4点多。
+
+天快要亮了,要找地儿去拍日出,我答应别人了,要发日出照片给她,往回走去 **莲花峰** 那里并不合适,更重要的是山路也被封,不上上去,只好找到 **玉屏索道** 的另一条路上,这里刚刚好可用看到日出
+
+![日出](https://res.cloudinary.com/incoder/image/upload/v1528023909/blog/travel/travel-huangshan-sunrise.jpg)
+
+拍完日出,我们快速折回到 **迎客松** ,那里已经开始有三三两两的人了,我们动作要快,否则等会从索道上来大批人马,嗯,快速装逼完成,迅速撤离战场
+
+![迎客松](https://res.cloudinary.com/incoder/image/upload/v1528023881/blog/travel/travel-huangshan-yks.jpg)
+
diff --git a/source/_posts/memory-hz1.md b/source/_posts/memory-hz1.md
new file mode 100644
index 000000000..44feaa58b
--- /dev/null
+++ b/source/_posts/memory-hz1.md
@@ -0,0 +1,20 @@
+---
+title: 品·杭州
+date: 2018-04-29 00:11:01
+categories: Memory
+tag: 杭州
+---
+
+上有天堂,下游苏杭,杭州,一个温文尔雅,一个记忆中天堂,一个南方姑娘的城市。
+杭州:毕业后的第二个城市,很开心在这样的城市生活,工作,结识这里的人,杭州和家乡的气候非常相似,因此在杭州有种在家的感觉,在这里遇到的的人,我都会记着你们美丽帅气的脸庞
+
+18年是一个动荡的一年,一起的伙伴渐渐的离开了昔日的团队,这两年中,有的人毕业,有的人结婚,有的人生子,有的人成长,感谢我能成为你们生命中的一个过客,和你们一起经历生活百态
+
+不管你们在何方,从事着什么样的工作,过着什么样的生活,我会想你们,愿你们的一切顺利
+
+粗略的剪影,请异步[优酷](http://v.youku.com/v_show/id_XMzU4NTgyMDE0NA==.html?spm=a2hzp.8244740.0.0)
+
+{% note default %}
+不遵守规则的人,我们叫他废物,但是,不珍惜同伴的人,连废物都不如
+——宁智波·带土
+{% endnote %}
\ No newline at end of file
diff --git a/source/_posts/movie-fierce.md b/source/_posts/movie-fierce.md
new file mode 100644
index 000000000..f964d12b2
--- /dev/null
+++ b/source/_posts/movie-fierce.md
@@ -0,0 +1,22 @@
+---
+title: 《激战》
+date: 2018-10-03 00:02:00
+categories: Movie
+tag: 黄山
+---
+
+{% cq %} 怕,你就会输一辈子
{% endcq %}
+
+{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %}
+
+喜欢其中的一些台词,大伙共勉
+* 其实,我每次上台都很怕的,不过每次我都会跟自己说,我能做到
+* 这场比赛我可能会跌倒,但我一定会站起来
+* 怕,你就会输一辈子
+
+自己的一些感触:
+其实很多时候,道理都懂,但却不能坚持下去,但这些道理都在自己生活中一点点的用生活感悟出来,那这些道理会更浓烈,更让人刻骨铭心
+* 尊重和珍惜,那些愿意为你去花时间的人
+* 要和自己志同道合,有共同目标的伙伴去互相较劲
+* 从哪里跌倒就要从哪里爬起来
+* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道
\ No newline at end of file
diff --git a/source/_posts/network-http.md b/source/_posts/network-http.md
new file mode 100644
index 000000000..73b5461ac
--- /dev/null
+++ b/source/_posts/network-http.md
@@ -0,0 +1,179 @@
+---
+title: Http VS Https
+date: 2018-06-22 01:14:25
+categories: Network
+tag: [Http,Https]
+---
+## 基础名称
+### 请求报文
+客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
+请求行(request line)、请求头(header)、请求内容组成,如下请求报文的一般格式。
+![请求报文](https://user-gold-cdn.xitu.io/2018/4/16/162cdac93015af8f?imageView2/0/w/1280/h/960/format/webp/ignore-error/1)
+
+#### 请求行
+1. 方法:
+ * GET: 获取资源
+ * POST: 向服务器端发送数据,传输实体主体
+ * PUT: 传输文件
+ * HEAD: 获取报文首部
+ * DELETE: 删除文件
+ * OPTIONS: 询问支持的方法
+ * TRACE: 追踪路径
+2. URL:
+ `scheme://host:port/path?query`
+ * scheme: 表示协议,如Http, Https, Ftp等
+ * host: 表示所访问资源所在的主机名:如:www.baidu.com
+ * port: 表示端口号,Http默认为80,Https默认为443
+ * path: 表示所访问的资源在目标主机上的储存路径
+ * query: 表示查询条件
+
+3. 协议/版本号:
+
+#### 请求头
+1. 通用首部(General Header)
+2. 请求首部(Request Header)
+3. 实体首部(Entity Header Fields)
+
+#### 请求内容
+如: 客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里)
+
+例如:
+![请求示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-request.png)
+
+### 响应报文
+服务端响应一个HTTP请求消息包括以下格式:
+响应行(response line)、响应头(header)、响应内容组成
+
+#### 响应行
+1. 状态码:
+ * 1XX:Informational(信息性状态码)
+ * 2XX:Success(成功状态码)
+ * 3XX:Redirection(重定向)
+ * 4XX:Client Error(客户端错误状态码)
+ * 5XX:Server Error(服务器错误状态吗)
+2. 状态码描述:
+3. 协议/版本号:
+
+#### 响应头
+1. 通用首部(General Header)
+2. 响应首部(Response Header)
+3. 实体首部(Entity Header Fields)
+
+#### 响应内容
+如:服务器返回的HTML、JSON等数据
+
+![响应示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-response.png)
+
+## Http
+### 概念
+* [HTTP](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE):超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议.
+* HTTP是万维网的数据通信的基础.
+
+### 通信
+1. 建立TCP连接
+在HTTP工作开始之前,Client首先要通过网络与Service建立连接,该连接是通过TCP来完成的,HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接
+2. Client发起HTTP请求(Request)
+Requset通常包含请求行,请求头,请求内容这三部风组成的请求报文
+3. Service发送HTTP响应(Response)
+Response通常包含响应行,响应头,响应内容这三部风组成的响应报文
+4. Client关闭TCP连接
+
+### 特点
+1. 无状态
+ * 每个请求结束后都会被关闭,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
+ * 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器
+2. 明文传输,可能被窃听
+3. 不验证通信方的身份,可能遭遇伪装
+ * HTTP 协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中 URI 真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题
+ * HTTP 协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求
+4. 无法证明报文的完整性,可能遭遇篡改
+ * 在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉
+
+## Https
+### 概念
+* [HTTPS](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE):超文本传输安全协议(Hypertext Transfer Protocol Secure,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议.
+* HTTPS经由HTTP进行通信,但利用`SSL/TLS`来加密数据包.
+
+> HTTP+加密+认证+完整性保护 = HTTPS
+
+![HTTP VS HTTPS](https://res.cloudinary.com/incoder/image/upload/v1529822573/HTTPS.png)
+
+### 通信
+#### SSL/TLS
+SSL/TLS:安全传输层协议(Transport Layer Security), 是介于TCP和HTTP之间的一层安全协议,TLS的前身是SSL(Secure Sockets Layer)
+
+>TLS/SSL关系
+* SSL2.0
+* SSL3.0
+* TLS1.0(SSL3.1)
+* TLS1.1(SSL3.2)
+* TLS1.2(SSL3.3)
+
+#### SSL/TLS工作原理
+HTTPS协议的主要功能都依赖于SSL/TLS协议,SSL/TLS的功能实现主要依赖于三类算法:`对称加密`,`非对称加密`,`散列函数Hash`
+* 非对称加密实现身份认证和密钥协商,
+* 对称加密算法采用协商的密钥对数据加密,
+* 基于散列函数验证信息的完整性
+
+#### SSL/TLS协议实现
+TLS以记录协议(record protocol)实现。记录协议负责在传输连接上交换所有的底层消息,并可以配置加密。每一条TLS记录以一个短标头起始。标头包含记录内容的类型(或子协议)、协议版本和长度
+
+TLS的主规格说明书定义了四个核心子协议:
+
+* 握手协议(handshake protocol);
+* 密钥规格变更协议(change cipher spec protocol);
+* 应用数据协议(application data protocol);
+* 警报协议(alert protocol);
+
+#### 握手协议
+握手是TLS协议中最精密复杂的部分。在这个过程中,通信双方协商连接参数,并且完成身份验证。根据使用的功能的不同,整个过程通常需要交换6~10条消息。根据配置和支持的协议扩展的不同,交换过程可能有许多变种,在使用中经常可以观察到以下三种流程:
+* 单向验证(完整的握手,对服务器进行身份验证)
+* 双向验证(对客户端和服务器都进行身份验证的握手)
+* 简短握手(恢复之前的会话)
+
+##### 单向验证
+![单向验证](https://blog-10039692.file.myqcloud.com/1494841223417_6503_1494841223715.png)
+1. Handshake:ClentHello
+客户端通过发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
+2. Handshake:ServerHello
+服务器可进行 SSL通信时,会以 ServerHello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
+3. Handshake:Certificate
+之后服务器发送 Certificate 报文。报文中包含公开密钥证书。
+4. Handshake:ServerHelloDone
+最后服务器发送 ServerHelloDone 报文通知客户端,最初阶段的 SSL握手协商部分结束。
+5. Handshake:ClientKeyExchange
+SSL第一次握手结束之后,客户端以 ClientKeyExchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用3 中的公开密钥进行加密。
+6. ChangeCipherSpec
+接着客户端继续发送 ChangeCipherSpec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。
+7. Handshake:Finished
+客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
+8. ChangeCipherSpec
+服务器同样发送 ChangeCipherSpec 报文。
+9. Handshake:Finished
+服务器同样发送 Finished 报文。
+10. Application Data(HTTP)
+服务器和客户端的 Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。
+11. Application Data(HTTP)
+应用层协议通信,即发送 HTTP 响应。
+12. Alert:warning,close notify
+最后由客户端断开连接。断开连接时,发送 close_notify 报文(上图做了一些省略,实际到这一步还需要发送TCP FIN报文关闭TCP链接)
+
+##### 双向验证
+![双向验证](https://blog-10039692.file.myqcloud.com/1494841503771_6933_1494841504095.png)
+同单向验证流程相比,双向验证多了如下两条消息:`CertificateRequest`与`CertificateVerify`,其余流程大致相同
+* CertificateRequest
+CertificateRequest是TLS规定的一个可选功能,用于服务器认证客户端的身份。通过服务器要求客户端发送一个证书实现,服务器应该在ServerKeyExchange之后立即发送CertificateRequest消息
+* CertificateVerify
+当需要做客户端认证时,客户端发送CertificateVerify消息,来证明自己确实拥有客户端证书的私钥。这条消息仅仅在客户端证书有签名能力的情况下发送
+
+#### 应用数据协议(application data protocol)
+应用数据协议携带着应用消息,只以TLS的角度考虑的话,这些就是数据缓冲区。记录层使用当前连接安全参数对这些消息进行打包、碎片整理和加密
+
+#### 警报协议(alert protocol)
+警报的目的是以简单的通知机制告知对端通信出现异常状况。它通常会携带close_notify异常,在连接关闭时使用,报告错误
+
+## 附录
+* 《图解HTTP》
+* [HTTP | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview)
+* [数字证书及CA的扫盲介绍](https://kb.cnblogs.com/page/194742)
+* [HTTPS 原理浅析及其在 Android 中的使用](https://cloud.tencent.com/developer/article/1005073)
\ No newline at end of file
diff --git a/source/_posts/network-okhttp1.md b/source/_posts/network-okhttp1.md
new file mode 100644
index 000000000..119b7ef10
--- /dev/null
+++ b/source/_posts/network-okhttp1.md
@@ -0,0 +1,286 @@
+---
+title: Network(一) 之OkHttp 入门
+date: 2018-06-23 12:44:25
+categories: Network
+tag: OkHttp
+---
+
+自从Android4.4的源码中可以看到`HttpURLConnection`已经替换成`OkHttp`开始( [JakeWharton曾在Twitter表示](https://twitter.com/JakeWharton/status/482563299511250944) ) ,`OkHttp`+`Retrofit`+`RxJava`的组合网络请求一直经久不衰,主流app的网络架构基本都是这样的组合模式,存在即合理,说明`OkHttp`+`Retrofit`+`RxJava`的方式确实给开发,用户体验等带来可观的优势,那么这个系列文章围绕Android的网络展开.
+
+OkHttp:An HTTP & HTTP/2 client for Android and Java applications
+
+>Android 历史网络库
+* `HttpClient` 是 Apache 提供的HTTP网络访问接口,从一开始的时候就被引入到了Android的API中;
+* `HttpURLConnection` 是一种多用途, 轻量极的HTTP客户端, 提供的API比较简单, 可以容易地去使用和扩展.
+
+## OkHttp优势
+* 支持HTTP/2, HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发, 通过在一个连接上一次性发送多个请求来发送或接收数据
+* 如果HTTP/2不可用, 连接池复用技术也可以极大减少延时
+* 支持GZIP, 可以压缩下载体积
+* 响应缓存可以直接避免重复请求
+* 会从很多常用的连接问题中自动恢复
+* 如果您的服务器配置了多个IP地址, 当第一个IP连接失败的时候, OkHttp会自动尝试下一个IP
+* OkHttp还处理了代理服务器问题和SSL握手失败问题,等等...
+
+## 基本使用
+该系列版本说明
+* OkHttp版本统一:**3.10.0**
+* JDK:**1.8+**
+
+Gradle包导入
+```groovy
+// okhttp核心库
+implementation 'com.squareup.okhttp3:okhttp:3.10.0'
+// okhttp网络请求拦截日志库
+implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
+```
+### OkHttp请求
+已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87)文章中介绍了,HTTP请求相关内容
+
+### OkHttp响应
+已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E5%93%8D%E5%BA%94%E6%8A%A5%E6%96%87)文章中介绍了,HTTP响应相关内容
+
+## 同步与异步
+`同步`和`异步`关注的是消息通信机制 (synchronous communication/ asynchronous communication)
+### 同步
+就是在发出一个 **调用** 时,在没有得到结果之前,该 **调用** 就不返回,但是一旦调用返回,就得到返回值了。
+换句话说,就是由 **调用者** 主动等待这个 **调用** 的结果。
+Okhttp同步(`execute()`):Invokes the request immediately, and blocks until the response can be processed or is in error.
+
+```java
+OkHttpClient client = new OkHttpClient();
+
+String run(String url) throws IOException {
+ Request request = new Request.Builder().url(url).build();
+ // 执行同步操作
+ Response response = client.newCall(request).execute();
+ if (response.isSuccessful()) {
+ return response.body().string();
+ } else {
+ throw new IOException("Unexpected code " + response);
+ }
+}
+```
+### 异步
+**异步** 则与同步相反,**调用** 在发出之后,这个调用就直接返回了,所以没有返回结果。
+换句话说,当一个异步过程调用发出后,**调用者** 不会立刻得到结果。而是在 **调用** 发出后,**被调用者** 通过状态、通知来通知 **调用者**,或通过回调函数处理这个调用。
+Okhttp同步(`enqueue(Callback responseCallback)`):Schedules the request to be executed at some point in the future.
+
+```java
+String url = "https://api.github.com/users/BladeCode";
+OkHttpClient client = new OkHttpClient();
+
+Request request = new Request.Builder().url(url).build();
+// 返回response 对象
+Response response = client.newCall(request).enqueue(new Callback() {
+
+ @Override
+ public void onFailure(Call call, IOException e) {
+ System.out.println(e.toString());
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) throws IOException {
+ // 字符串形式表达响应
+ System.out.println(response.body().string());
+ // 或流的形式表达响应
+ System.out.println(response.body().charStream());
+ System.out.println(response.body().byteStream());
+ }
+});
+```
+>注意:
+* 响应体太大(超过1MB), 应避免使用 string()方法, 因为它会将把整个文档加载到内存中.
+* 对于超过1MB的响应body, 应使用流的方式来处理响应body. 这和我们处理xml文档的逻辑是一致的, 小文件可以载入内存树状解析, 大文件就必须流式解析
+
+## OkHttp Get
+```java
+OkHttpClient client = new OkHttpClient();
+
+String run(String url) throws IOException {
+ Request request = new Request.Builder().url(url).build();
+ Response response = client.newCall(request).execute();
+
+ if (response.isSuccessful()) {
+ return response.body().string();
+ } else {
+ throw new IOException("Unexpected code " + response);
+ }
+}
+```
+
+## OkHttp Post
+```java
+public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+
+OkHttpClient client = new OkHttpClient();
+
+String post(String url, String json) throws IOException {
+ RequestBody body = RequestBody.create(JSON, json);
+ Request request = new Request.Builder()
+ .url(url)
+ .post(body)
+ .build();
+
+ Response response = client.newCall(request).execute();
+
+ if (response.isSuccessful()) {
+ return response.body().string();
+ } else {
+ throw new IOException("Unexpected code " + response);
+ }
+
+}
+```
+
+### 提交String
+```java
+public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");
+
+private final OkHttpClient client = new OkHttpClient();
+
+public void run() throws Exception {
+ String postBody = ""
+ + "Releases\n"
+ + "--------\n"
+ + "\n"
+ + " * _1.0_ May 6, 2013\n"
+ + " * _1.1_ June 15, 2013\n"
+ + " * _1.2_ August 11, 2013\n";
+
+ Request request = new Request.Builder()
+ .url("https://api.github.com/markdown/raw")
+ .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody))
+ .build();
+
+ Response response = client.newCall(request).execute();
+ if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
+
+ System.out.println(response.body().string());
+}
+```
+> 注意:当提交数据大于1MB,请使用流的方式
+
+### 提交流
+```java
+public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");
+
+private final OkHttpClient client = new OkHttpClient();
+
+public void run() throws Exception {
+ RequestBody requestBody = new RequestBody() {
+ @Override
+ public MediaType contentType() {
+ return MEDIA_TYPE_MARKDOWN;
+ }
+
+ @Override
+ public void writeTo(BufferedSink sink) throws IOException {
+ sink.writeUtf8("Numbers\n");
+ sink.writeUtf8("-------\n");
+ for (int i = 2; i <= 997; i++) {
+ sink.writeUtf8(String.format(" * %s = %s\n", i, factor(i)));
+ }
+ }
+
+ private String factor(int n) {
+ for (int i = 2; i < n; i++) {
+ int x = n / i;
+ if (x * i == n) return factor(x) + " × " + i;
+ }
+ return Integer.toString(n);
+ }
+ };
+
+ Request request = new Request.Builder()
+ .url("https://api.github.com/markdown/raw")
+ .post(requestBody)
+ .build();
+
+ Response response = client.newCall(request).execute();
+ if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
+
+ System.out.println(response.body().string());
+}
+```
+
+### 提交文件
+```java
+public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");
+
+private final OkHttpClient client = new OkHttpClient();
+
+public void run() throws Exception {
+ File file = new File("README.md");
+
+ Request request = new Request.Builder()
+ .url("https://api.github.com/BladeCode/raw")
+ .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file))
+ .build();
+
+ Response response = client.newCall(request).execute();
+ if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
+
+ System.out.println(response.body().string());
+}
+```
+
+### 提交表单
+使用`FormEncodingBuilder`来构建和HTML