[
  {
    "path": ".gitattributes",
    "content": "*.js linguist-language=python\n*.css linguist-language=python\n*.html linguist-language=python\n"
  },
  {
    "path": "README.md",
    "content": "# domain_screen\n\n批量采集站点基础信息&截图。\n\n## log\n\n20190726:修复截图过大导致的网络超时问题及简化使用，支持批量截图，截图完的域名列表会直接移到finished目录。（需要截图的域名列表放在根目录下即可）\n\n20190724:感谢\\xeb\\xfe师傅帮忙修复一个bug。\n\n## about\n\n[bcScan](https://github.com/TheKingOfDuck/bcScan)的升级版本，包括但不限于提升了截图的速度，报告的友好度。\n\npy3环境下运行，报告生成在report目录下。依赖缺啥就自己pip装啥就OK了。\n\n## use:\n\npython3 main.py\n\n\n\n![-w1280](https://i.loli.net/2019/08/21/epV67dUFoHwiaQn.png)\n\n"
  },
  {
    "path": "main.py",
    "content": "# -*- coding: utf-8 -*-\n\n__author__ = 'CoolCat'\n\nimport asyncio\nfrom pyppeteer import launch\nimport sys\nimport shutil\n\n# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name：     srcScan\n   Description :\n   Author :       CoolCat\n   date：          2019/3/14\n-------------------------------------------------\n   Change Activity:\n                   2019/3/14:\n-------------------------------------------------\n\"\"\"\n\n# coding=utf-8\n\nimport re\nimport requests\nimport time\nimport os\nimport socket\n\nglobal info\nimport urllib3\n\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\nhtmlHeader = \"\"\"\n<!DOCTYPE html>\n<head>\n\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n  <link href=\"../template_files/main.css\" rel=\"stylesheet\" type=\"text/css\">\n  <title>子域名扫描报告</title></head>\n<body style=\"padding-right: 320px;\">\n  <div class=\"main-inner\">\n    <div id=\"posts\" class=\"posts-expand\">\n      <header class=\"post-header\">\n        <h1 class=\"post-title\" itemprop=\"name headline\">子域名扫描报告</h1>\n        <div class=\"post-meta\">\n          <span class=\"post-time\">\n            <span class=\"post-meta-item-text\">生成于</span>\n            <time title=\"Post created\" itemprop=\"dateCreated datePublished\">timeaaaaaaa</time></span>\n        </div>\n      </header>\n      <div class=\"post-body\" itemprop=\"articleBody\">\n\"\"\"\n\nhtmlcat = \"\"\"\n        <aside id=\"sidebar\" class=\"sidebar sidebar-active\" style=\"display: block; width: 320px;\">\n          <div class=\"sidebar-inner\">\n            <ul class=\"sidebar-nav motion-element\" style=\"opacity: 1; display: block; transform: translateX(0px);\">\n              <li class=\"sidebar-nav-toc sidebar-nav-active\" data-target=\"post-toc-wrap\">目录</li></ul>\n            <!--noindex-->\n            <section class=\"post-toc-wrap motion-element sidebar-panel sidebar-panel-active\" style=\"opacity: 1; display: block; transform: translateX(0px);\">\n              <div class=\"post-toc\" style=\"max-height: 750px; width: calc(100% + 0px);\">\n                <div class=\"post-toc-content\">\n                  <ol class=\"nav\">\n\"\"\"\n\nhtmlfooter = \"\"\"\n      <div>\n        <div style=\"padding: 10px 0; margin: 20px auto; width: 90%; text-align: center;\">\n          <div>扫描赞赏二维码，救救没钱的孩子吧！</div>\n          <div id=\"QR\" style=\"display: block;\">\n            <div id=\"wechat\" style=\"display: inline-block\">\n                <img id=\"wechat_qr\" src=\"../template_files/wechat.jpg\" ></a>\n              <p>微   信</p>\n            </div>\n            <div id=\"alipay\" style=\"display: inline-block\">\n                <img id=\"alipay_qr\" src=\"../template_files/alipay.png\" ></a>\n              <p>支付宝</p>\n            </div>\n          </div>\n        </div>\n\n\"\"\"\n\nhtmlcat2 = \"\"\"\n                    <li class=\"nav-item nav-level-1\">\n                        <a class=\"nav-link\" href=\"#domain.com\">\n                            <span class=\"nav-number\">nnnnn.</span>\n                            <span class=\"nav-text\">domain.com</span></a>\n                    </li>\n\"\"\"\n\n\ndef getIP(domain):\n    myaddr = socket.getaddrinfo(domain, 'http')\n    return \"IP：\" + str(myaddr[0][4][0])\n\n\ndef getInfo(res):\n    try:\n        Server = res.headers[\"Server\"]\n    except:\n        Server = None\n        pass\n    try:\n        code = res.headers[\"X-Powered-By\"]\n    except:\n        code = None\n        pass\n    return \"Server:\" + str(Server) + \"\\t    Code:\" + str(code)\n\n\ndef scanurl(url):\n    headers = {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}\n    res = requests.get(url=url, headers=headers, timeout=5, verify=False)\n    return res\n\n\ndef urlformat(site):\n    site = site.replace(\"\\\"\", \"\").replace(\"\\n\", \"\")\n    if \"http\" in site:\n        return site\n    elif site.strip():\n        return \"http://\" + site + \"/\"\n    else:\n        pass\n\n\ndef outPut(target, title, imageName):\n    ip = getIP(str(re.compile('http://(.*?)/').findall(target)[0]))\n\n    domain = target.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"/\", \"\")\n\n    temp = \"\"\"\n          <h1 id=\"domain1234\">title1234</h1>\n          <a href=\"httpurl1234\" target=\"_blank\">httpurl1234</a></br>\n          <a>ip1234</a></br>\n          <a>info1234</a></br>\n          <img src=\"cat.png1234\">\n          </br>\n    \"\"\"\n\n    ### temp瞎几把加了几个1234是为了防止提取到的信息中包含这几个字符串，会乱掉。\n\n    temp = temp.replace('domain1234', domain).replace('title1234', title).replace('httpurl1234', target).replace(\n        'ip1234', ip).replace('info1234', info).replace('cat.png1234', \"../images/\" + imageName)\n\n    with open(\"./reports/\" + reportFile, \"a\") as f:\n        f.write(temp + \"\\n\")\n\n\nasync def screenshot(url):\n    browser = await launch({'headless': True,\n                            'args': [\n                                '--disable-extensions',\n                                '--disable-infobars',\n                                '--hide-scrollbars',\n                                '–disable-dev-shm-usage',\n                                '--mute-audio',\n                                '–disable-setuid-sandbox',\n                                '–no-sandbox',\n                                '–no-zygote',\n                                '--window-size=1024,768',\n                                '--disable-gpu',\n                            ],\n                            # 防止多开页面卡死\n                            'dumpio': True,\n                            'ignoreHTTPSErrors': True,\n                            'executablePath': '/Applications/Chromium.app/Contents/MacOS/Chromium'})\n    page = await browser.newPage()\n    await page.goto(url, timeout=10000)\n    await page.setViewport({'width': 1000, 'height': 698})\n    await page.waitFor(1000)\n    imageName = url.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"/\", \"\") + \".png\"\n    await page.screenshot({'path': './images/' + imageName})\n    try:\n        element = await page.querySelector('title')\n        title = await page.evaluate('(element) => element.textContent', element)\n    except:\n        title = 'no title'\n    await browser.close()\n    outPut(url, title, imageName)\n\n\nif __name__ == '__main__':\n    if os.path.exists('finished') == False:\n        os.mkdir('finished')\n    for root, dirs, files in os.walk(os.getcwd(), topdown=False):\n        for name in files:\n            file = os.path.splitext(name)\n            txtfilename, type = file\n            if type == '.txt' and 'finished' not in root:\n                srcfile = (root + '/' + name)\n                dstfile = (root + '/finished/' + name)\n                reportFilename = txtfilename\n                if not os.path.exists('reports') or not os.path.exists('images'):\n                    try:\n                        os.makedirs(\"reports\")\n                    except:\n                        pass\n                    try:\n                        os.makedirs(\"images\")\n                    except:\n                        pass\n\n                htmlHeader = htmlHeader.replace('timeaaaaaaa', str(time.strftime(\"%Y-%m-%d\")))\n\n                reportFile = str(time.strftime(\"%Y-%m-%d-{}\".format(reportFilename))) + \".html\"\n\n                if os.path.exists(\"./reports/\" + reportFile):\n                    os.remove(\"./reports/\" + reportFile)\n\n                with open(\"./reports/\" + reportFile, \"w\") as f:\n                    f.write(htmlHeader)\n\n                n = 0\n                tmp = \"\"\n                with open(srcfile) as sites:\n                    for site in sites:\n                        site = site.replace(\"\\r\", \"\").replace(\"\\n\", \"\").replace(\" \", \"\")\n                        if site == \"\":\n                            pass\n                        else:\n\n                            url = urlformat(site)\n                            print(url)\n                            try:\n                                res = scanurl(url)\n                                print(\"[*]\" + str(res.status_code) + \"\\t\" + url)\n                                try:\n                                    info = getInfo(res)\n                                except:\n                                    info = None\n                                    pass\n\n                                if res.status_code == 200 or res.status_code == 403 or res.status_code == 404:\n                                    n += 1\n                                    domain = url.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"/\", \"\")\n\n                                    try:\n                                        asyncio.get_event_loop().run_until_complete(screenshot(url))\n                                        tmp += htmlcat2.replace(\"domain.com\", domain).replace(\"nnnnn\", str(n)) + \"\\n\"\n                                    except Exception as e:\n                                        pass\n\n                            except:\n\n                                pass\n\n                    # 写目录1\n\n                    with open(\"./reports/\" + reportFile, \"a\") as f:\n                        f.write(htmlcat)\n\n                    # 写目录2\n\n                    with open(\"./reports/\" + reportFile, \"a\") as f:\n                        f.write(tmp)\n\n                    # 乞讨信息\n                    with open(\"./reports/\" + reportFile, \"a\") as f:\n                        f.write(htmlfooter)\n\n                    shutil.move(srcfile, dstfile)\n"
  },
  {
    "path": "template.htm",
    "content": "<!DOCTYPE html>\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n  <link href=\"./template_files/main.css\" rel=\"stylesheet\" type=\"text/css\">\n  <title>xxx子域名扫描报告</title></head>\n<body style=\"padding-right: 320px;\">\n  <div class=\"main-inner\">\n    <div id=\"posts\" class=\"posts-expand\">\n      <header class=\"post-header\">\n        <h1 class=\"post-title\" itemprop=\"name headline\">xxx子域名扫描报告</h1>\n        <div class=\"post-meta\">\n          <span class=\"post-time\">\n            <span class=\"post-meta-item-text\">生成于</span>\n            <time title=\"Post created\" itemprop=\"dateCreated datePublished\" datetime=\"2019-04-18T16:04:21+08:00\">2019-04-18</time></span>\n        </div>\n      </header>\n      <div class=\"post-body\" itemprop=\"articleBody\">\n\n\n<!--报告开始-->\n          <h1 id=\"aliyun.com\">Security Advisory</h1>\n          <a href=\"https://pivotal.io/security/cve-2019-3799\" target=\"_blank\">https://pivotal.io/security/cve-2019-3799</a></br>\n          <a>aaa</a>\n          <img src=\"./template_files/20190417224755-c8ec71d6-611f-1.png\" alt=\"1.png\">\n\n<!--报告结束-->\n\n\n        <aside id=\"sidebar\" class=\"sidebar sidebar-active\" style=\"display: block; width: 320px;\">\n          <div class=\"sidebar-inner\">\n            <ul class=\"sidebar-nav motion-element\" style=\"opacity: 1; display: block; transform: translateX(0px);\">\n              <li class=\"sidebar-nav-toc sidebar-nav-active\" data-target=\"post-toc-wrap\">目录</li></ul>\n            <!--noindex-->\n            <section class=\"post-toc-wrap motion-element sidebar-panel sidebar-panel-active\" style=\"opacity: 1; display: block; transform: translateX(0px);\">\n              <div class=\"post-toc\" style=\"max-height: 100%; width: calc(100% + 0px);\">\n                <div class=\"post-toc-content\">\n                  <ol class=\"nav\">\n\n<!--目录开始-->\n                    <li class=\"nav-item nav-level-1\">\n                        <a class=\"nav-link\" href=\"#aliyun.com\">\n                            <span class=\"nav-number\">1.</span>\n                            <span class=\"nav-text\">Security Advisory</span></a>\n                    </li>\n\n                    <li class=\"nav-item nav-level-1\">\n                        <a class=\"nav-link\" href=\"#Security-Advisory\">\n                            <span class=\"nav-number\">1.</span>\n                            <span class=\"nav-text\">Security Advisory</span></a>\n                    </li>\n\n<!--目录结束-->\n\n\n      <div>\n        <div style=\"padding: 10px 0; margin: 20px auto; width: 90%; text-align: center;\">\n          <div>扫描赞赏二维码，救救没钱的孩子吧！</div>\n          <div id=\"QR\" style=\"display: block;\">\n            <div id=\"wechat\" style=\"display: inline-block\">\n                <img id=\"wechat_qr\" src=\"./template_files/wechat.jpg\" ></a>\n              <p>微   信</p>\n            </div>\n            <div id=\"alipay\" style=\"display: inline-block\">\n                <img id=\"alipay_qr\" src=\"./template_files/alipay.png\" ></a>\n              <p>支付宝</p>\n            </div>\n          </div>\n        </div>\n\n\n\n"
  },
  {
    "path": "template_files/main.css",
    "content": "/* normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; /* 1 */\n  vertical-align: baseline; /* 2 */\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; /* 1 */\n  font: inherit; /* 2 */\n  margin: 0; /* 3 */\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n  cursor: pointer; /* 3 */\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; /* 2 */\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0; /* 1 */\n  padding: 0; /* 2 */\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n::selection {\n  background: #262a30;\n  color: #fff;\n}\nbody {\n  position: relative;\n  font-family: 'Lato', \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n  font-size: 14px;\n  line-height: 2;\n  color: #555;\n  background: #fff;\n}\n@media (max-width: 767px) {\n  body {\n    padding-right: 0 !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  body {\n    padding-right: 0 !important;\n  }\n}\n@media (min-width: 1600px) {\n  body {\n    font-size: 16px;\n  }\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 0;\n  padding: 0;\n  font-weight: bold;\n  line-height: 1.5;\n  font-family: 'Lato', \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n}\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin: 20px 0 15px;\n}\nh1 {\n  font-size: 22px;\n}\n@media (max-width: 767px) {\n  h1 {\n    font-size: 18px;\n  }\n}\nh2 {\n  font-size: 20px;\n}\n@media (max-width: 767px) {\n  h2 {\n    font-size: 16px;\n  }\n}\nh3 {\n  font-size: 18px;\n}\n@media (max-width: 767px) {\n  h3 {\n    font-size: 14px;\n  }\n}\nh4 {\n  font-size: 16px;\n}\n@media (max-width: 767px) {\n  h4 {\n    font-size: 12px;\n  }\n}\nh5 {\n  font-size: 14px;\n}\n@media (max-width: 767px) {\n  h5 {\n    font-size: 10px;\n  }\n}\nh6 {\n  font-size: 12px;\n}\n@media (max-width: 767px) {\n  h6 {\n    font-size: 8px;\n  }\n}\np {\n  margin: 0 0 25px 0;\n}\na {\n  color: #555;\n  text-decoration: none;\n  border-bottom: 1px solid #999;\n  word-wrap: break-word;\n}\na:hover {\n  color: #222;\n  border-bottom-color: #222;\n}\nul {\n  list-style: none;\n}\nblockquote {\n  margin: 0;\n  padding: 0;\n}\nimg {\n  display: block;\n  margin: auto;\n  max-width: 100%;\n  height: auto;\n}\nhr {\n  margin: 40px 0;\n  height: 3px;\n  border: none;\n  background-color: #ddd;\n  background-image: repeating-linear-gradient(-45deg, #fff, #fff 4px, transparent 4px, transparent 8px);\n}\nblockquote {\n  padding: 0 15px;\n  color: #666;\n  border-left: 4px solid #ddd;\n}\nblockquote cite::before {\n  content: \"-\";\n  padding: 0 5px;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin: 0;\n  padding: 0;\n}\n.text-left {\n  text-align: left;\n}\n.text-center {\n  text-align: center;\n}\n.text-right {\n  text-align: right;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.clearfix:before,\n.clearfix:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after {\n  clear: both;\n}\n.pullquote {\n  width: 45%;\n}\n.pullquote.left {\n  float: left;\n  margin-left: 5px;\n  margin-right: 10px;\n}\n.pullquote.right {\n  float: right;\n  margin-left: 10px;\n  margin-right: 5px;\n}\n.affix.affix.affix {\n  position: fixed;\n}\n.translation {\n  margin-top: -20px;\n  font-size: 14px;\n  color: #999;\n}\n.scrollbar-measure {\n  width: 100px;\n  height: 100px;\n  overflow: scroll;\n  position: absolute;\n  top: -9999px;\n}\n.use-motion .motion-element {\n  opacity: 0;\n}\n#local-search-input {\n  padding: 3px;\n  border: none;\n  text-indent: 14px;\n  border-radius: 0;\n  width: 140px;\n  outline: none;\n  border-bottom: 1px solid #999;\n  background: inherit;\n  opacity: 0.5;\n}\n#local-search-input:focus {\n  opacity: 1;\n}\n.search-icon {\n  position: absolute;\n  top: 9px;\n}\ntable {\n  margin: 20px 0;\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  border: 1px solid #ddd;\n  font-size: 14px;\n  table-layout: fixed;\n  word-wrap: break-all;\n}\ntable>tbody>tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\ntable>tbody>tr:hover {\n  background-color: #f5f5f5;\n}\ncaption,\nth,\ntd {\n  padding: 8px;\n  text-align: left;\n  vertical-align: middle;\n  font-weight: normal;\n}\nth,\ntd {\n  border-bottom: 3px solid #ddd;\n  border-right: 1px solid #eee;\n}\nth {\n  padding-bottom: 10px;\n  font-weight: 700;\n}\ntd {\n  border-bottom-width: 1px;\n}\nhtml,\nbody {\n  height: 100%;\n}\n.container {\n  position: relative;\n  min-height: 100%;\n}\n.header-inner {\n  margin: 0 auto;\n  padding: 100px 0 70px;\n  width: 700px;\n}\n@media (min-width: 1600px) {\n  .container .header-inner {\n    width: 900px;\n  }\n}\n.main {\n  padding-bottom: 150px;\n}\n.main-inner {\n  margin: 0 auto;\n  width: 700px;\n}\n@media (min-width: 1600px) {\n  .container .main-inner {\n    width: 900px;\n  }\n}\n.footer {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  width: 100%;\n  min-height: 50px;\n}\n.footer-inner {\n  box-sizing: border-box;\n  margin: 20px auto;\n  width: 700px;\n}\n@media (min-width: 1600px) {\n  .container .footer-inner {\n    width: 900px;\n  }\n}\npre,\n.highlight {\n  overflow: auto;\n  margin: 20px 0;\n  padding: 0;\n  font-size: 13px;\n  color: #ccc;\n  background: #2d2d2d;\n  line-height: 1.6;\n}\npre,\ncode {\n  font-family: consolas, Menlo, \"PingFang SC\", \"Microsoft YaHei\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  word-wrap: break-word;\n  color: #ccc;\n  background: #2d2d2d;\n  border-radius: 3px;\n  font-size: 13px;\n}\npre code {\n  padding: 0;\n  color: #ccc;\n  background: none;\n  text-shadow: none;\n}\n.highlight {\n  border-radius: 1px;\n}\n.highlight pre {\n  border: none;\n  margin: 0;\n  padding: 10px 0;\n}\n.highlight table {\n  margin: 0;\n  width: auto;\n  border: none;\n}\n.highlight td {\n  border: none;\n  padding: 0;\n}\n.highlight figcaption {\n  font-size: 1em;\n  color: #ccc;\n  line-height: 1em;\n  margin-bottom: 1em;\n}\n.highlight figcaption:before,\n.highlight figcaption:after {\n  content: \" \";\n  display: table;\n}\n.highlight figcaption:after {\n  clear: both;\n}\n.highlight figcaption a {\n  float: right;\n  color: #ccc;\n}\n.highlight figcaption a:hover {\n  border-bottom-color: #ccc;\n}\n.highlight .gutter pre {\n  padding-left: 10px;\n  padding-right: 10px;\n  color: #999;\n  text-align: right;\n  background-color: #1b1b1b;\n}\n.highlight .code pre {\n  padding-left: 10px;\n  padding-right: 10px;\n  background-color: #2d2d2d;\n}\n.highlight .line {\n  height: 20px;\n}\n.gutter {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.gist table {\n  width: auto;\n}\n.gist table td {\n  border: none;\n}\npre .deletion {\n  background: #008000;\n}\npre .addition {\n  background: #800000;\n}\npre .meta {\n  color: #c9c;\n}\npre .comment {\n  color: #999;\n}\npre .variable,\npre .attribute,\npre .tag,\npre .regexp,\npre .ruby .constant,\npre .xml .tag .title,\npre .xml .pi,\npre .xml .doctype,\npre .html .doctype,\npre .css .id,\npre .css .class,\npre .css .pseudo {\n  color: #f2777a;\n}\npre .number,\npre .preprocessor,\npre .built_in,\npre .literal,\npre .params,\npre .constant,\npre .command {\n  color: #f99157;\n}\npre .ruby .class .title,\npre .css .rules .attribute,\npre .string,\npre .value,\npre .inheritance,\npre .header,\npre .ruby .symbol,\npre .xml .cdata,\npre .special,\npre .number,\npre .formula {\n  color: #9c9;\n}\npre .title,\npre .css .hexcolor {\n  color: #6cc;\n}\npre .function,\npre .python .decorator,\npre .python .title,\npre .ruby .function .title,\npre .ruby .title .keyword,\npre .perl .sub,\npre .javascript .title,\npre .coffeescript .title {\n  color: #69c;\n}\npre .keyword,\npre .javascript .function {\n  color: #c9c;\n}\n.full-image.full-image.full-image {\n  border: none;\n  max-width: 100%;\n  width: auto;\n  margin: 20px auto;\n}\n@media (min-width: 992px) {\n  .full-image.full-image.full-image {\n    max-width: none;\n    width: 110%;\n    margin: 25px -5%;\n  }\n}\n.blockquote-center,\n.page-home .post-type-quote blockquote,\n.page-post-detail .post-type-quote blockquote {\n  position: relative;\n  margin: 40px 0;\n  padding: 0;\n  border-left: none;\n  text-align: center;\n}\n.blockquote-center::before,\n.page-home .post-type-quote blockquote::before,\n.page-post-detail .post-type-quote blockquote::before,\n.blockquote-center::after,\n.page-home .post-type-quote blockquote::after,\n.page-post-detail .post-type-quote blockquote::after {\n  position: absolute;\n  content: ' ';\n  display: block;\n  width: 100%;\n  height: 24px;\n  opacity: 0.2;\n  background-repeat: no-repeat;\n  background-position: 0 -6px;\n  background-size: 22px 22px;\n}\n.blockquote-center::before,\n.page-home .post-type-quote blockquote::before,\n.page-post-detail .post-type-quote blockquote::before {\n  top: -20px;\n  background-image: url(\"../images/quote-l.svg\");\n  border-top: 1px solid #ccc;\n}\n.blockquote-center::after,\n.page-home .post-type-quote blockquote::after,\n.page-post-detail .post-type-quote blockquote::after {\n  bottom: -20px;\n  background-image: url(\"../images/quote-r.svg\");\n  border-bottom: 1px solid #ccc;\n  background-position: 100% 8px;\n}\n.blockquote-center p,\n.page-home .post-type-quote blockquote p,\n.page-post-detail .post-type-quote blockquote p,\n.blockquote-center div,\n.page-home .post-type-quote blockquote div,\n.page-post-detail .post-type-quote blockquote div {\n  text-align: center;\n}\n.post .post-body .group-picture img {\n  box-sizing: border-box;\n  padding: 0 3px;\n  border: none;\n}\n.post .group-picture-row {\n  overflow: hidden;\n  margin-top: 6px;\n}\n.post .group-picture-row:first-child {\n  margin-top: 0;\n}\n.post .group-picture-column {\n  float: left;\n}\n.page-post-detail .post-body .group-picture-column {\n  float: none;\n  margin-top: 10px;\n  width: auto !important;\n}\n.page-post-detail .post-body .group-picture-column img {\n  margin: 0 auto;\n}\n.page-archive .group-picture-container {\n  overflow: hidden;\n}\n.page-archive .group-picture-row {\n  float: left;\n}\n.page-archive .group-picture-row:first-child {\n  margin-top: 6px;\n}\n.page-archive .group-picture-column {\n  max-width: 150px;\n  max-height: 150px;\n}\n.note {\n  padding: 20px;\n  margin: 20px 0;\n  border: 1px solid #eee;\n  border-left-width: 5px;\n  border-radius: 3px;\n}\n.note h2,\n.note h3,\n.note h4,\n.note h5,\n.note h6 {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.note p:last-child {\n  margin-bottom: 0;\n}\n.note code {\n  border-radius: 3px;\n}\n.note+.note {\n  margin-top: -5px;\n}\n.default {\n  border-left-color: #777;\n}\n.default h2,\n.default h3,\n.default h4,\n.default h5,\n.default h6 {\n  color: #777;\n}\n.primary {\n  border-left-color: #428bca;\n}\n.primary h2,\n.primary h3,\n.primary h4,\n.primary h5,\n.primary h6 {\n  color: #428bca;\n}\n.success {\n  border-left-color: #5cb85c;\n}\n.success h2,\n.success h3,\n.success h4,\n.success h5,\n.success h6 {\n  color: #5cb85c;\n}\n.danger {\n  border-left-color: #d9534f;\n}\n.danger h2,\n.danger h3,\n.danger h4,\n.danger h5,\n.danger h6 {\n  color: #d9534f;\n}\n.warning {\n  border-left-color: #f0ad4e;\n}\n.warning h2,\n.warning h3,\n.warning h4,\n.warning h5,\n.warning h6 {\n  color: #f0ad4e;\n}\n.info {\n  border-left-color: #5bc0de;\n}\n.info h2,\n.info h3,\n.info h4,\n.info h5,\n.info h6 {\n  color: #5bc0de;\n}\n.btn {\n  display: inline-block;\n  padding: 0 20px;\n  font-size: 14px;\n  color: #fff;\n  background: #222;\n  border: 2px solid #222;\n  text-decoration: none;\n  border-radius: 0;\n  transition-property: background-color;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n.btn:hover,\n.post-more-link .btn:hover {\n  border-color: #222;\n  color: #222;\n  background: #fff;\n}\n.btn-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  background: #555;\n  border-radius: 1px;\n}\n.btn-bar+.btn-bar {\n  margin-top: 4px;\n}\n.pagination {\n  margin: 120px 0 40px;\n  text-align: center;\n  border-top: 1px solid #eee;\n}\n.page-number-basic,\n.pagination .prev,\n.pagination .next,\n.pagination .page-number,\n.pagination .space {\n  display: inline-block;\n  position: relative;\n  top: -1px;\n  margin: 0 10px;\n  padding: 0 10px;\n  line-height: 30px;\n}\n@media (max-width: 767px) {\n  .page-number-basic,\n  .pagination .prev,\n  .pagination .next,\n  .pagination .page-number,\n  .pagination .space {\n    margin: 0 5px;\n  }\n}\n.pagination .prev,\n.pagination .next,\n.pagination .page-number {\n  border-bottom: 0;\n  border-top: 1px solid #eee;\n  transition-property: border-color;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n.pagination .prev:hover,\n.pagination .next:hover,\n.pagination .page-number:hover {\n  border-top-color: #222;\n}\n.pagination .space {\n  padding: 0;\n  margin: 0;\n}\n.pagination .prev {\n  margin-left: 0;\n}\n.pagination .next {\n  margin-right: 0;\n}\n.pagination .page-number.current {\n  color: #fff;\n  background: #ccc;\n  border-top-color: #ccc;\n}\n@media (max-width: 767px) {\n  .pagination {\n    border-top: none;\n  }\n  .pagination .prev,\n  .pagination .next,\n  .pagination .page-number {\n    margin-bottom: 10px;\n    border-top: 0;\n    border-bottom: 1px solid #eee;\n  }\n  .pagination .prev:hover,\n  .pagination .next:hover,\n  .pagination .page-number:hover {\n    border-bottom-color: #222;\n  }\n}\n.comments {\n  margin: 60px 20px 0;\n}\n.tag-cloud {\n  text-align: center;\n}\n.tag-cloud a {\n  display: inline-block;\n  margin: 10px;\n}\n.back-to-top {\n  box-sizing: border-box;\n  position: fixed;\n  bottom: -100px;\n  right: 50px;\n  z-index: 1050;\n  padding: 0 6px;\n  width: 25px;\n  background: #222;\n  font-size: 12px;\n  opacity: 1;\n  color: #fff;\n  cursor: pointer;\n  text-align: center;\n  -webkit-transform: translateZ(0);\n  transition-property: bottom;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n@media (max-width: 767px) {\n  .back-to-top {\n    display: none;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .back-to-top {\n    display: none;\n  }\n}\n.back-to-top.back-to-top-on {\n  bottom: 19px;\n}\n.header {\n  background: #fff;\n}\n.header-inner {\n  position: relative;\n}\n.headband {\n  height: 3px;\n  background: #222;\n}\n.site-meta {\n  margin: 0;\n  text-align: center;\n}\n@media (max-width: 767px) {\n  .site-meta {\n    text-align: center;\n  }\n}\n.brand {\n  position: relative;\n  display: inline-block;\n  padding: 0 40px;\n  color: #fff;\n  background: #222;\n  border-bottom: none;\n}\n.brand:hover {\n  color: #fff;\n}\n.logo {\n  display: inline-block;\n  margin-right: 5px;\n  line-height: 36px;\n  vertical-align: top;\n}\n.site-title {\n  display: inline-block;\n  vertical-align: top;\n  line-height: 36px;\n  font-size: 20px;\n  font-weight: normal;\n  font-family: 'Lato', \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n}\n.site-subtitle {\n  margin-top: 10px;\n  font-size: 13px;\n  color: #999;\n}\n.use-motion .brand {\n  opacity: 0;\n}\n.use-motion .logo,\n.use-motion .site-title,\n.use-motion .site-subtitle {\n  opacity: 0;\n  position: relative;\n  top: -10px;\n}\n.site-nav-toggle {\n  display: none;\n  position: absolute;\n  top: 10px;\n  left: 10px;\n}\n@media (max-width: 767px) {\n  .site-nav-toggle {\n    display: block;\n  }\n}\n.site-nav-toggle button {\n  margin-top: 2px;\n  padding: 9px 10px;\n  background: transparent;\n  border: none;\n}\n@media (max-width: 767px) {\n  .site-nav {\n    display: none;\n    margin: 0 -10px;\n    padding: 0 10px;\n    clear: both;\n    border-top: 1px solid #ddd;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .site-nav {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) {\n  .site-nav {\n    display: block !important;\n  }\n}\n.menu {\n  margin-top: 20px;\n  padding-left: 0;\n  text-align: center;\n}\n.menu .menu-item {\n  display: inline-block;\n  margin: 0 10px;\n}\n@media screen and (max-width: 767px) {\n  .menu .menu-item {\n    margin-top: 10px;\n  }\n}\n.menu .menu-item a {\n  display: block;\n  font-size: 13px;\n  text-transform: capitalize;\n  line-height: inherit;\n  border-bottom: 1px solid transparent;\n  transition-property: border-color;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n.menu .menu-item a:hover {\n  border-bottom-color: #222;\n}\n.menu .menu-item .fa {\n  margin-right: 5px;\n}\n.use-motion .menu-item {\n  opacity: 0;\n}\n.post-body {\n  font-family: 'Lato', \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n}\n@media (max-width: 767px) {\n  .post-body {\n    word-break: break-word;\n  }\n}\n.post-body .fancybox img {\n  display: block !important;\n  margin: 0 auto;\n  cursor: pointer;\n  cursor: zoom-in;\n  cursor: -webkit-zoom-in;\n}\n.post-body .image-caption,\n.post-body .figure .caption {\n  margin: 10px auto 15px;\n  text-align: center;\n  font-size: 14px;\n  color: #999;\n  font-weight: bold;\n  line-height: 1;\n}\n.post-sticky-flag {\n  display: inline-block;\n  font-size: 16px;\n  -ms-transform: rotate(30deg);\n  -webkit-transform: rotate(30deg);\n  -moz-transform: rotate(30deg);\n  -ms-transform: rotate(30deg);\n  -o-transform: rotate(30deg);\n  transform: rotate(30deg);\n}\n.posts-expand {\n  padding-top: 40px;\n}\n@media (max-width: 767px) {\n  .posts-expand {\n    margin: 0 20px;\n  }\n  .post-body pre,\n  .post-body .highlight {\n    padding: 10px;\n  }\n  .post-body pre .gutter pre,\n  .post-body .highlight .gutter pre {\n    padding-right: 10px;\n  }\n}\n@media (min-width: 992px) {\n  .posts-expand .post-body {\n    text-align: justify;\n  }\n}\n.posts-expand .post-body h2,\n.posts-expand .post-body h3,\n.posts-expand .post-body h4,\n.posts-expand .post-body h5,\n.posts-expand .post-body h6 {\n  padding-top: 10px;\n}\n.posts-expand .post-body h2 .header-anchor,\n.posts-expand .post-body h3 .header-anchor,\n.posts-expand .post-body h4 .header-anchor,\n.posts-expand .post-body h5 .header-anchor,\n.posts-expand .post-body h6 .header-anchor {\n  float: right;\n  margin-left: 10px;\n  color: #ccc;\n  border-bottom-style: none;\n  visibility: hidden;\n}\n.posts-expand .post-body h2 .header-anchor:hover,\n.posts-expand .post-body h3 .header-anchor:hover,\n.posts-expand .post-body h4 .header-anchor:hover,\n.posts-expand .post-body h5 .header-anchor:hover,\n.posts-expand .post-body h6 .header-anchor:hover {\n  color: inherit;\n}\n.posts-expand .post-body h2:hover .header-anchor,\n.posts-expand .post-body h3:hover .header-anchor,\n.posts-expand .post-body h4:hover .header-anchor,\n.posts-expand .post-body h5:hover .header-anchor,\n.posts-expand .post-body h6:hover .header-anchor {\n  visibility: visible;\n}\n.posts-expand .post-body ul li {\n  list-style: circle;\n}\n.posts-expand .post-body img {\n  box-sizing: border-box;\n  margin: auto;\n  padding: 3px;\n  border: 1px solid #ddd;\n}\n.posts-expand .fancybox img {\n  margin: 0 auto;\n}\n@media (max-width: 767px) {\n  .posts-collapse {\n    margin: 0 20px;\n  }\n  .posts-collapse .post-title,\n  .posts-collapse .post-meta {\n    display: block;\n    width: auto;\n    text-align: left;\n  }\n}\n.posts-collapse {\n  position: relative;\n  z-index: 1010;\n  margin-left: 55px;\n}\n.posts-collapse::after {\n  content: \" \";\n  position: absolute;\n  top: 20px;\n  left: 0;\n  margin-left: -2px;\n  width: 4px;\n  height: 100%;\n  background: #f5f5f5;\n  z-index: -1;\n}\n@media (max-width: 767px) {\n  .posts-collapse {\n    margin: 0 20px;\n  }\n}\n.posts-collapse .collection-title {\n  position: relative;\n  margin: 60px 0;\n}\n.posts-collapse .collection-title h2 {\n  margin-left: 20px;\n}\n.posts-collapse .collection-title small {\n  color: #bbb;\n}\n.posts-collapse .collection-title::before {\n  content: \" \";\n  position: absolute;\n  left: 0;\n  top: 50%;\n  margin-left: -4px;\n  margin-top: -4px;\n  width: 8px;\n  height: 8px;\n  background: #bbb;\n  border-radius: 50%;\n}\n.posts-collapse .post {\n  margin: 30px 0;\n}\n.posts-collapse .post-header {\n  position: relative;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n  transition-property: border;\n  border-bottom: 1px dashed #ccc;\n}\n.posts-collapse .post-header::before {\n  content: \" \";\n  position: absolute;\n  left: 0;\n  top: 12px;\n  width: 6px;\n  height: 6px;\n  margin-left: -4px;\n  background: #bbb;\n  border-radius: 50%;\n  border: 1px solid #fff;\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n  transition-property: background;\n}\n.posts-collapse .post-header:hover {\n  border-bottom-color: #666;\n}\n.posts-collapse .post-header:hover::before {\n  background: #222;\n}\n.posts-collapse .post-meta {\n  position: absolute;\n  font-size: 12px;\n  left: 20px;\n  top: 5px;\n}\n.posts-collapse .post-comments-count {\n  display: none;\n}\n.posts-collapse .post-title {\n  margin-left: 60px;\n  font-size: 16px;\n  font-weight: normal;\n  line-height: inherit;\n}\n.posts-collapse .post-title::after {\n  margin-left: 3px;\n  opacity: 0.6;\n}\n.posts-collapse .post-title a {\n  color: #666;\n  border-bottom: none;\n}\n.page-home .post-type-quote .post-header,\n.page-post-detail .post-type-quote .post-header,\n.page-home .post-type-quote .post-tags,\n.page-post-detail .post-type-quote .post-tags {\n  display: none;\n}\n.posts-expand .post-title {\n  font-size: 26px;\n  text-align: center;\n  word-break: break-word;\n  font-weight: 400;\n}\n@media (max-width: 767px) {\n  .posts-expand .post-title {\n    font-size: 22px;\n  }\n}\n.posts-expand .post-title-link {\n  display: inline-block;\n  position: relative;\n  color: #555;\n  border-bottom: none;\n  line-height: 1.2;\n  vertical-align: top;\n}\n.posts-expand .post-title-link::before {\n  content: \"\";\n  position: absolute;\n  width: 100%;\n  height: 2px;\n  bottom: 0;\n  left: 0;\n  background-color: #000;\n  visibility: hidden;\n  -webkit-transform: scaleX(0);\n  -moz-transform: scaleX(0);\n  -ms-transform: scaleX(0);\n  -o-transform: scaleX(0);\n  transform: scaleX(0);\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n.posts-expand .post-title-link:hover::before {\n  visibility: visible;\n  -webkit-transform: scaleX(1);\n  -moz-transform: scaleX(1);\n  -ms-transform: scaleX(1);\n  -o-transform: scaleX(1);\n  transform: scaleX(1);\n}\n.posts-expand .post-title-link .fa {\n  font-size: 16px;\n}\n.posts-expand .post-meta {\n  margin: 3px 0 60px 0;\n  color: #999;\n  font-family: 'Lato', \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n  font-size: 12px;\n  text-align: center;\n}\n.posts-expand .post-meta .post-category-list {\n  display: inline-block;\n  margin: 0;\n  padding: 3px;\n}\n.posts-expand .post-meta .post-category-list-link {\n  color: #999;\n}\n.posts-expand .post-meta .post-description {\n  font-size: 14px;\n  margin-top: 2px;\n}\n.post-meta-divider {\n  margin: 0 0.5em;\n}\n.post-meta-item-icon {\n  margin-right: 3px;\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .post-meta-item-icon {\n    display: inline-block;\n  }\n}\n@media (max-width: 767px) {\n  .post-meta-item-icon {\n    display: inline-block;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .post-meta-item-text {\n    display: none;\n  }\n}\n@media (max-width: 767px) {\n  .post-meta-item-text {\n    display: none;\n  }\n}\n@media (max-width: 767px) {\n  .posts-expand .post-comments-count {\n    display: none;\n  }\n}\n.post-more-link {\n  margin-top: 50px;\n}\n.post-more-link .btn {\n  color: #fff;\n  font-size: 14px;\n  background: #222;\n  border-radius: 0;\n  line-height: 2;\n  margin: 0 4px 8px 4px;\n}\n.post-more-link .fa-fw {\n  width: 1.285714285714286em;\n  text-align: left;\n}\n.posts-expand .post-tags {\n  margin-top: 40px;\n  text-align: center;\n}\n.posts-expand .post-tags a {\n  display: inline-block;\n  margin-right: 10px;\n  font-size: 13px;\n}\n.post-nav {\n  display: table;\n  margin-top: 60px;\n  width: 100%;\n  border-top: 1px solid #eee;\n}\n.post-nav-divider {\n  display: table-cell;\n  width: 10%;\n}\n.post-nav-item {\n  display: table-cell;\n  padding: 10px 0 0 0;\n  width: 45%;\n  vertical-align: top;\n}\n.post-nav-item a {\n  position: relative;\n  display: block;\n  line-height: 25px;\n  font-size: 14px;\n  color: #555;\n  border-bottom: none;\n}\n.post-nav-item a:hover {\n  color: #222;\n  border-bottom: none;\n}\n.post-nav-item a:active {\n  top: 2px;\n}\n.post-nav-item .fa {\n  position: absolute;\n  top: 8px;\n  left: 0;\n  font-size: 12px;\n}\n.post-nav-next a {\n  padding-left: 15px;\n}\n.post-nav-prev {\n  text-align: right;\n}\n.post-nav-prev a {\n  padding-right: 15px;\n}\n.post-nav-prev .fa {\n  right: 0;\n  left: auto;\n}\n.posts-expand .post-eof {\n  display: block;\n  margin: 80px auto 60px;\n  width: 8%;\n  height: 1px;\n  background: #ccc;\n  text-align: center;\n}\n.post:last-child .post-eof.post-eof.post-eof {\n  display: none;\n}\n.post-gallery {\n  display: table;\n  table-layout: fixed;\n  width: 100%;\n  border-collapse: separate;\n}\n.post-gallery-row {\n  display: table-row;\n}\n.post-gallery .post-gallery-img {\n  display: table-cell;\n  text-align: center;\n  vertical-align: middle;\n  border: none;\n}\n.post-gallery .post-gallery-img img {\n  max-width: 100%;\n  max-height: 100%;\n  border: none;\n}\n.fancybox-close,\n.fancybox-close:hover {\n  border: none;\n}\n#rewardButton {\n  cursor: pointer;\n  border: 0;\n  outline: 0;\n  border-radius: 100%;\n  padding: 0;\n  margin: 0;\n  letter-spacing: normal;\n  text-transform: none;\n  text-indent: 0px;\n  text-shadow: none;\n}\n#rewardButton span {\n  display: inline-block;\n  width: 80px;\n  height: 35px;\n  border-radius: 5px;\n  color: #fff;\n  font-weight: 400;\n  font-style: normal;\n  font-variant: normal;\n  font-stretch: normal;\n  font-size: 18px;\n  font-family: \"Microsoft Yahei\";\n  background: #f44336;\n}\n#rewardButton span:hover {\n  background: #f7877f;\n}\n#QR {\n  padding-top: 20px;\n}\n#QR a {\n  border: 0;\n}\n#QR img {\n  width: 180px;\n  max-width: 100%;\n  display: inline-block;\n  margin: 0.8em 2em 0 2em;\n}\n#wechat:hover p {\n  animation: roll 0.1s infinite linear;\n  -webkit-animation: roll 0.1s infinite linear;\n  -moz-animation: roll 0.1s infinite linear;\n}\n#alipay:hover p {\n  animation: roll 0.1s infinite linear;\n  -webkit-animation: roll 0.1s infinite linear;\n  -moz-animation: roll 0.1s infinite linear;\n}\n@-moz-keyframes roll {\n  from {\n    -webkit-transform: rotateZ(30deg);\n    -moz-transform: rotateZ(30deg);\n    -ms-transform: rotateZ(30deg);\n    -o-transform: rotateZ(30deg);\n    transform: rotateZ(30deg);\n  }\n  to {\n    -webkit-transform: rotateZ(-30deg);\n    -moz-transform: rotateZ(-30deg);\n    -ms-transform: rotateZ(-30deg);\n    -o-transform: rotateZ(-30deg);\n    transform: rotateZ(-30deg);\n  }\n}\n@-webkit-keyframes roll {\n  from {\n    -webkit-transform: rotateZ(30deg);\n    -moz-transform: rotateZ(30deg);\n    -ms-transform: rotateZ(30deg);\n    -o-transform: rotateZ(30deg);\n    transform: rotateZ(30deg);\n  }\n  to {\n    -webkit-transform: rotateZ(-30deg);\n    -moz-transform: rotateZ(-30deg);\n    -ms-transform: rotateZ(-30deg);\n    -o-transform: rotateZ(-30deg);\n    transform: rotateZ(-30deg);\n  }\n}\n@-o-keyframes roll {\n  from {\n    -webkit-transform: rotateZ(30deg);\n    -moz-transform: rotateZ(30deg);\n    -ms-transform: rotateZ(30deg);\n    -o-transform: rotateZ(30deg);\n    transform: rotateZ(30deg);\n  }\n  to {\n    -webkit-transform: rotateZ(-30deg);\n    -moz-transform: rotateZ(-30deg);\n    -ms-transform: rotateZ(-30deg);\n    -o-transform: rotateZ(-30deg);\n    transform: rotateZ(-30deg);\n  }\n}\n@keyframes roll {\n  from {\n    -webkit-transform: rotateZ(30deg);\n    -moz-transform: rotateZ(30deg);\n    -ms-transform: rotateZ(30deg);\n    -o-transform: rotateZ(30deg);\n    transform: rotateZ(30deg);\n  }\n  to {\n    -webkit-transform: rotateZ(-30deg);\n    -moz-transform: rotateZ(-30deg);\n    -ms-transform: rotateZ(-30deg);\n    -o-transform: rotateZ(-30deg);\n    transform: rotateZ(-30deg);\n  }\n}\n.my_post_copyright {\n  width: 85%;\n  max-width: 45em;\n  margin: 2.8em auto 0;\n  padding: 0.5em 1em;\n  border: 1px solid #d3d3d3;\n  font-size: 0.93rem;\n  line-height: 1.6em;\n  word-break: break-all;\n  background: rgba(255,255,255,0.4);\n}\n.my_post_copyright p {\n  margin: 0;\n}\n.my_post_copyright span {\n  display: inline-block;\n  width: 5.2em;\n  color: #b5b5b5;\n  font-weight: bold;\n}\n.my_post_copyright .raw {\n  margin-left: 1em;\n  width: 5em;\n}\n.my_post_copyright a {\n  color: #808080;\n  border-bottom: 0;\n}\n.my_post_copyright a:hover {\n  color: #a3d2a3;\n  text-decoration: underline;\n}\n.my_post_copyright:hover .fa-clipboard {\n  color: #000;\n}\n.my_post_copyright .post-url:hover {\n  font-weight: normal;\n}\n.my_post_copyright .copy-path {\n  margin-left: 1em;\n  width: 1em;\n}\n@media (max-width: 767px) {\n  .my_post_copyright .copy-path {\n    display: none;\n  }\n}\n.my_post_copyright .copy-path:hover {\n  color: #808080;\n  cursor: pointer;\n}\n.sidebar {\n  position: fixed;\n  right: 0;\n  top: 0;\n  bottom: 0;\n  width: 0;\n  z-index: 1040;\n  box-shadow: inset 0 2px 6px #000;\n  background: #222;\n  -webkit-transform: translateZ(0);\n}\n.sidebar a {\n  color: #999;\n  border-bottom-color: #555;\n}\n.sidebar a:hover {\n  color: #eee;\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .sidebar {\n    display: none !important;\n  }\n}\n@media (max-width: 767px) {\n  .sidebar {\n    display: none !important;\n  }\n}\n.sidebar-inner {\n  position: relative;\n  padding: 20px 10px;\n  color: #999;\n  text-align: center;\n}\n.sidebar-toggle {\n  position: fixed;\n  right: 50px;\n  bottom: 45px;\n  width: 15px;\n  height: 15px;\n  padding: 5px;\n  background: #222;\n  line-height: 0;\n  z-index: 1050;\n  cursor: pointer;\n  -webkit-transform: translateZ(0);\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .sidebar-toggle {\n    display: none;\n  }\n}\n@media (max-width: 767px) {\n  .sidebar-toggle {\n    display: none;\n  }\n}\n.sidebar-toggle-line {\n  position: relative;\n  display: inline-block;\n  vertical-align: top;\n  height: 2px;\n  width: 100%;\n  background: #fff;\n  margin-top: 3px;\n}\n.sidebar-toggle-line:first-child {\n  margin-top: 0;\n}\n.site-author-image {\n  display: block;\n  margin: 0 auto;\n  padding: 2px;\n  max-width: 96px;\n  height: auto;\n  border: 2px solid #333;\n}\n.site-author-name {\n  margin: 5px 0 0;\n  text-align: center;\n  color: #f5f5f5;\n  font-weight: normal;\n}\n.site-description {\n  margin-top: 5px;\n  text-align: center;\n  font-size: 14px;\n  color: #999;\n}\n.site-state {\n  overflow: hidden;\n  line-height: 1.4;\n  white-space: nowrap;\n  text-align: center;\n}\n.site-state-item {\n  display: inline-block;\n  padding: 0 15px;\n  border-left: 1px solid #333;\n}\n.site-state-item:first-child {\n  border-left: none;\n}\n.site-state-item a {\n  border-bottom: none;\n}\n.site-state-item-count {\n  display: block;\n  text-align: center;\n  color: inherit;\n  font-weight: 600;\n  font-size: 18px;\n}\n.site-state-item-name {\n  font-size: 13px;\n  color: inherit;\n}\n.feed-link {\n  margin-top: 20px;\n}\n.feed-link a {\n  display: inline-block;\n  padding: 0 15px;\n  color: #fc6423;\n  border: 1px solid #fc6423;\n  border-radius: 4px;\n}\n.feed-link a i {\n  color: #fc6423;\n  font-size: 14px;\n}\n.feed-link a:hover {\n  color: #fff;\n  background: #fc6423;\n}\n.feed-link a:hover i {\n  color: #fff;\n}\n.links-of-author {\n  margin-top: 20px;\n}\n.links-of-author a {\n  display: inline-block;\n  vertical-align: middle;\n  margin-right: 10px;\n  margin-bottom: 10px;\n  border-bottom-color: #555;\n  font-size: 13px;\n}\n.links-of-author a:before {\n  display: inline-block;\n  vertical-align: middle;\n  margin-right: 3px;\n  content: \" \";\n  width: 4px;\n  height: 4px;\n  border-radius: 50%;\n  background: #1698a1;\n}\n.links-of-blogroll {\n  font-size: 13px;\n}\n.links-of-blogroll-title {\n  margin-top: 20px;\n  font-size: 14px;\n  font-weight: 600;\n}\n.links-of-blogroll-list {\n  margin: 0;\n  padding: 0;\n}\n.links-of-blogroll-item {\n  padding: 2px 10px;\n}\n.sidebar-nav {\n  margin: 0 0 20px;\n  padding-left: 0;\n}\n.sidebar-nav li {\n  display: inline-block;\n  cursor: pointer;\n  border-bottom: 1px solid transparent;\n  font-size: 14px;\n  color: #555;\n}\n.sidebar-nav li:hover {\n  color: #f5f5f5;\n}\n.page-post-detail .sidebar-nav-toc {\n  padding: 0 5px;\n}\n.page-post-detail .sidebar-nav-overview {\n  margin-left: 10px;\n}\n.sidebar-nav .sidebar-nav-active {\n  color: #87daff;\n  border-bottom-color: #87daff;\n}\n.sidebar-nav .sidebar-nav-active:hover {\n  color: #87daff;\n}\n.sidebar-panel {\n  display: none;\n}\n.sidebar-panel-active {\n  display: block;\n}\n.post-toc-empty {\n  font-size: 14px;\n  color: #666;\n}\n.post-toc-wrap {\n  overflow: hidden;\n}\n.post-toc {\n  overflow: auto;\n}\n.post-toc ol {\n  margin: 0;\n  padding: 0 2px 5px 10px;\n  text-align: left;\n  list-style: none;\n  font-size: 14px;\n}\n.post-toc ol > ol {\n  padding-left: 0;\n}\n.post-toc ol a {\n  transition-duration: 0.2s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n  transition-property: all;\n  color: #999;\n  border-bottom-color: #555;\n}\n.post-toc ol a:hover {\n  color: #ccc;\n  border-bottom-color: #ccc;\n}\n.post-toc .nav-item {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  line-height: 1.8;\n}\n.post-toc .nav .nav-child {\n  display: none;\n}\n.post-toc .nav .active > .nav-child {\n  display: block;\n}\n.post-toc .nav .active-current > .nav-child {\n  display: block;\n}\n.post-toc .nav .active-current > .nav-child > .nav-item {\n  display: block;\n}\n.post-toc .nav .active > a {\n  color: #87daff;\n  border-bottom-color: #87daff;\n}\n.post-toc .nav .active-current > a {\n  color: #87daff;\n}\n.post-toc .nav .active-current > a:hover {\n  color: #87daff;\n}\n.footer {\n  font-size: 14px;\n  color: #999;\n}\n.footer img {\n  border: none;\n}\n.footer-inner {\n  text-align: center;\n}\n.with-love {\n  display: inline-block;\n  margin: 0 5px;\n}\n.powered-by,\n.theme-info {\n  display: inline-block;\n}\n.powered-by {\n  margin-right: 10px;\n}\n.powered-by::after {\n  content: \"|\";\n  padding-left: 10px;\n}\n.cc-license {\n  margin-top: 10px;\n  text-align: center;\n}\n.cc-license .cc-opacity {\n  opacity: 0.7;\n  border-bottom: none;\n}\n.cc-license .cc-opacity:hover {\n  opacity: 0.9;\n}\n.cc-license img {\n  display: inline-block;\n}\n.theme-next #ds-thread #ds-reset {\n  color: #555;\n}\n.theme-next #ds-thread #ds-reset .ds-replybox {\n  margin-bottom: 30px;\n}\n.theme-next #ds-thread #ds-reset .ds-replybox .ds-avatar,\n.theme-next #ds-reset .ds-avatar img {\n  box-shadow: none;\n}\n.theme-next #ds-thread #ds-reset .ds-textarea-wrapper {\n  border-color: #c7d4e1;\n  background: none;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.theme-next #ds-thread #ds-reset .ds-textarea-wrapper textarea {\n  height: 60px;\n}\n.theme-next #ds-reset .ds-rounded-top {\n  border-radius: 0;\n}\n.theme-next #ds-thread #ds-reset .ds-post-toolbar {\n  box-sizing: border-box;\n  border: 1px solid #c7d4e1;\n  background: #f6f8fa;\n}\n.theme-next #ds-thread #ds-reset .ds-post-options {\n  height: 40px;\n  border: none;\n  background: none;\n}\n.theme-next #ds-thread #ds-reset .ds-toolbar-buttons {\n  top: 11px;\n}\n.theme-next #ds-thread #ds-reset .ds-sync {\n  top: 5px;\n}\n.theme-next #ds-thread #ds-reset .ds-post-button {\n  top: 4px;\n  right: 5px;\n  width: 90px;\n  height: 30px;\n  border: 1px solid #c5ced7;\n  border-radius: 3px;\n  background-image: linear-gradient(#fbfbfc, #f5f7f9);\n  color: #60676d;\n}\n.theme-next #ds-thread #ds-reset .ds-post-button:hover {\n  background-position: 0 -30px;\n  color: #60676d;\n}\n.theme-next #ds-thread #ds-reset .ds-comments-info {\n  padding: 10px 0;\n}\n.theme-next #ds-thread #ds-reset .ds-sort {\n  display: none;\n}\n.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current {\n  border: none;\n  background: #f6f8fa;\n  color: #60676d;\n}\n.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current:hover {\n  background-color: #e9f0f7;\n  color: #60676d;\n}\n.theme-next #ds-thread #ds-reset li.ds-tab a {\n  border-radius: 2px;\n  padding: 5px;\n}\n.theme-next #ds-thread #ds-reset .ds-login-buttons p {\n  color: #999;\n  line-height: 36px;\n}\n.theme-next #ds-thread #ds-reset .ds-login-buttons .ds-service-list li {\n  height: 28px;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list a {\n  background: none;\n  padding: 5px;\n  border: 1px solid;\n  border-radius: 3px;\n  text-align: center;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list a:hover {\n  color: #fff;\n  background: #666;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo {\n  color: #fc9b00;\n  border-color: #fc9b00;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo:hover {\n  background: #fc9b00;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq {\n  color: #60a3ec;\n  border-color: #60a3ec;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq:hover {\n  background: #60a3ec;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren {\n  color: #2e7ac4;\n  border-color: #2e7ac4;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren:hover {\n  background: #2e7ac4;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban {\n  color: #37994c;\n  border-color: #37994c;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban:hover {\n  background: #37994c;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin {\n  color: #fef20d;\n  border-color: #fef20d;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin:hover {\n  background: #fef20d;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease {\n  color: #f00;\n  border-color: #f00;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease:hover {\n  background: #f00;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu {\n  color: #ffcb05;\n  border-color: #ffcb05;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu:hover {\n  background: #ffcb05;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu {\n  color: #2831e0;\n  border-color: #2831e0;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu:hover {\n  background: #2831e0;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-google {\n  color: #166bec;\n  border-color: #166bec;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-google:hover {\n  background: #166bec;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin {\n  color: #00ce0d;\n  border-color: #00ce0d;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin:hover {\n  background: #00ce0d;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services {\n  border: none;\n}\n.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services:hover {\n  background: none;\n}\n.theme-next #ds-reset .duoshuo-ua-admin {\n  display: inline-block;\n  color: #f00;\n}\n.theme-next #ds-reset .duoshuo-ua-platform,\n.theme-next #ds-reset .duoshuo-ua-browser {\n  color: #ccc;\n}\n.theme-next #ds-reset .duoshuo-ua-platform .fa,\n.theme-next #ds-reset .duoshuo-ua-browser .fa {\n  display: inline-block;\n  margin-right: 3px;\n}\n.theme-next #ds-reset .duoshuo-ua-separator {\n  display: inline-block;\n  margin-left: 5px;\n}\n.theme-next .this_ua {\n  background-color: #ccc !important;\n  border-radius: 4px;\n  padding: 0 5px !important;\n  margin: 1px 1px !important;\n  border: 1px solid #bbb !important;\n  color: #fff;\n  display: inline-block !important;\n}\n.theme-next .this_ua.admin {\n  background-color: #d9534f !important;\n  border-color: #d9534f !important;\n}\n.theme-next .this_ua.platform.iOS,\n.theme-next .this_ua.platform.Mac,\n.theme-next .this_ua.platform.Windows {\n  background-color: #39b3d7 !important;\n  border-color: #46b8da !important;\n}\n.theme-next .this_ua.platform.Linux {\n  background-color: #3a3a3a !important;\n  border-color: #1f1f1f !important;\n}\n.theme-next .this_ua.platform.Android {\n  background-color: #00c47d !important;\n  border-color: #01b171 !important;\n}\n.theme-next .this_ua.browser.Mobile,\n.theme-next .this_ua.browser.Chrome {\n  background-color: #5cb85c !important;\n  border-color: #4cae4c !important;\n}\n.theme-next .this_ua.browser.Firefox {\n  background-color: #f0ad4e !important;\n  border-color: #eea236 !important;\n}\n.theme-next .this_ua.browser.Maxthon,\n.theme-next .this_ua.browser.IE {\n  background-color: #428bca !important;\n  border-color: #357ebd !important;\n}\n.theme-next .this_ua.browser.baidu,\n.theme-next .this_ua.browser.UCBrowser,\n.theme-next .this_ua.browser.Opera {\n  background-color: #d9534f !important;\n  border-color: #d43f3a !important;\n}\n.theme-next .this_ua.browser.Android,\n.theme-next .this_ua.browser.QQBrowser {\n  background-color: #78ace9 !important;\n  border-color: #4cae4c !important;\n}\n.cloud-tie-wrapper img {\n  display: inline-block;\n}\n.cloud-tie-wrapper .total-txt {\n  font-size: 1em !important;\n}\n.cloud-tie-join-count .join-count {\n  color: #555 !important;\n  font-size: inherit !important;\n  margin: 0 !important;\n}\n.post-spread {\n  margin-top: 20px;\n  text-align: center;\n}\n.jiathis_style {\n  display: inline-block;\n}\n.jiathis_style a {\n  border: none;\n}\n.post-spread {\n  margin-top: 20px;\n  text-align: center;\n}\n.bdshare-slide-button-box a {\n  border: none;\n}\n.bdsharebuttonbox {\n  display: inline-block;\n}\n.bdsharebuttonbox a {\n  border: none;\n}\nul.search-result-list {\n  padding-left: 0px;\n  margin: 0px 5px 0px 8px;\n}\np.search-result {\n  border-bottom: 1px dashed #ccc;\n  padding: 5px 0;\n}\na.search-result-title {\n  font-weight: bold;\n}\na.search-result {\n  border-bottom: transparent;\n  display: block;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.search-keyword {\n  border-bottom: 1px dashed #f00;\n  font-size: 14px;\n  font-weight: bold;\n  color: #f00;\n}\n#local-search-result {\n  height: 88%;\n  overflow: auto;\n}\n.popup {\n  display: none;\n  position: fixed;\n  top: 10%;\n  left: 50%;\n  width: 700px;\n  height: 80%;\n  margin-left: -350px;\n  padding: 3px 0 0 10px;\n  background: #fff;\n  color: #333;\n  z-index: 9999;\n  border-radius: 5px;\n}\n@media (max-width: 767px) {\n  .popup {\n    padding: 3px;\n    top: 0;\n    left: 0;\n    margin: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 0px;\n  }\n}\n.popoverlay {\n  position: fixed;\n  width: 100%;\n  height: 100%;\n  top: 0px;\n  left: 0px;\n  z-index: 2080;\n  background-color: rgba(0,0,0,0.3);\n}\n#local-search-input {\n  margin-bottom: 10px;\n  padding: 10px;\n  width: 97%;\n  font-size: 18px;\n}\n.popup .fa-search {\n  padding-top: 8px;\n}\n.popup-btn-close {\n  position: absolute;\n  top: 6px;\n  right: 14px;\n  color: #4ebd79;\n  font-size: 14px;\n  font-weight: bold;\n  text-transform: uppercase;\n  cursor: pointer;\n}\n#no-result {\n  position: absolute;\n  left: 44%;\n  top: 42%;\n  color: #ccc;\n}\n.site-uv,\n.site-pv,\n.page-pv {\n  display: inline-block;\n}\n.site-uv .busuanzi-value,\n.site-pv .busuanzi-value,\n.page-pv .busuanzi-value {\n  margin: 0 5px;\n}\n.site-uv {\n  margin-right: 10px;\n}\n.site-uv::after {\n  content: \"|\";\n  padding-left: 10px;\n}\n.use-motion .post {\n  opacity: 0;\n}\n.page-archive .archive-page-counter {\n  position: relative;\n  top: 3px;\n  left: 20px;\n}\n@media (max-width: 767px) {\n  .page-archive .archive-page-counter {\n    top: 5px;\n  }\n}\n.page-archive .posts-collapse .archive-move-on {\n  position: absolute;\n  top: 11px;\n  left: 0;\n  margin-left: -6px;\n  width: 10px;\n  height: 10px;\n  opacity: 0.5;\n  background: #555;\n  border: 1px solid #fff;\n  border-radius: 50%;\n}\n.category-all-page .category-all-title {\n  text-align: center;\n}\n.category-all-page .category-all {\n  margin-top: 20px;\n}\n.category-all-page .category-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.category-all-page .category-list-item {\n  margin: 5px 10px;\n}\n.category-all-page .category-list-count {\n  color: #bbb;\n}\n.category-all-page .category-list-count:before {\n  display: inline;\n  content: \" (\";\n}\n.category-all-page .category-list-count:after {\n  display: inline;\n  content: \") \";\n}\n.category-all-page .category-list-child {\n  padding-left: 10px;\n}\n#schedule ul#event-list {\n  padding-left: 30px;\n}\n#schedule ul#event-list hr {\n  margin: 20px 0 45px 0 !important;\n  background: #222;\n}\n#schedule ul#event-list hr:after {\n  display: inline-block;\n  content: 'NOW';\n  background: #222;\n  color: #fff;\n  font-weight: bold;\n  text-align: right;\n  padding: 0 5px;\n}\n#schedule ul#event-list li.event {\n  margin: 20px 0px;\n  background: #f9f9f9;\n  padding-left: 10px;\n  min-height: 40px;\n}\n#schedule ul#event-list li.event h2.event-summary {\n  margin: 0;\n  padding-bottom: 3px;\n}\n#schedule ul#event-list li.event h2.event-summary:before {\n  display: inline-block;\n  font-family: FontAwesome;\n  font-size: 8px;\n  content: '\\f111';\n  vertical-align: middle;\n  margin-right: 25px;\n  color: #bbb;\n}\n#schedule ul#event-list li.event span.event-relative-time {\n  display: inline-block;\n  font-size: 12px;\n  font-weight: 400;\n  padding-left: 12px;\n  color: #bbb;\n}\n#schedule ul#event-list li.event span.event-details {\n  display: block;\n  color: #bbb;\n  margin-left: 56px;\n  padding-top: 3px;\n  padding-bottom: 6px;\n  text-indent: -24px;\n  line-height: 18px;\n}\n#schedule ul#event-list li.event span.event-details:before {\n  text-indent: 0;\n  display: inline-block;\n  width: 14px;\n  font-family: FontAwesome;\n  text-align: center;\n  margin-right: 9px;\n  color: #bbb;\n}\n#schedule ul#event-list li.event span.event-details.event-location:before {\n  content: '\\f041';\n}\n#schedule ul#event-list li.event span.event-details.event-duration:before {\n  content: '\\f017';\n}\n#schedule ul#event-list li.event-past {\n  background: #fcfcfc;\n}\n#schedule ul#event-list li.event-past > * {\n  opacity: 0.6;\n}\n#schedule ul#event-list li.event-past h2.event-summary {\n  color: #bbb;\n}\n#schedule ul#event-list li.event-past h2.event-summary:before {\n  color: #dfdfdf;\n}\n#schedule ul#event-list li.event-now {\n  background: #222;\n  color: #fff;\n  padding: 15px 0 15px 10px;\n}\n#schedule ul#event-list li.event-now h2.event-summary:before {\n  -webkit-transform: scale(1.2);\n  -moz-transform: scale(1.2);\n  -ms-transform: scale(1.2);\n  -o-transform: scale(1.2);\n  transform: scale(1.2);\n  color: #fff;\n  animation: dot-flash 1s alternate infinite ease-in-out;\n}\n#schedule ul#event-list li.event-now * {\n  color: #fff !important;\n}\n@-moz-keyframes dot-flash {\n  from {\n    opacity: 1;\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1);\n  }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1);\n  }\n}\n@-webkit-keyframes dot-flash {\n  from {\n    opacity: 1;\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1);\n  }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1);\n  }\n}\n@-o-keyframes dot-flash {\n  from {\n    opacity: 1;\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1);\n  }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1);\n  }\n}\n@keyframes dot-flash {\n  from {\n    opacity: 1;\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1);\n  }\n  to {\n    opacity: 0;\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1);\n  }\n}\n.page-post-detail .sidebar-toggle-line {\n  background: #87daff;\n}\n.page-post-detail .comments {\n  overflow: hidden;\n}\n@media (max-width: 767px) {\n  .header-inner,\n  .container .main-inner,\n  .footer-inner {\n    width: auto;\n  }\n}\nembed {\n  display: block;\n  margin: 0px auto 25px auto;\n}\n.custom-logo .site-meta-headline {\n  text-align: center;\n}\n.custom-logo .brand {\n  background: none;\n}\n.custom-logo .site-title {\n  margin: 10px auto 0;\n  font-size: 24px;\n  color: #222;\n}\n.custom-logo .site-title a {\n  border: none;\n}\n.custom-logo-image {\n  margin: 0 auto;\n  padding: 5px;\n  max-width: 150px;\n  background: #fff;\n}\n@media (max-width: 767px) {\n  .site-nav {\n    position: absolute;\n    left: 0;\n    top: 52px;\n    margin: 0;\n    width: 100%;\n    padding: 0;\n    background: #fff;\n    border-bottom: 1px solid #ddd;\n    z-index: 1;\n  }\n}\n@media (max-width: 767px) {\n  .menu {\n    text-align: left;\n  }\n}\n@media (max-width: 767px) {\n  .menu .menu-item {\n    display: block;\n    margin: 0 10px;\n    vertical-align: top;\n  }\n}\n@media (max-width: 767px) {\n  .menu .menu-item br {\n    display: none;\n  }\n}\n@media (max-width: 767px) {\n  .menu .menu-item a {\n    padding: 5px 10px;\n  }\n}\n.menu .menu-item .fa {\n  margin-right: 0;\n}\n.site-search form {\n  display: none;\n}\n.links-of-blogroll-inline .links-of-blogroll-item {\n  display: inline-block;\n}\n"
  },
  {
    "path": "test.py",
    "content": "# -*- coding: utf-8 -*-\n\n__author__ = 'CoolCat'\n\nimport asyncio\nfrom pyppeteer import launch\n\n\nasync def screenshot(url):\n    browser = await launch(headless=True)\n    page = await browser.newPage()\n    await page.setViewport({'width': 1920, 'height': 1080})\n    await page.goto(url)\n    imageName = url.replace(\"https://\", \"\").replace(\"http://\", \"\").replace(\"/\",\"\") + \".png\"\n    await page.screenshot({'path': imageName})\n    await browser.close()\nurl = 'http://www.qq.com/'\nasyncio.get_event_loop().run_until_complete(screenshot(url))"
  },
  {
    "path": "urls.txt",
    "content": "club.qq.com\nusers.qq.com\ndui.vip.qq.com\nfeeds.qq.com\nwww.qq.com\napp.qq.com\nde.qq.com\nes.qq.com\ncs.qq.com\ndd.qq.com\nes.qq.com\np21.tcdn.qq.com\nss.qq.com\nblog.qq.com\ncn.qq.com\nhttp.qq.com\nh6.qq.com\nh2.qq.com\ncorp.qq.com\nsites.qq.com\nnews.qq.com\nclass.qq.com\nh2.tc.qq.com\nss.qq.com\nmy.qq.com\na.qq.com\nlocal.qq.com\ncp.qq.com\nx2.tc.qq.com\nserver.qq.com\nx2.tcdn.qq.com\nmusic.qq.com\nen.qq.com\nnew.qq.com\na.qq.com\nhttps.qq.com\nunion.qq.com\nmail.qq.com\ne.qq.com\ns.qq.com\ngames.qq.com\nhelp.qq.com\nmusic.tc.qq.com\naq.qq.com\nu.qq.com\np21.tc.qq.com\nsupport.qq.com\ntgw.cdc.qq.com\ntask.qq.com\nedu.qq.com\nmusic.tcdn.qq.com\nssd.tc.qq.com\nssd.tcdn.qq.com\ndy.qq.com\nuni.qq.com\nue.qq.com\nmedia.qq.com\noffice.qq.com\npp.qq.com\nastro.qq.com\nuni.mp.qq.com\nbbs.qq.com\nmember.qq.com\nar.qq.com\ntuan.qq.com\naps0550.qq.com\nv.qq.com\nmoto.qq.com\nab.qq.com\nfr.qq.com\nh5.qq.com\nns1.qq.com\nweb.qq.com\nvideo.qq.com\nweb2.qq.com\nis.qq.com\nstart.qq.com\nsms.qq.com\ndata.qq.com\np.qq.com\nintl.qq.com\nplatform.qq.com\nid.qq.com\ndoc.qq.com\nopen.qq.com\nhd.qq.com\nvip.qq.com\nb.qq.com\nsc.qq.com\nth.qq.com\ntranslate.qq.com\nlife.qq.com\ncms.qq.com\naudiodetect.browser.qq.com\nauto.qq.com\nom.qq.com\nom.qq.com\nta.qq.com\nok.qq.com\nm.qq.com\nbiz.qq.com\nscc.qq.com\nopen.book.qq.com\nnr.yuewen.qq.com\n007.qq.com\ni.qq.com\nhome.qq.com\npassport.qq.com\ncge.qq.com\nking.qq.com\nac.qq.com\nbest.qq.com\nspaces.qq.com\nap.qq.com\nguid.qq.com\nliving.qq.com\n114.qq.com\nhr.qq.com\nres.qq.com\nic.qq.com\ncat.qq.com\nlove.qq.com\npb.qq.com\ncity.qq.com\ntu.qq.com\nvp.qq.com\nd.qq.com\nui.qq.com\ndcloud.qq.com\ntourism.qq.com\nllk.qq.com\nideas.qq.com\n1.qq.com\nads.qq.com\nrdm.qq.com\njobs.qq.com\nbt.qq.com\nlinux.qq.com\ngroup.qq.com\nbook.qq.com\npages.book.qq.com\ndns.qq.com\nnow.qq.com\nsafe.qq.com\nroot.qq.com\nimp.qq.com\nplatform.cms.qq.com\ncafe.qq.com\nvictor.qq.com\nforwardsh.qq.com\nbd.qq.com\nmga.qq.com\ndl.qq.com\nlive.qq.com\ndl.tcdn.qq.com\ndownload.qq.com\njump.qq.com\nfun.qq.com\nptlogin4.qq.com\ndes.qq.com\nemperor.qq.com\nt.qq.com\nphoto.qq.com\naccount.qq.com\nhotel.qq.com\nidata.qq.com\nstudent.qq.com\nact.go.qq.com\nhera.qq.com\nbs.qq.com\nbs.qq.com\ndl1023.tcdn.qq.com\nmobile.qq.com\nszsj.cname.qq.com\nsignup.qq.com\nzc2.qq.com\nart.qq.com\napple.qq.com\nidesign.qq.com\nservice.qq.com\nhappy.qq.com\napp.happy.qq.com\ngu.qq.com\nino.qq.com\nhi.qq.com\nqqhaoma.qq.com\nnl.qq.com\nneirong.qq.com\nr.qq.com\nr.mail.qq.com\nhaoma.qq.com\ntt.qq.com\njournal.qq.com\ncool.qq.com\nw.qq.com\npenguin.qq.com\nnextradio.qq.com\njust.qq.com\nabc.qq.com\nsogou.proxy.qq.com\npic.qq.com\nimage.qq.com\nmemo.qq.com\ntcc.qq.com\nyoyo.qq.com\nyoyo.qq.com\notherbdomain.x2stdns.tcdn.qq.com\neasy.qq.com\nsocial.qq.com\nanke.qq.com\nns4.qq.com\nts1.qq.com\njohn.qq.com\ntest.qq.com\nvv.video.qq.com\ngp.qq.com\ngp.qq.com\nsj.qq.com\najax.qq.com\nbof.qq.com\nmaps.qq.com\nmap.qq.com\nathena.qq.com\npictures.qq.com\nnc.qq.com\nfile.qq.com\nbm.qq.com\nemail.qq.com\nbz.qq.com\nec.qq.com\nsmc.qq.com\ndc.qq.com\nsecurity.qq.com\nfw.qq.com\nfi.qq.com\nread.qq.com\ngt.qq.com\ns.plcloud.music.qq.com\nvm.qq.com\nmq.qq.com\nfm.qq.com\nmx1.qq.com\nhk.qq.com\nim.qq.com\nfk.qq.com\nsandbox.api.unipay.qq.com\ndesigner.qq.com\nwallet.qq.com\npay.qq.com\nl.qq.com\nke.qq.com\nlr.qq.com\nbug.qq.com\nsyba.3g.qq.com\nmp.qq.com\ng.qq.com\nenterprise.qq.com\nsupplier.qq.com\nnr.qq.com\nqzs.tc.qq.com\napps.qq.com\nsource.qq.com\nqmail.qq.com\npy.qq.com\nse.qq.com\ntp.qq.com\ncommon.mail.qq.com\nsb.qq.com\ncrm.qq.com\ntw.qq.com\nregister.qq.com\nreg.qq.com\nwa.qq.com\nlog.qq.com\nws.qq.com\nwa.qq.com\nwa.qq.com\nkg.qq.com\np1.tcdn.qq.com\npage.qq.com\nns3.qq.com\nwin.qq.com\nns2.qq.com\nb2b.qq.com\nag.qq.com\npop.qq.com\ndisk.qq.com\nweiyun.qq.com\nimap.qq.com\nsmtp.qq.com\nwx.qq.com\nsso.qq.com\nwx1.qq.com\ndown.qq.com\ndlied1.tcdn.qq.com\njob.qq.com\ncloud.qq.com\ngb.qq.com\nmx2.qq.com\ndns2.qq.com\nweixin.qq.com\nsp.qq.com\nyun.qq.com\nwh.qq.com\ndianhua.qq.com\nwp.qq.com\norigin.qq.com\nminigame.qq.com\nnd.qq.com\ncode.qq.com\nminigame.tc.qq.com\nrtx.qq.com\nothers.x2.tc.qq.com\nyuanchuang.book.qq.com\ncj.qq.com\nhao.qq.com\nwecode.qq.com\nmx3.qq.com\nq.qq.com\niphone.qq.com\nfx.qq.com\nlaw.qq.com\nmeeting.qq.com\nhy.qq.com\nact.qq.com\nex.qq.com\nkf.qq.com\nwb.qq.com\npassword.qq.com\nem.qq.com\njoin.qq.com\nschool.qq.com\nmb.qq.com\nxh.qq.com\npengyou.qq.com\ndw.qq.com\nsdc.qq.com\nmta.qq.com\nhorizon.qq.com\nplay.qq.com\nacc.qq.com\ndt.qq.com\nwns.qq.com\ntb.qq.com\nxt.qq.com\nlm.qq.com\njz.qq.com\nwei.qq.com\npd.qq.com\nweishi.qq.com\nc.t.qq.com\nfilm.qq.com\nrecruit.qq.com\nvolunteer.qq.com\nsas.qq.com\ncb.qq.com\ncompass.qq.com\n888.qq.com\nguide.qq.com\nreader.qq.com\ni.weread.qq.com\neditor.qq.com\nssp.qq.com\nxg.qq.com\nwebproxy.qq.com\npilot.qq.com\nidea.qq.com\nplayer.qq.com\nplayer.qq.com\nmagic.qq.com\nweibo.qq.com\njg.qq.com\nw.t.qq.com\nproxy.t.qq.com\nfind.qq.com\nwe.qq.com\nnewcomm.weixin.qq.com\nqt.qq.com\nmark.qq.com\nun.qq.com\nasset.qq.com\nkeys.qq.com\ntrace.qq.com\nbtrace.qq.com\nchart.qq.com\nyd.qq.com\naurora.qq.com\nimc.qq.com\nmoss.qq.com\nzc.qq.com\ntts.qq.com\ncomic.qq.com\ncdc.qq.com\ntips.qq.com\npanda.qq.com\nyoutu.qq.com\niso.qq.com\nexplore.qq.com\nti.qq.com\nrz.qq.com\nlj.qq.com\npac.qq.com\nnba.qq.com\noffline.qq.com\nqb.qq.com\np2p.qq.com\nzf.qq.com\nfg.qq.com\nte.qq.com\nexmail.qq.com\ntea.qq.com\nskynet.qq.com\nmuse.qq.com\nalbum.qq.com\nhzp.qq.com\nexp.qq.com\npix.qq.com\nl2.qq.com\nandroid.reader.qq.com\ncsa.qq.com\nv5.qq.com\ntcs.qq.com\nverify.qq.com\nmam.qq.com\nesc.qq.com\nface.qq.com\nrun.qq.com\nting.qq.com\nbao.qq.com\ndevice.qq.com\ncdm.qq.com\netest.qq.com\nfanli.qq.com\nstory.qq.com\nurban.qq.com\nzd.qq.com\njia.qq.com\nnotice.qq.com\ndmc.qq.com\nlottery.qq.com\nwx2.qq.com\nsjb.qq.com\ngongyi.qq.com\nmidas.qq.com\ntest.888.qq.com\nm.888.qq.com"
  }
]