Full Code of jhao104/django-blog for AI

master bb7b8349b32a cached
84 files
884.8 KB
293.5k tokens
300 symbols
1 requests
Download .txt
Showing preview only (926K chars total). Download the full file or copy to clipboard to get everything.
Repository: jhao104/django-blog
Branch: master
Commit: bb7b8349b32a
Files: 84
Total size: 884.8 KB

Directory structure:
gitextract_0wolcq7b/

├── LICENSE
├── README.md
├── docs/
│   └── install.md
├── my_uwsgi.ini
├── requirements.txt
├── src/
│   ├── blog/
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── context_processors.py
│   │   ├── models.py
│   │   ├── templatetags/
│   │   │   ├── __init__.py
│   │   │   └── custom_filter.py
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── django_blog/
│   │   ├── __init__.py
│   │   ├── blogroll.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   ├── util.py
│   │   └── wsgi.py
│   ├── manage.py
│   ├── static/
│   │   ├── 404/
│   │   │   ├── css
│   │   │   └── style.css
│   │   ├── css/
│   │   │   ├── animation.css
│   │   │   ├── default.css
│   │   │   ├── flexslider.css
│   │   │   ├── font-icon.css
│   │   │   ├── lightbox.css
│   │   │   ├── login.css
│   │   │   ├── markdown.css
│   │   │   ├── public.css
│   │   │   ├── skin_1.css
│   │   │   ├── skin_2.css
│   │   │   └── skin_3.css
│   │   ├── cur/
│   │   │   ├── default.cur
│   │   │   └── link.cur
│   │   ├── js/
│   │   │   ├── album.js
│   │   │   ├── jquery.flexslider-min.js
│   │   │   ├── layer/
│   │   │   │   ├── extend/
│   │   │   │   │   └── layer.ext.js
│   │   │   │   ├── layer.js
│   │   │   │   └── skin/
│   │   │   │       ├── layer.css
│   │   │   │       └── layer.ext.css
│   │   │   ├── lightbox.js
│   │   │   ├── load.js
│   │   │   ├── my.js
│   │   │   ├── skin.js
│   │   │   ├── superbg-custom.js
│   │   │   └── tooltip.js
│   │   ├── layui/
│   │   │   ├── css/
│   │   │   │   ├── layui.css
│   │   │   │   ├── layui.mobile.css
│   │   │   │   └── modules/
│   │   │   │       ├── code.css
│   │   │   │       └── layer/
│   │   │   │           └── default/
│   │   │   │               └── layer.css
│   │   │   ├── lay/
│   │   │   │   └── modules/
│   │   │   │       ├── jquery.js
│   │   │   │       ├── layer.js
│   │   │   │       └── mobile.js
│   │   │   ├── layui.all.js
│   │   │   └── layui.js
│   │   └── prism/
│   │       ├── prism.css
│   │       └── prism.js
│   └── templates/
│       ├── 404.html
│       ├── blog/
│       │   ├── about.html
│       │   ├── archive.html
│       │   ├── base.html
│       │   ├── blogroll.html
│       │   ├── category.html
│       │   ├── component/
│       │   │   ├── auto_push_baidu.html
│       │   │   ├── blog_list.html
│       │   │   ├── changyan.html
│       │   │   └── pagination.html
│       │   ├── detail.html
│       │   ├── footer.html
│       │   ├── header.html
│       │   ├── index.html
│       │   ├── link.html
│       │   ├── list.html
│       │   ├── message.html
│       │   ├── message_board.html
│       │   ├── right.html
│       │   ├── search.html
│       │   └── tag.html
│       ├── robots.txt
│       └── sitemap.txt
└── uwsgi_params

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 J_hao104

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.


================================================
FILE: README.md
================================================
## Django搭建博客
![py35](https://img.shields.io/badge/Python-3.5-red.svg) 
![Django2.2](https://img.shields.io/badge/Django-2.2.0-green.svg)
[![](https://img.shields.io/badge/Powered%20by-@j_hao104-blue.svg)](http://www.spiderpy.cn/blog/)

使用Django快速搭建博客
### 要求
* Python: 3.5
* Django: 2.2.0

### 示例博客:<http://www.spiderpy.cn/blog>

### 特点

* markdown 渲染,代码高亮
* 三方社会化评论系统支持(畅言)
* 三种皮肤自由切换
* 阅读排行榜/最新评论
* 多目标源博文分享
* 博文归档
* 友情链接

### 下载
```
wget https://github.com/jhao104/django-blog/archive/master.zip
or
git clone git@github.com:jhao104/django-blog.git
```

### 安装
```
pip install -r requirements.txt  # 安装所有依赖
修改setting.py配置数据库
配置畅言:到http://changyan.kuaizhan.com/注册站点,将templates/blog/component/changyan.html中js部分换成你在畅言中生成的js。
畅言js位置: 畅言管理后台-》安装畅言-》通用代码安装-》自适应安装代码
python manage.py makemigrations blog
python manage.py migrate
python manage.py runserver
```
[文档](docs/install.md)

### 使用

```python
# 初始化用户名密码
python manage.py createsuperuser
# 按照提示输入用户名、邮箱、密码即可
# 登录后台 编辑类型、标签、发布文章等
http://ip:port/admin

```

浏览器中打开<http://127.0.0.1:8000/>即可访问

## Screen Shots

* 首页
![首页](docs/image/image1.png)

* 文章列表
![文章列表](docs/image/image2.png)

* 文章内容
![文章内容](docs/image/image3.png)

## 历史版本

* [v2.0](https://github.com/jhao104/django-blog/tree/v2.0)

* [v1.0](https://github.com/jhao104/django-blog/tree/v1.0)


================================================
FILE: docs/install.md
================================================
## 安装文档

### 源码安装

* 下载代码

```shell script
git clone https://github.com/jhao104/django-blog.git
```

* 安装依赖

```shell script
pip install -r requirements.txt
```

* 配置

    * 修改数据库配置

```shell script

django_blog.settings.py
```

   * 配置畅言(评论需要)

登录畅言http://changyan.kuaizhan.com/, 注册你的站点并配置完毕,
修改 `templates/blog/component/changyan.html` 内容,替换在畅言中生成的js。
畅言js位置: 畅言管理后台-》安装畅言-》通用代码安装-》自适应安装代码, 替换现有代码

* 初始化

```shell script
python manage.py makemigrations blog
python manage.py migrate
```

* 启动

```shell script
python manage.py runserver
```

生产部署和一般Django应用无异,可自行搜索。

 

================================================
FILE: my_uwsgi.ini
================================================
[uwsgi]

# Django-related settings

socket = :8001

# the base directory (full path)
chdir           = /home/ubuntu/web_blog

# Django s wsgi file
module          = django_blog.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 8

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = false

daemonize      = /var/log/web_blog.log


================================================
FILE: requirements.txt
================================================
Django==2.2.18
Markdown==3.3
PyMySQL==0.10.1

================================================
FILE: src/blog/__init__.py
================================================
import pymysql

pymysql.install_as_MySQLdb()


================================================
FILE: src/blog/admin.py
================================================
from django.contrib import admin

# Register your models here.


from blog.models import Tag, Article, Category


@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    date_hierarchy = 'date_time'
    list_display = ('title', 'category', 'author', 'date_time', 'view')
    list_filter = ('category', 'author')
    filter_horizontal = ('tag',)


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    pass


@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
    pass


================================================
FILE: src/blog/apps.py
================================================
from __future__ import unicode_literals

from django.apps import AppConfig


class BlogConfig(AppConfig):
    name = 'blog'


================================================
FILE: src/blog/context_processors.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     context_processors.py  
   Description :  
   Author :       JHao
   date:          2017/4/14
-------------------------------------------------
   Change Activity:
                   2017/4/14: 
-------------------------------------------------
"""
__author__ = 'JHao'

import importlib
from django_blog import blogroll
from blog.models import Category, Article, Tag, Comment


def sidebar(request):
    category_list = Category.objects.all()
    # 所有类型

    blog_top = Article.objects.all().values("id", "title", "view").order_by('-view')[0:6]
    # 文章排行

    tag_list = Tag.objects.all()
    # 标签

    comment = Comment.objects.all().order_by('-create_time')[0:6]
    # 评论

    importlib.reload(blogroll)
    # 友链

    return {
        'category_list': category_list,
        'blog_top': blog_top,
        'tag_list': tag_list,
        'comment_list': comment,
        'blogroll': blogroll.sites

    }


if __name__ == '__main__':
    pass


================================================
FILE: src/blog/models.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     models.py
   Description :
   Author :       JHao
   date:          2016/11/18
-------------------------------------------------
   Change Activity:
                   2016/11/18:
-------------------------------------------------
"""

from django.db import models
from django.conf import settings


# Create your models here.

class Tag(models.Model):
    tag_name = models.CharField('标签名称', max_length=30)

    def __str__(self):
        return self.tag_name


class Article(models.Model):
    title = models.CharField(max_length=200)  # 博客标题
    category = models.ForeignKey('Category', verbose_name='文章类型', on_delete=models.CASCADE)
    date_time = models.DateField(auto_now_add=True)  # 博客日期
    content = models.TextField(blank=True, null=True)  # 文章正文
    digest = models.TextField(blank=True, null=True)  # 文章摘要
    author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.CASCADE)
    view = models.BigIntegerField(default=0)  # 阅读数
    comment = models.BigIntegerField(default=0)  # 评论数
    picture = models.CharField(max_length=200)  # 标题图片地址
    tag = models.ManyToManyField(Tag)  # 标签

    def __str__(self):
        return self.title

    def sourceUrl(self):
        source_url = settings.HOST + '/blog/detail/{id}'.format(id=self.pk)
        return source_url  # 给网易云跟帖使用

    def viewed(self):
        """
        增加阅读数
        :return:
        """
        self.view += 1
        self.save(update_fields=['view'])

    def commenced(self):
        """
        增加评论数
        :return:
        """
        self.comment += 1
        self.save(update_fields=['comment'])

    class Meta:  # 按时间降序
        ordering = ['-date_time']


class Category(models.Model):
    name = models.CharField('文章类型', max_length=30)
    created_time = models.DateTimeField('创建时间', auto_now_add=True)
    last_mod_time = models.DateTimeField('修改时间', auto_now=True)

    class Meta:
        ordering = ['name']
        verbose_name = "文章类型"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Comment(models.Model):
    title = models.CharField("标题", max_length=100)
    source_id = models.CharField('文章id或source名称', max_length=25)
    create_time = models.DateTimeField('评论时间', auto_now=True)
    user_name = models.CharField('评论用户', max_length=25)
    url = models.CharField('链接', max_length=100)
    comment = models.CharField('评论内容', max_length=500)


================================================
FILE: src/blog/templatetags/__init__.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     __init__.py  
   Description :  
   Author :       JHao
   date:          2017/4/14
-------------------------------------------------
   Change Activity:
                   2017/4/14: 
-------------------------------------------------
"""
__author__ = 'JHao'


================================================
FILE: src/blog/templatetags/custom_filter.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     custom_filter.py  
   Description :  
   Author :       JHao
   date:          2017/4/14
-------------------------------------------------
   Change Activity:
                   2017/4/14: 
-------------------------------------------------
"""
__author__ = 'JHao'

import markdown
from django import template
from django.utils.safestring import mark_safe
from django.template.defaultfilters import stringfilter

register = template.Library()


@register.filter
def slice_list(value, index):
    return value[index]


@register.filter(is_safe=True)
@stringfilter
def custom_markdown(value):
    content = mark_safe(markdown.markdown(value,
                                          output_format='html5',
                                          extensions=[
                                              'markdown.extensions.extra',
                                              'markdown.extensions.fenced_code',
                                              'markdown.extensions.tables',
                                          ],
                                          safe_mode=True,
                                          enable_attributes=False))
    return content


@register.filter
def tag2string(value):
    """
    将Tag转换成string >'python,爬虫'
    :param value:
    :return:
    """
    return ','.join([each.get('tag_name', '') for each in value])


if __name__ == '__main__':
    pass


================================================
FILE: src/blog/tests.py
================================================
from django.test import TestCase

# Create your tests here.


================================================
FILE: src/blog/urls.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     urls.py  
   Description :  
   Author :       JHao
   date:          2017/4/13
-------------------------------------------------
   Change Activity:
                   2017/4/13: 
-------------------------------------------------
"""
__author__ = 'JHao'

from blog import views
from django.urls import path

urlpatterns = [
    path('', views.index, name='index'),
    path('list/', views.blog_list, name='list'),
    path('tag/<str:name>/', views.tag, name='tag'),
    path('category/<str:name>/', views.category, name='category'),
    path('detail/<int:pk>/', views.detail, name='detail'),
    path('archive/', views.archive, name='archive'),
    path('search/', views.search, name='search'),
    path('message/', views.message, name='message'),
    path('getComment/', views.get_comment, name='get_comment'),

]



================================================
FILE: src/blog/views.py
================================================
# -*- coding: utf-8 -*-
# Create your views here.

import json
from django.http import JsonResponse
from django_blog.util import PageInfo
from blog.models import Article, Comment
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render, get_object_or_404


def get_page(request):
    page_number = request.GET.get("page")
    return 1 if not page_number or not page_number.isdigit() else int(page_number)


def index(request):
    _blog_list = Article.objects.all().order_by('-date_time')[0:5]
    _blog_hot = Article.objects.all().order_by('-view')[0:6]
    return render(request, 'blog/index.html', {"blog_list": _blog_list, "blog_hot": _blog_hot})


def blog_list(request):
    """
    列表
    :param request:
    :return:
    """
    page_number = get_page(request)
    blog_count = Article.objects.count()
    page_info = PageInfo(page_number, blog_count)
    _blog_list = Article.objects.all()[page_info.index_start: page_info.index_end]
    return render(request, 'blog/list.html', {"blog_list": _blog_list, "page_info": page_info})


def category(request, name):
    """
    分类
    :param request:
    :param name:
    :return:
    """
    page_number = get_page(request)
    blog_count = Article.objects.filter(category__name=name).count()
    page_info = PageInfo(page_number, blog_count)
    _blog_list = Article.objects.filter(category__name=name)[page_info.index_start: page_info.index_end]
    return render(request, 'blog/category.html', {"blog_list": _blog_list, "page_info": page_info,
                                                  "category": name})


def tag(request, name):
    """
    标签
    :param request:
    :param name
    :return:
    """
    page_number = get_page(request)
    blog_count = Article.objects.filter(tag__tag_name=name).count()
    page_info = PageInfo(page_number, blog_count)
    _blog_list = Article.objects.filter(tag__tag_name=name)[page_info.index_start: page_info.index_end]
    return render(request, 'blog/tag.html', {"blog_list": _blog_list,
                                             "tag": name,
                                             "page_info": page_info})


def archive(request):
    """
    文章归档
    :param request:
    :return:
    """
    _blog_list = Article.objects.values("id", "title", "date_time").order_by('-date_time')
    archive_dict = {}
    for blog in _blog_list:
        pub_month = blog.get("date_time").strftime("%Y年%m月")
        if pub_month in archive_dict:
            archive_dict[pub_month].append(blog)
        else:
            archive_dict[pub_month] = [blog]
    data = sorted([{"date": _[0], "blogs": _[1]} for _ in archive_dict.items()], key=lambda item: item["date"],
                  reverse=True)
    return render(request, 'blog/archive.html', {"data": data})


def message(request):
    return render(request, 'blog/message_board.html', {"source_id": "message"})


@csrf_exempt
def get_comment(request):
    """
    接收畅言的评论回推, post方式回推
    :param request:
    :return:
    """
    arg = request.POST
    data = arg.get('data')
    data = json.loads(data)
    title = data.get('title')
    url = data.get('url')
    source_id = data.get('sourceid')
    if source_id not in ['message']:
        article = Article.objects.get(pk=source_id)
        article.commenced()
    comments = data.get('comments')[0]
    content = comments.get('content')
    user = comments.get('user').get('nickname')
    Comment(title=title, source_id=source_id, user_name=user, url=url, comment=content).save()
    return JsonResponse({"status": "ok"})


def detail(request, pk):
    """
    博文详情
    :param request:
    :param pk:
    :return:
    """
    blog = get_object_or_404(Article, pk=pk)
    blog.viewed()
    return render(request, 'blog/detail.html', {"blog": blog})


def search(request):
    """
    搜索
    :param request:
    :return:
    """
    key = request.GET['key']
    page_number = get_page(request)
    blog_count = Article.objects.filter(title__icontains=key).count()
    page_info = PageInfo(page_number, blog_count)
    _blog_list = Article.objects.filter(title__icontains=key)[page_info.index_start: page_info.index_end]
    return render(request, 'blog/search.html', {"blog_list": _blog_list, "pages": page_info, "key": key})


def page_not_found_error(request, exception):
    return render(request, "404.html", status=404)


def page_error(request):
    return render(request, "404.html", status=500)


================================================
FILE: src/django_blog/__init__.py
================================================


================================================
FILE: src/django_blog/blogroll.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     blogroll
   Description :
   Author :        JHao
   date:          2020/10/9
-------------------------------------------------
   Change Activity:
                   2020/10/9:
-------------------------------------------------
"""
__author__ = 'JHao'

sites = [
    {"url": "https://www.zaoshu.io/", "name": "造数", "desc": "智能云爬虫"},
    {"url": "http://brucedone.com/", "name": "大鱼的鱼塘", "desc": "大鱼的鱼塘 - 一个总会有收获的地方"},
    {"url": "http://www.songluyi.com/", "name": "灯塔水母", "desc": "灯塔水母"},
    {"url": "http://blog.topspeedsnail.com/", "name": "斗大的熊猫", "desc": "本博客专注于技术,Linux,编程,Python,C,Ubuntu、开源软件、Github等"},
    {"url": "https://www.urlteam.org/", "name": "URL-team", "desc": "URL-team"},
]

================================================
FILE: src/django_blog/settings.py
================================================
"""
Django settings for django_blog project.

Generated by 'django-admin startproject' using Django 1.10.2.

For more information on this file, see
https://docs.djangoproject.com/en/1.10/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.10/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '85bus3!*+_3t1ks)&&o(u-liuhucshja!-44a1squ93=#+v+4r'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']

# HOST = "http://www.spiderpy.cn"

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'django_blog.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'blog.context_processors.sidebar'
            ],
        },
    },
]

WSGI_APPLICATION = 'django_blog.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'blog',
        'USER': 'root',
        'PASSWORD': 'jccfc',
        'HOST': '19.19.9.231',
        'PORT': '3306'
    }
}


# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

================================================
FILE: src/django_blog/urls.py
================================================
"""django_blog URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.urls import path, include
from django.contrib import admin
from blog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include(('blog.urls', 'blog'), namespace='blog')),
    path('', views.index, name='index'),

]

handler404 = views.page_not_found_error
handler500 = views.page_error


================================================
FILE: src/django_blog/util.py
================================================
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     util
   Description :
   Author :        JHao
   date:          2020/9/30
-------------------------------------------------
   Change Activity:
                   2020/9/30:
-------------------------------------------------
"""
__author__ = 'JHao'

from math import ceil


class PageInfo(object):

    def __init__(self, page, total, limit=8):
        """

        :param page: 页数
        :param total: 总条数
        :param limit: 每页条数
        """
        self._limit = limit
        self._total = total
        self._page = page
        self._index_start = (int(page) - 1) * int(limit)
        self._index_end = int(page) * int(limit)

    @property
    def index_start(self):
        return self._index_start

    @property
    def index_end(self):
        return self._index_end

    @property
    def current_page(self):
        return self._page

    @property
    def total_page(self):
        return ceil(self._total / self._limit)

    @property
    def total_number(self):
        return self._total


================================================
FILE: src/django_blog/wsgi.py
================================================
"""
WSGI config for django_blog project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_blog.settings")

application = get_wsgi_application()


================================================
FILE: src/manage.py
================================================
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_blog.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)


================================================
FILE: src/static/404/css
================================================
/* cyrillic-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyCN4Ffgg.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyLN4Ffgg.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyDN4Ffgg.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyMN4Ffgg.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyBN4Ffgg.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 300;
  src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejZftVyPN4E.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyCN4Ffgg.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyLN4Ffgg.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyDN4Ffgg.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyMN4Ffgg.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyBN4Ffgg.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Ubuntu';
  font-style: italic;
  font-weight: 500;
  src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCp6KVjbNBYlgoKejYHtFyPN4E.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1CzjvWyNL4U.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1CzjtGyNL4U.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1CzjvGyNL4U.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1Czjs2yNL4U.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1CzjvmyNL4U.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 300;
  src: local('Ubuntu Light'), local('Ubuntu-Light'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoC1CzjsGyN.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3jvWyNL4U.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3jtGyNL4U.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3jvGyNL4U.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3js2yNL4U.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3jvmyNL4U.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 500;
  src: local('Ubuntu Medium'), local('Ubuntu-Medium'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCjC3jsGyN.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2) format('woff2');
  unicode-range: U+0370-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2) format('woff2');
  unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 700;
  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url(http://fonts.gstatic.com/s/ubuntu/v10/4iCv6KVjbNBYlgoCxCvjsGyN.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}


================================================
FILE: src/static/404/style.css
================================================
/* === RESET === */
*, html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, label, fieldset, input, p, blockquote, th, td { margin: 0; padding: 0; }
table { border-collapse: collapse; border-spacing: 0; }
fieldset, img { border: 0 none; }
address, caption, cite, code, dfn, em, strong, th, var { font-style: normal; font-weight: normal; }
ol, ul, li { list-style: none outside none; }
caption, th { text-align: left; }
table p { display: inline; }
h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: normal; }
q:before, q:after { content: ""; }
a img { border: medium none; }
img { border: medium none; }
a { color: #696969; text-decoration: none; }
p { color: #888888; font-size: 15px; font-weight: 400;  line-height: 20px; }
strong { font-weight: bold; }

.last { margin-right: 0 !important; }
.fl {float: left}
.fr {float: right}
.no-margin { margin: 0!important; }
.text-align-center { text-align: center;}
.clearfix:after { clear: both; content: ""; display: block; height: 0; }
.clearfix { display: inline-block; }
.clearfix { display: block; }

/* === CSS === */

html {
	height: 100%;
	background-color: #86dbeb;
	background: -webkit-linear-gradient(top, #c8f6ff 0%, #5fcbdf 80%, #00b3d4 100%); /* For Safari */
	background: -o-linear-gradient(top, #c8f6ff 0%, #5fcbdf 80%, #00b3d4 100%); /* For Opera 11.1 to 12.0 */
	background: -moz-linear-gradient(top, #c8f6ff 0%, #5fcbdf 80%, #00b3d4 100%); /* For Firefox 3.6 to 15 */
	background: linear-gradient(to top, #c8f6ff 0%, #5fcbdf 80%, #00b3d4 100%); /* Standard syntax */
}

body {
	font-family: 'Ubuntu', sans-serif;
	font-weight: 300;
	overflow: hidden;
}

a {
	text-decoration: none;
	-webkit-transition: all .3s;
	-moz-transition: all .3s;
	transition: all .3s;
}

strong {
	font-weight: 700;
}

.container {
	position: absolute;
	width: 100%;
	height: 700px;
	background: url(images/main-bg.png) center top no-repeat;

	bottom: 0px;
}

.centerContent {
	width: 960px;
	margin: 0 auto;
}

/* === Airplane === */
#plane {
	display: block;
	position: relative;
	width: 900px;
	height: 70px;
	top: 120px;
}

#plane span {
	float: left;
}

#plane .tail {
	height: 70px;
	background: url(images/tail.png) repeat-x;
	padding: 26px 40px;
	font-size: 18px;
	font-style: italic;
	color: #fff;
}

/* === Search === */
.search {
	position: relative;
	display: block;
	margin-top: 230px;
	width: 100%;
	height: 30px;
}

.searchbox {
	width: 650px;
	border: 1px solid #e5aa4b;
	box-shadow: inset 0px 2px 2px #9e7534;
	-webkit-border-radius: 50px;
	-moz-border-radius: 50px;
	border-radius: 50px;
	padding: 7px 15px;
}

::-webkit-input-placeholder { 
	color:#bfa379; 
}
::-moz-placeholder { 
	color:#bfa379; 
}
:-ms-input-placeholder { 
	color:#bfa379; 
} 
input:-moz-placeholder { 
	color:#bfa379; 
}

form {
	width: 100%;
}

input:focus {
	outline: 0;
	box-shadow: 0 0 6px #bc8a3c;
}

.searchbox-submit {
	position: absolute;
	cursor: pointer;
	display: block;
	border: none;
	width: 16px;
	height: 16px;
	background: url(images/search.png) center no-repeat;
	top: 8px;
	left: 655px;
}

/* === Menu === */
.menu {
	width: 100%;
	display: block;
	margin-top: 240px;
}

.menu a {
	font-size: 12px;
	color: #8d7856;
	font-weight: 300;
	margin-right: 24px;
	text-transform: uppercase;
	transition: all .3s;
}

.menu a:hover {
	color: #473a24;
}

/* === Footer === */
.footer {
	display: block;
	margin-top: 50px;
	color: #b38e53;
	font-size: 12px;
}

/* === Social Icons === */
.social a {
	margin-right: 3px;
	opacity: 0.7;
    transition: opacity .5s ease-in-out;
    -moz-transition: opacity .5s ease-in-out;
    -webkit-transition: opacity .5s ease-in-out;
}

.social a:hover {
	opacity: 1.0;
    transition: opacity .3s ease-in-out;
    -moz-transition: opacity .3s ease-in-out;
    -webkit-transition: opacity .3s ease-in-out;
}

/* === Credits === */
.credits {
	float: left;
	padding: 5px 0 0 30px;
}


================================================
FILE: src/static/css/animation.css
================================================

@-webkit-keyframes fuzuo{
	0%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	20%{opacity:0;}
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}
@keyframes fuzuo{
	0%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	20%{opacity:0;}
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}

@-webkit-keyframes fushang{
	0%{transform:translateY(-300px);-webkit-transform:translateY(-300px);opacity:0;}
	10%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}
@keyframes fushang{
	0%{transform:translateY(-300px);-webkit-transform:translateY(-300px);opacity:0;}
	10%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}
@-webkit-keyframes zhengshang{
	0%{transform:translateY(300px);-webkit-transform:translateY(300px);opacity:0;}
	10%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}
@keyframes zhengshang{
	0%{transform:translateY(300px);-webkit-transform:translateY(300px);opacity:0;}
	10%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}

@-webkit-keyframes zhuan{
	0%{transform:rotateY(75deg);-webkit-transform:rotateY(75deg);opacity:0;}
	
	100%{transform:rotateY(0deg);-webkit-transform:rotateY(0deg);opacity:1;}
	
}
@keyframes zhuan{
	0%{transform:rotateY(75deg);-webkit-transform:rotateY(75deg);opacity:0;}
	
	100%{transform:rotateY(0deg);-webkit-transform:rotateY(0deg);opacity:1;}
	
}
@-webkit-keyframes zuo{
	0%{transform:translateX(300px);-webkit-transform:translateX(300px);opacity:0;}
	30%{opacity:0;}
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}
@keyframes zuo{
	0%{transform:translateX(300px);-webkit-transform:translateX(300px);opacity:0;}
	30%{opacity:0;}
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}
@-webkit-keyframes fuxia{
	0%{transform:translateY(300px);-webkit-transform:translateY(300px);opacity:0;}
	30%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}
@keyframes fuxia{
	0%{transform:translateY(300px);-webkit-transform:translateY(300px);opacity:0;}
	30%{opacity:0;}
	100%{transform:translateY(0px);-webkit-transform:translateY(0px);opacity:1;}
	
}
@-webkit-keyframes fuxiasuo{
	0%{-webkit-transform:translateY(300px);transform:translateY(300px);opacity:0;}
	20%{opacity:0;}
	100%{-webkit-transform:translateY(0px);transform:translateY(0px);opacity:1;}
	
}
@keyframes fuxiasuo{
	0%{-webkit-transform:translateY(300px);transform:translateY(300px);opacity:0;}
	20%{opacity:0;}
	100%{-webkit-transform:translateY(0px);transform:translateY(0px);opacity:1;}
	
}
@-webkit-keyframes suoxiao{
	0%{-webkit-transform:scale(0.1,0.1);transform:scale(0.1,0.1);opacity:0;}
	20%{opacity:0;}
	100%{-webkit-transform:scale(1,1);transform:scale(1,1);opacity:1;}
	
}
@keyframes suoxiao{
	0%{-webkit-transform:scale(0.1,0.1);transform:scale(1,1);opacity:0;}
	20%{opacity:0;}
	100%{-webkit-transform:scale(1,1);transform:scale(1,1);opacity:1;}
	
}

@-webkit-keyframes zuo1{
	0%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}
@keyframes zuo1{
	0%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	
	100%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
}
@-webkit-keyframes zuo2{
	0%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
	100%{transform:translateX(300px);-webkit-transform:translateX(300px);opacity:0;}
	
}
@keyframes zuo2{
	0%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
	100%{transform:translateX(300px);-webkit-transform:translateX(300px);opacity:0;}
	
}
@-webkit-keyframes zuo3{
	0%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
	100%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	
}

@keyframes zuo3{
	0%{transform:translateX(0px);-webkit-transform:translateX(0px);opacity:1;}
	
	100%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}
	
}









================================================
FILE: src/static/css/default.css
================================================
/****文章页****/
article {width:100%;overflow:hidden;}
article  h3{text-align:center;font-size:20px!important;font-weight:bold!important;padding:15px 0!important;margin-bottom:20px!important; line-height:30px!important;}
.post-line{width:100%;padding:10px 0;box-sizing:border-box;}
.post-line ul{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.post-line ul li{display:inline;}
.post-line ul li a{display:inline-block;margin:0 5px;font-size:12px}

.article-content{width:100%;overflow:hidden;margin-top:20px;}
.article-content .article-body{width:95%;margin:auto;overflow:hidden;padding:25px 0;position:relative;}
.edit-time{position:absolute;bottom:0;right:0;color:#999;font-size:12px;}
.edit-time i{color:inherit;}
.article-body p{background:none!important;margin-bottom:20px;line-height:25px;}
.article-body h1,.article-body h2,.article-body h3,.article-body h4,.article-body h5{background:none!important;}
.article-body img{height: auto;max-width: 100%;vertical-align: middle;border: 0;}
#Hotbg{background: rgba(255,255,255,0.5) url(../images/icon/Hot.png)no-repeat top left;}
#art-tj{background: rgba(255,255,255,0.5) url(../images/icon/tj.gif)no-repeat top right;}

/*留言页*/
.comment-area .index-title{margin-top:3px;}
.comment-area .index-title a{float:right;overflow:hidden;margin-right:10px;}
.comment-area .index-title span{color:#333;margin:0 5px;}
.comment-area>ul>li{overflow:hidden;width:100%;margin-bottom:30px;padding:10px 0;box-sizing:border-box;    position: relative;}
/*.comment-area>ul>li  .order{right:10px;top:5px;color:#ccc;font-size:12px;    position: absolute;}*/
/*小三角*/
.comment-info .caret{width:0; height:0; border-top:10px solid transparent;border-bottom:10px solid transparent; border-right:20px solid rgba(255,255,255,0.5); 	position:absolute;left:-20px;top:20%;}
.louceng{position:absolute;right:10px;top:5px;color:#ccc;font-size:12px;}

.comment-ava{float:left;max-width:50px;max-height:50px;font-size:12px;text-align:center;padding-left:15px;padding-top:10px;}
.comment-ava img{width:100%;}
.comment-ava span{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.comment-info{float:left;max-width:88%;position:relative;margin-left:15px;padding:10px 0px;border-radius:5px;-webkit-border-radius:5px;}
.comment-line ul {text-align:left;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.comment-line ul li{display:inline;margin:0 5px;font-size:12px;color:#0181da;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.comment-line ul li:first-child{margin-left:0;}
.comment-content{padding:10px 0;font-size:14px;width:100%;color:#333;}
.comment-content img{max-width:60px;vertical-align: middle;}
/*回复样式*/
.re-comment{border-top:1px solid #ddd;width:100%;overflow:hidden;margin-top:10px;}
.admin-ava{float:left;max-width:50px;max-height:50px;font-size:12px;text-align:center;padding-top:10px;}
.admin-ava img{width:100%;}
.re-info{float:left;position:relative;margin-left:15px;padding:10px 0px;border-radius:5px;-webkit-border-radius:5px;}
.re-info span{font-size:12px;float:left;width:100%;display:inline-block;margin:5px 0;color:#777;white-space:nowrap;overflow:hidden;text-overflow: ellipsis}
.re-info span a{color:#0181da;margin:0 5px;}
.re-info span img{vertical-align: middle;position:relative;top:-3px;}
.re-content{padding:10px 0;font-size:12px;width:100%;color:#333;}
.re-content img{max-width:60px;vertical-align: middle;}
/*分页*/
.pagination {width:100%;overflow:hidden;margin: 20px 0;font-size:12px;}
.list-page{float:right;margin-bottom:20px;}
.pagination ul {float:left;display: inline-block;margin-bottom: 0;margin-left: 0;-webkit-border-radius: 3px;border-radius: 3px;}
.pagination ul > li {display: inline;}
.pagination ul > li > a,
.pagination ul > li > span {float: left;padding: 0 14px;margin:0 5px;line-height: 38px;text-decoration: none;background-color:rgba(255,255,255,0.6);border-left-width: 0;color:#0181da;box-sizing:border-box;}
.pagination ul > li > a:hover,
.pagination ul > .active > a,
.pagination ul > .active > span {background-color:rgba(255,255,255,0.9);}
.pagination ul > .active > a,
.pagination ul > .active > span {color: #999999;cursor: default;}
.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover {color: #999999;cursor: default;background-color: transparent;}
.pagination-centered {text-align: center;}
.pagination-right {text-align: right;}
/*评论*/
.form-in{margin-bottom:80px;}
.form-btn{font-size:18px;font-weight:normal;padding:15px 0!important;margin-top:30px;}
.hdmenu {width:100%;text-align:left;}
.hdmenu li{display:inline;font-size:12px;color:#555;margin:0 3px;}
.hdmenu li input[type="checkbox"]{padding:0;margin:0;border:1px solid #ccc;box-sizing:border-box;position:relative;top:2px;}
.input-prepend{width:100%;height:35px;margin:15px 0;font-size:12px;}
.input-prepend i{width:35px;height:100%;background:rgba(255,255,255,0.8);border:1px solid #ccc;box-sizing:border-box;border-right:none;line-height:35px;text-align:center;margin:0;float:left;}
.input-prepend input{height:100%;margin:0;padding:0;float:left;box-sizing:border-box;width:30%;line-height:35px;}
.yzm input{width:70px;}
.yzm span{width:50px;height:100%;border:#ddd 1px solid;border-left:0;box-sizing:border-box;display:inline-block;background:rgba(255,255,255,0.8);}
.yzm img{width:90%;margin:auto;margin-top:10px;}

.face-box{width:100%;position:relative;}
.face-box #face-btn{width:100%;padding:5px 0;text-align:left;display:inline-block;font-size:12px;color:#777;}
.face-box #face-btn img{position:relative;top:7px;}
.face-box textarea{width:70%;height:150px;}

.feed-sub{width:150px;height:40px;padding:10px 0;}
.feed-sub input{width:100%;height:100%;background:#fff;cursor:pointer;color:#ff6700;}
.feed-sub input:hover{color:#333;}

/*文章分享按钮样式*/
.article-fx{text-align:center;width:100%;padding:10px 0;position:relative;}
.article-fx a{font-size:14px;background:#1dd06d;color:#fff;display:inline-block;width:50px;height:50px;line-height:50px;color:#fff;}
.arc-bdfx{display:none;border-radius:5px;position:absolute;background:rgba(255,255,255,0.9);top:-10px;width:350px;box-shadow:0px 0px 15px #ccc;border:1px solid #ccc;left:0;right:0;margin-left:auto;margin-right:auto;}
.arc-bdfx>.bdsharebuttonbox{padding:20px 0;margin:0;}
.arc-bdfx i{position:absolute;right:5px;top:5px;color:#777;cursor:pointer;font-size:12px;}

/*文章正文底部标签*/
.article_tag{width:100%;margin:auto;padding:10px 0;margin-bottom:30px;background:rgba(255,255,255,0);overflow:hidden;}
.article_tag ul{margin:auto 0;clear:both;text-align:center;float:none;}
.article_tag ul li{display:inline;font-size:12px;border:none;border-radius:2px;padding:5px 10px;margin:0 5px;border-radius:50px;-webkit-border-radius:50px;}
.article_tag ul li a{color:#fff;display:inline-block;margin-bottom:10px;}
.article_tag ul li:nth-of-type(1){background:#4595e7;}
.article_tag ul li:nth-of-type(2){background:#e7458d;}
.article_tag ul li:nth-of-type(3){background:#e79545;}
.article_tag ul li:nth-of-type(4){background:#1dd06d;}
.article_tag ul li:nth-of-type(5){background:#333;}
hr {width:90%;margin: 20px auto; border: 0;border-top: 1px solid #eeeeee;border-bottom: 1px solid rgba(255,255,255,0.8);}

/*上一篇*/
.shangyip{margin:30px 0;padding:10px 0;width:100%;overflow:hidden;}
.shangyip span{display:inline-block;float:left;width:100%;text-indent:5px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.shangyip span:first-child{margin-bottom:10px}
.shangyip span a:hover{color:#333;text-decoration:underline;}

/*可能喜欢*/
.maybe-love{margin-bottom:30px;overflow:hidden;}
.maybe-love h4{}
.maybe-love ul{text-align:center;margin-left: -1.5%;margin-right: -1.5%;overflow:hidden;}
.maybe-love ul li{float:left;text-align:center;width:22%;margin:1.5%;}
.maybe-love ul li img{width:100%;height:100px;border:1px solid #ddd;box-sizing:border-box;border-radius:5px;-webkit-border-radius:5px;padding:5px;}
.maybe-love ul li span{font-size:13px;display:inline-block;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#00a2ff;}
.maybe-love ul li:hover img{border:1px solid #fff;}



/*说说列表页*/
.shuo-area article >ul>li{overflow:hidden;width:100%;margin-bottom:20px;padding:10px 0;}

.shuo-ava{float:left;max-width:50px;font-size:12px;text-align:center;padding:5px;}
.shuo-ava img{width:100%;}
.shuo-ava span{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold;}
.shuo-info{float:left;max-width:86%;position:relative;margin-left:25px;padding:10px 0px;border-radius:8px;-webkit-border-radius:8px;}
.shuo-line ul {text-align:left;margin-left:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px dotted #ddd;box-sizing:border-box;}
.shuo-line ul li{display:inline;margin:0 5px;font-size:12px;color:#0181da;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.shuo-line ul li:first-child{margin-left:0;}
.shuo-content{padding:10px;font-size:14px;color:#555;}
.shuo-content img{max-width:90%;vertical-align: middle;}
.shuo-content:hover{text-decoration:underline;}
/*气泡*/
.arrow_box {
	position: relative;
	background: rgba(255,255,255,0.6);

}
.arrow_box:after, .arrow_box:before {
	right: 100%;
	top: 30px;
	border: solid transparent;
	content: " ";
	height: 0;
	width: 0;
	position: absolute;
	pointer-events: none;
}

.arrow_box:after {
	border-color: rgba(255, 255, 255, 0);
	border-right-color:rgba(255,255,255,0);
	border-width: 14px;
	margin-top: -14px;
}
.arrow_box:before {
	border-color: rgba(206, 208, 224, 0);
	border-right-color:rgba(255,255,255,0.5);
	border-width: 15px;
	margin-top: -15px;
}


/*说说内页*/
.shuos-area{width:100%;overflow:hidden;margin-bottom:30px;padding-bottom:15px;padding-top:10px;}
.shuos-ava{padding:15px;overflow:hidden;}
.shuos-ava img{max-width:50px;max-height:50px;float:left;border-radius:50%;-webkit-border-radius:50%;}
.shuos-ava a{font-size:13px;display:inline-block;margin-left:15px;padding-top:15px;}
.shuos-ava time{color:#777;}
.shuos-content{font-size:13px;padding:0 15px 15px 15px ;line-height:28px;overflow:hidden;}
.shuos-content img {vertical-align:middle;max-width:100%;}
.shuos-area ul {text-align:right;width:90%;margin:auto;}
.shuos-area ul li{font-size:12px;display:inline;color:#888;margin:0 5px;}
.shuos-area ul li:last-child{float:right}

/*搜索提示*/
.search-tip{margin:30px 0;}
.search-tip span{padding:20px;display:inline-block;line-height:28px;}
.search-title{font-size:16px;padding:20px 10px;}

/*关于页面*/
.about-content{line-height:25px;margin-bottom:30px;padding: 20px;}



/*友情链接*/
.blog_hd {width: 100%;padding-bottom:25px;}
.blog_hd ul {margin-left:-5px;margin-right:-5px;}
.blog_hd .hd_right {border: 1px double #CCC;padding:0 5px;float:left;width: 53%;margin-left:2%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;text-align:center;background:rgba(255,255,255,0.5);border-radius: 8px;-webkit-border-radius: 8px;}
.blog_hd .hd_right:nth-of-type(1) a{color:#34b900;}
.blog_hd ul li {font-size:12px;width:18%;display: inline-block;list-style-type: none;margin:10px 5px 10px 5px;overflow:hidden;white-space: nowrap;}
.blog_hd ul li img {width:100%;}
.blog_hd >ul >li> a{display:inline-block;float:left;height:100%;height:40px;width:40px;padding: 4px;border: 1px double #CCC;background: rgba(255,255,255,0.5);border-radius:100px;-webkit-border-radius:100px;-moz-border-radius:100px;}
/*内页链接*/
.blog_links ul {margin: 25px 0 ;overflow:hidden;}
.blog_links li {width:18%;margin:10px 6px 10px 6px;-webkit-transition:all 0.5s;transition:all 0.5s;float:left;line-height:15px;padding:5px 0;box-sizing:border-box;border:1px  dotted #fff;background:linear-gradient(rgba(255,255,255,0.9), rgba(255,255,255,0.1),rgba(255,255,255,0.9));text-align:center;font-size:12px;
background: -webkit-linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.1),rgba(255, 255, 255, 0.9));
}
.blog_links li a{color:rgb(234,39,0);display: inline-block;width:100%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
.blog_links li  span{display:none;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;padding:0 5px;color:#555;}
.blog_links li:hover{border-radius:10px;-webkit-border-radius:10px;}
.link-edit{padding:25px 0;}



/*****相册封面*****/

.album  h4{width:100%;margin:0 auto 30px auto;}
.album .pagination{width:100%;margin:30px auto 30px auto;}
.wall {display: block;position: relative;margin-bottom:10px;overflow:hidden;margin-left: -1.5%;margin-right: -1.5%;}
.wall-column {display: block;position: relative;width: 25%;float: left;padding: 0 1.5%;box-sizing: border-box;}
.wall-li {display: block;margin: 0 0 8% 0;padding: 5%;background:rgba(255,255,255,0.7);border-radius: 3px;position:relative;box-shadow: 0px 0  0px rgba(0, 0, 0, 0.05);transition:all 0.2s;overflow: hidden;box-sizing:border-box;position: relative;border:1px solid rgba(0,0,0,0.1);}
.wall-li:hover{border:1px solid #ff4200;box-shadow:0 0 10px #555;}
.wall-li img {display: block;width: 100%;margin: 0 0 5% 0;}
.wall-li p{ overflow: hidden; font-weight:bold;text-overflow: ellipsis; white-space: nowrap; width: 100%; font-size: 14px;padding-bottom:10px; }
.wall-li small{ font-size:12px; color: #777; display:inline-block;line-height:15px;overflow: hidden;text-overflow: ellipsis; white-space: nowrap;}
.wall-li small:nth-of-type(1){float:left}
.wall-li small:nth-of-type(2){float:right}

.show-btn{width:100%;height:100%;background:rgba(0,0,0,0.8);overflow:hidden;position:absolute;left:0;top:0;transform:scale(0);-webkit-transform:scale(0);transition:all 0.3s ease;-webkit-transition:all 0.3s ease;}
.show-btn a{display:inline-block;width:50%;text-align:center;top:45%;font-size:30px;position:absolute;}
.show-btn a i{color:#fff;}
.show-pic:hover i,.show-info:hover i{color:#ff6700}
.wall-li:hover .show-btn{transform:scale(1);-webkit-transform:scale(1);}
.show-pic{left:0;}
.show-info{right:0;}

/*相册内页*/
.gallery2 h4{width:100%;margin:0 auto 30px auto;}
.gallery2 .pagination{width:100%;margin:30px auto 30px auto;}
.gallery2 h4 a{float:right;margin-right:10px;}
.gallery2 h4  span font{color:#000;display:inline-block;margin:0 5px;}
.gallery2 ul .wall-li small{width:auto;margin-right:5px;display:inline-block;float:right;line-height:23px;}
.gallery2 ul .wall-li p{font-size:12px;color:#333;font-weight:normal;padding:0;}

.return-xc{margin:auto;overflow:hidden;padding:20px 0;}
.return-xc a{background:#fff;color:#ff6700;border-radius:5px;padding:8px 20px;font-size:12px;-webkit-border-radius:5px;display:inline-block;transition:all 0.3s;}
.return-xc i{color:#ff6700;}
.return-xc a:hover{background:#ff6700;color:#fff;}
.return-xc a:hover i{color:#fff;}


/*照片单页*/
.picture{width:100%;overflow:hidden;margin-bottom:30px;}
.pic-main{width:100%;overflow:hidden;margin-bottom:30px;text-align:left;}
.pic-main img{vertical-align:middle;width:auto;}
.pic-info{width:100%;overflow:hidden;}
.pic-info >ul{width:100%;overflow:hidden;padding-bottom:10px;}
.pic-info >ul >li{width:45%;margin-right:5%;float:left;padding:10px 0;text-align:left;border-bottom:1px dotted #eee;color:#555;box-sizing:border-box;font-size:13px;}
.pic-info h2{background:none;padding:0;padding-top:10px;text-indent:0;}
.pic-info p{width:100%;text-align:left;font-size:13px;}

.pic-btn{width:100%;padding:25px 0;overflow:hidden;}
.pic-btn button{background:rgba(0,0,0,0.8);padding:10px 20px;border:none;color:#fff;cursor:pointer;transition:all 0.3s;}
.pic-btn button i{color:#fff;}
.pic-btn button:hover{background:#fff;color:#333;}
.pic-btn button:hover i{color:#333;}
.pic-btn .pull-right{background:#fff;color:#ff6700;font-size:12px;padding:8px 20px;-webkit-border-radius:5px;display:inline-block;transition:all 0.3s;}
.pic-btn .pull-right:hover{background:#ff6700;color:#fff;}
.pic-btn .pull-right:hover i{color:#fff;}

.picture .article-fx{padding:0;margin:0;width:auto;text-align:left;}
.picture .article-fx .img-circle{padding:0;margin:0;width:auto;height:auto;background:none;font-size:13px;color:#555;line-height:24px;}


/*素材列表*/
.sucailist{width:100%;}
.sucailist >ul{margin-left:-1%;margin-right:-1%;overflow:hidden;}
.sucailist .su-li#New,.sucailist .su-li#arc-tj,.sucailist .su-li#Hotbg{background-position:100% 0;}
.sucailist .su-li{margin-bottom:25px;text-align:center;border:1px solid #ddd;padding:15px 0;box-sizing:border-box;overflow:hidden;position:relative;background:rgba(255,255,255,0.5);transition:0.2s;}
.sucailist .su-li:hover{border-color:#ff4200;box-shadow:0 0 10px #555;}
.sucailist>ul>.wall-column{width:31.3%;margin:auto;margin:0 1%;float:left;padding:0;}
.sucailist>ul>.wall-column .sucaiimg{width:100%;overflow:hidden;}
.sucailist>ul>.wall-column  .sucaiimg img{width:85%;transition: all 0.5s;-webkit-transition: all 0.5s;}
.sucai-right{width:90%;margin:auto;}
.sucai-right h4{padding:0;margin:0;background:none;font-size:15px;padding:8px;text-indent:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align: left;}
.sucai-right p{font-size:13px;overflow:hidden;text-overflow:ellipsis;color:#999;text-align:left;line-height:1.5;padding:5px 0;}
.sucai-right ul{width:100%;overflow:hidden;bottom:5px;text-align:center;}
.sucai-right ul li{float:left;overflow:hidden;padding:0 5px;font-size:12px;color:#888;}
.sucai-right ul li:last-child{float:right;}
.sucailist>ul>.wall-column .su-li:hover a img{transform:scale(1.1);}
.sucai-fx,.down-btn{width:100px!important;border-radius:8px;-webkit-border-radius:8px;height:35px!important;line-height:35px!important;transition:all 0.2s;}
.sucai-fx{}
.sucai-fx:hover{background:#079450;}
.down-btn:hover{background:#d8033a!important;}
.sucai-fx i,.down-btn i{color:#fff;}
.down-btn{background:#e6176a!important;margin-right:25px;}

.ft-part1 .paihang-ul li{padding:8px 0;border-bottom:1px dotted #777;}
.ft-part1 .paihang-ul li a{color:#fff;}
/*end 素材列表*/

#supersized-loader { position:absolute; top:50%; left:50%; z-index:0; width:60px; height:60px; margin:-30px 0 0 -30px; text-indent:-999em; background:url(../images/icon/loading.gif) no-repeat center center;}
	#supersized {  display:block; position:fixed; left:0; top:0; overflow:hidden; z-index:-999; height:100%; width:100%; }
	#supersized img { width:auto; height:auto; position:relative; display:none; outline:none; border:none; }
	#supersized.speed img { -ms-interpolation-mode:nearest-neighbor; image-rendering: -moz-crisp-edges; }	/*Speed*/
	#supersized.quality img { -ms-interpolation-mode:bicubic; image-rendering: optimizeQuality; }			/*Quality*/	
	#supersized li { display:block; list-style:none; z-index:-30; position:fixed; overflow:hidden; top:0; left:0; width:100%; height:100%; background:#111; }
	#supersized a { width:100%; height:100%; display:block; }
	#supersized li.prevslide { z-index:-20; }
	#supersized li.activeslide { z-index:-10; }
	#supersized li.image-loading { background:#111 url(../images/icon/loading.gif) no-repeat center center; width:100%; height:100%; }
	#supersized li.image-loading img{ visibility:hidden; }
	#supersized li.prevslide img, #supersized li.activeslide img{ display:inline; }
	#supersized img { max-width: none !important }





@media screen and (max-width:414px){.xc_info .xc_ul li img{height:6em;}	.xc_info .xc_ul li p{font-size:12px;}}
@media screen and (min-width:320px) and (max-width:768px){

	article  h3{font-size:16px!important;}
	.comment-ava{max-width:40px;max-height:40px;padding-left:10px;}
	.comment-content{font-size:12px;}
	.comment-info{max-width:80%;margin-left:10px;}
	.re-info{max-width:80%;margin-left:8px;}

	.admin-ava{max-width:40px;max-height:40px;}
	.re-info span a{margin:0;}
	.face-box textarea{width:95%;}
	.input-prepend input{width:80%;}
	.yzm input{width:80px;}
	.arc-bdfx{width:98%;}
	.shangyip span{font-size:12px;}
	.maybe-love ul li{width:46.5%;}
	.maybe-love ul li:nth-of-type(3),.maybe-love ul li:nth-of-type(4){display:none;}
	.shuo-ava{max-width:40px;max-height:40px;}
	.shuo-info{max-width:75%;margin-left:15px;padding:0;}
	.shuo-content{font-size:12px;}
	.blog_hd ul li{width:45%;}
	.blog_links li{width:29.3%;}
	.link-text{width:90%!important}
	.xc_info .xc_ul li,.gallery ul li{width:41%;}
	.pic-main img{width:100%;}

	.pic-info h2{font-size:16px;}
	.pic-info >ul >li,.pic-info p{width:100%;margin:0;font-size:12px;}
	.wall-column{width:50%;}
	.wall-li p,.wall-li small{font-size:12px;padding:0;}
	.wall{margin-left:-1%;margin-right:-1%;}
	.sucailist>ul> .wall-column{width:48%;}
	.sucai-right h4{font-size:13px;}
	.sucai-right p{font-size:12px;}
	
}

@media screen and (min-width:769px){.pc-hidden{display:none;}

@media screen and (min-width:1024px) and (max-width:1199px) {
	.blog_hd ul li {
		width: 22%;
	}
}
}












================================================
FILE: src/static/css/flexslider.css
================================================
/**
 * Swiper 3.3.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * 
 * http://www.idangero.us/swiper/
 * 
 * Copyright 2016, Vladimir Kharlampidi
 * The iDangero.us
 * http://www.idangero.us/
 * 
 * Licensed under MIT
 * 
 * Released on: February 7, 2016
 */
.swiper-container {
  margin: 0 auto;
  position: relative;
  overflow: hidden;
  /* Fix of Webkit flickering */
  z-index: 1;
        width: 100%;
        height: 100%;

}
.swiper-container-no-flexbox .swiper-slide {
  float: left;
}
.swiper-container-vertical > .swiper-wrapper {
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
}
.swiper-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
  z-index: 1;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-transition-property: -webkit-transform;
  -moz-transition-property: -moz-transform;
  -o-transition-property: -o-transform;
  -ms-transition-property: -ms-transform;
  transition-property: transform;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}
.swiper-container-android .swiper-slide,
.swiper-wrapper {
  -webkit-transform: translate3d(0px, 0, 0);
  -moz-transform: translate3d(0px, 0, 0);
  -o-transform: translate(0px, 0px);
  -ms-transform: translate3d(0px, 0, 0);
  transform: translate3d(0px, 0, 0);
}
.swiper-container-multirow > .swiper-wrapper {
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  -ms-flex-wrap: wrap;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}
.swiper-container-free-mode > .swiper-wrapper {
  -webkit-transition-timing-function: ease-out;
  -moz-transition-timing-function: ease-out;
  -ms-transition-timing-function: ease-out;
  -o-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
  margin: 0 auto;
}
.swiper-slide {
  -webkit-flex-shrink: 0;
  -ms-flex: 0 0 auto;
  flex-shrink: 0;
  width: 100%;
  height: 100%;
  position: relative;
}
.swiper-slide img{width:100%;height:100%;}
/* Auto Height */
.swiper-container-autoheight,
.swiper-container-autoheight .swiper-slide {
  height: auto;
}
.silde-title{position:absolute;padding:5px 0;width:100%;background: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2),rgba(0, 0, 0, 0.5));bottom:5px;left:0;right:0;margin:auto;color:#fff;font-size:12px;text-indent:15px;}
.swiper-container-autoheight .swiper-wrapper {
  -webkit-box-align: start;
  -ms-flex-align: start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
  -webkit-transition-property: -webkit-transform, height;
  -moz-transition-property: -moz-transform;
  -o-transition-property: -o-transform;
  -ms-transition-property: -ms-transform;
  transition-property: transform, height;
}
/* a11y */
.swiper-container .swiper-notification {
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  opacity: 0;
  z-index: -1000;
}
/* IE10 Windows Phone 8 Fixes */
.swiper-wp8-horizontal {
  -ms-touch-action: pan-y;
  touch-action: pan-y;
}
.swiper-wp8-vertical {
  -ms-touch-action: pan-x;
  touch-action: pan-x;
}
/* Arrows */
.swiper-button-prev,
.swiper-button-next {
  position: absolute;
  top: 50%;
  width: 27px;
  height: 44px;
  margin-top: -22px;
  z-index: 10;
  cursor: pointer;
  -moz-background-size: 27px 44px;
  -webkit-background-size: 27px 44px;
  background-size: 27px 44px;
  background-position: center;
  background-repeat: no-repeat;
  
}


.swiper-button-prev.swiper-button-disabled,
.swiper-button-next.swiper-button-disabled {
  opacity: 0.35;
  cursor: auto;
  pointer-events: none;
}
.swiper-button-prev,
.swiper-container-rtl .swiper-button-next {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
  left: -30px;
  right: auto;
  transition:all 0.5s;-webkit-transition:all 0.5s;
}
.swiper-container:hover .swiper-button-prev{left:10px;transition:all 0.5s;-webkit-transition:all 0.5s;}

.swiper-button-prev.swiper-button-black,
.swiper-container-rtl .swiper-button-next.swiper-button-black {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
.swiper-button-prev.swiper-button-white,
.swiper-container-rtl .swiper-button-next.swiper-button-white {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
.swiper-button-next,
.swiper-container-rtl .swiper-button-prev {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
  right: -30px;
  left: auto;
  z-index:10;
}
.swiper-container:hover .swiper-button-next{right:10px;transition:all 0.5s;-webkit-transition:all 0.5s;}

.swiper-button-next.swiper-button-black,
.swiper-container-rtl .swiper-button-prev.swiper-button-black {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
}
.swiper-button-next.swiper-button-white,
.swiper-container-rtl .swiper-button-prev.swiper-button-white {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
}
/* Pagination Styles */
.swiper-pagination {
  position: absolute;
  text-align: center;
  -webkit-transition: 300ms;
  -moz-transition: 300ms;
  -o-transition: 300ms;
  transition: 300ms;
  -webkit-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  z-index: 10;
}
.swiper-pagination.swiper-pagination-hidden {
  opacity: 0;
}
/* Common Styles */
.swiper-pagination-fraction,
.swiper-pagination-custom,
.swiper-container-horizontal > .swiper-pagination-bullets {
  bottom: 10px;
  right: 15px;
 color:#fff;
 font-size:12px;
 z-index:8;
}
/* Bullets */
.swiper-pagination-bullet {
  width: 8px;
  height: 8px;
  display: inline-block;
  border-radius: 100%;
  background: #000;
  opacity: 0.2;
}
button.swiper-pagination-bullet {
  border: none;
  margin: 0;
  padding: 0;
  box-shadow: none;
  -moz-appearance: none;
  -ms-appearance: none;
  -webkit-appearance: none;
  appearance: none;
}
.swiper-pagination-clickable .swiper-pagination-bullet {
  cursor: pointer;
}
.swiper-pagination-white .swiper-pagination-bullet {
  background: #fff;
}
.swiper-pagination-bullet-active {
  opacity: 1;
  background: #007aff;
}
.swiper-pagination-white .swiper-pagination-bullet-active {
  background: #fff;
}
.swiper-pagination-black .swiper-pagination-bullet-active {
  background: #000;
}
.swiper-container-vertical > .swiper-pagination-bullets {
  right: 10px;
  top: 50%;
  -webkit-transform: translate3d(0px, -50%, 0);
  -moz-transform: translate3d(0px, -50%, 0);
  -o-transform: translate(0px, -50%);
  -ms-transform: translate3d(0px, -50%, 0);
  transform: translate3d(0px, -50%, 0);
}
.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {
  margin: 5px 0;
  display: block;
}
.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {
  margin: 0 5px;
}
/* Progress */
.swiper-pagination-progress {
  background: rgba(0, 0, 0, 0.25);
  position: absolute;
}
.swiper-pagination-progress .swiper-pagination-progressbar {
  background: #007aff;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  -o-transform: scale(0);
  transform: scale(0);
  -webkit-transform-origin: left top;
  -moz-transform-origin: left top;
  -ms-transform-origin: left top;
  -o-transform-origin: left top;
  transform-origin: left top;
}
.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar {
  -webkit-transform-origin: right top;
  -moz-transform-origin: right top;
  -ms-transform-origin: right top;
  -o-transform-origin: right top;
  transform-origin: right top;
}
.swiper-container-horizontal > .swiper-pagination-progress {
  width: 100%;
  height: 4px;
  left: 0;
  top: 0;
}
.swiper-container-vertical > .swiper-pagination-progress {
  width: 4px;
  height: 100%;
  left: 0;
  top: 0;
}
.swiper-pagination-progress.swiper-pagination-white {
  background: rgba(255, 255, 255, 0.5);
}
.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar {
  background: #fff;
}
.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar {
  background: #000;
}
/* 3D Container */
.swiper-container-3d {
  -webkit-perspective: 1200px;
  -moz-perspective: 1200px;
  -o-perspective: 1200px;
  perspective: 1200px;
}
.swiper-container-3d .swiper-wrapper,
.swiper-container-3d .swiper-slide,
.swiper-container-3d .swiper-slide-shadow-left,
.swiper-container-3d .swiper-slide-shadow-right,
.swiper-container-3d .swiper-slide-shadow-top,
.swiper-container-3d .swiper-slide-shadow-bottom,
.swiper-container-3d .swiper-cube-shadow {
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  transform-style: preserve-3d;
}
.swiper-container-3d .swiper-slide-shadow-left,
.swiper-container-3d .swiper-slide-shadow-right,
.swiper-container-3d .swiper-slide-shadow-top,
.swiper-container-3d .swiper-slide-shadow-bottom {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 10;
}
.swiper-container-3d .swiper-slide-shadow-left {
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
  /* Safari 4+, Chrome */
  background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Chrome 10+, Safari 5.1+, iOS 5+ */
  background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 3.6-15 */
  background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Opera 11.10-12.00 */
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 16+, IE10, Opera 12.50+ */
}
.swiper-container-3d .swiper-slide-shadow-right {
  background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
  /* Safari 4+, Chrome */
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Chrome 10+, Safari 5.1+, iOS 5+ */
  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 3.6-15 */
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Opera 11.10-12.00 */
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 16+, IE10, Opera 12.50+ */
}
.swiper-container-3d .swiper-slide-shadow-top {
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
  /* Safari 4+, Chrome */
  background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Chrome 10+, Safari 5.1+, iOS 5+ */
  background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 3.6-15 */
  background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Opera 11.10-12.00 */
  background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 16+, IE10, Opera 12.50+ */
}
.swiper-container-3d .swiper-slide-shadow-bottom {
  background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
  /* Safari 4+, Chrome */
  background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Chrome 10+, Safari 5.1+, iOS 5+ */
  background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 3.6-15 */
  background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Opera 11.10-12.00 */
  background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  /* Firefox 16+, IE10, Opera 12.50+ */
}
/* Coverflow */
.swiper-container-coverflow .swiper-wrapper,
.swiper-container-flip .swiper-wrapper {
  /* Windows 8 IE 10 fix */
  -ms-perspective: 1200px;
}
/* Cube + Flip */
.swiper-container-cube,
.swiper-container-flip {
  overflow: visible;
}
.swiper-container-cube .swiper-slide,
.swiper-container-flip .swiper-slide {
  pointer-events: none;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  backface-visibility: hidden;
  z-index: 1;
}
.swiper-container-cube .swiper-slide .swiper-slide,
.swiper-container-flip .swiper-slide .swiper-slide {
  pointer-events: none;
}
.swiper-container-cube .swiper-slide-active,
.swiper-container-flip .swiper-slide-active,
.swiper-container-cube .swiper-slide-active .swiper-slide-active,
.swiper-container-flip .swiper-slide-active .swiper-slide-active {
  pointer-events: auto;
}
.swiper-container-cube .swiper-slide-shadow-top,
.swiper-container-flip .swiper-slide-shadow-top,
.swiper-container-cube .swiper-slide-shadow-bottom,
.swiper-container-flip .swiper-slide-shadow-bottom,
.swiper-container-cube .swiper-slide-shadow-left,
.swiper-container-flip .swiper-slide-shadow-left,
.swiper-container-cube .swiper-slide-shadow-right,
.swiper-container-flip .swiper-slide-shadow-right {
  z-index: 0;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  backface-visibility: hidden;
}
/* Cube */
.swiper-container-cube .swiper-slide {
  visibility: hidden;
  -webkit-transform-origin: 0 0;
  -moz-transform-origin: 0 0;
  -ms-transform-origin: 0 0;
  transform-origin: 0 0;
  width: 100%;
  height: 100%;
}
.swiper-container-cube.swiper-container-rtl .swiper-slide {
  -webkit-transform-origin: 100% 0;
  -moz-transform-origin: 100% 0;
  -ms-transform-origin: 100% 0;
  transform-origin: 100% 0;
}
.swiper-container-cube .swiper-slide-active,
.swiper-container-cube .swiper-slide-next,
.swiper-container-cube .swiper-slide-prev,
.swiper-container-cube .swiper-slide-next + .swiper-slide {
  pointer-events: auto;
  visibility: visible;
}
.swiper-container-cube .swiper-cube-shadow {
  position: absolute;
  left: 0;
  bottom: 0px;
  width: 100%;
  height: 100%;
  background: #000;
  opacity: 0.6;
  -webkit-filter: blur(50px);
  filter: blur(50px);
  z-index: 0;
}
/* Fade */
.swiper-container-fade.swiper-container-free-mode .swiper-slide {
  -webkit-transition-timing-function: ease-out;
  -moz-transition-timing-function: ease-out;
  -ms-transition-timing-function: ease-out;
  -o-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
}
.swiper-container-fade .swiper-slide {
  pointer-events: none;
  -webkit-transition-property: opacity;
  -moz-transition-property: opacity;
  -o-transition-property: opacity;
  transition-property: opacity;
}
.swiper-container-fade .swiper-slide .swiper-slide {
  pointer-events: none;
}
.swiper-container-fade .swiper-slide-active,
.swiper-container-fade .swiper-slide-active .swiper-slide-active {
  pointer-events: auto;
}
/* Scrollbar */
.swiper-scrollbar {
  border-radius: 10px;
  position: relative;
  -ms-touch-action: none;
  background: rgba(0, 0, 0, 0.1);
}
.swiper-container-horizontal > .swiper-scrollbar {
  position: absolute;
  left: 1%;
  bottom: 3px;
  z-index: 50;
  height: 5px;
  width: 98%;
}
.swiper-container-vertical > .swiper-scrollbar {
  position: absolute;
  right: 3px;
  top: 1%;
  z-index: 50;
  width: 5px;
  height: 98%;
}
.swiper-scrollbar-drag {
  height: 100%;
  width: 100%;
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 10px;
  left: 0;
  top: 0;
}
.swiper-scrollbar-cursor-drag {
  cursor: move;
}
/* Preloader */
.swiper-lazy-preloader {
  width: 42px;
  height: 42px;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -21px;
  margin-top: -21px;
  z-index: 10;
  -webkit-transform-origin: 50%;
  -moz-transform-origin: 50%;
  transform-origin: 50%;
  -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;
  -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite;
  animation: swiper-preloader-spin 1s steps(12, end) infinite;
}
.swiper-lazy-preloader:after {
  display: block;
  content: "";
  width: 100%;
  height: 100%;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  background-position: 50%;
  -webkit-background-size: 100%;
  background-size: 100%;
  background-repeat: no-repeat;
}
.swiper-lazy-preloader-white:after {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
@-webkit-keyframes swiper-preloader-spin {
  100% {
    -webkit-transform: rotate(360deg);
  }
}
@keyframes swiper-preloader-spin {
  100% {
    transform: rotate(360deg);
  }
}


================================================
FILE: src/static/css/font-icon.css
================================================
/*!
 *  Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework
 *  License - http://elusiveicons.com/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'Elusive-Icons';
  src: url('../font/elusiveicons-webfont.eot?v=2.0.0');
  src: url('../font/elusiveicons-webfont.eot?#iefix&v=2.0.0') format('embedded-opentype'), url('../font/elusiveicons-webfont.woff?v=2.0.0') format('woff'), url('../font/elusiveicons-webfont.ttf?v=2.0.0') format('truetype'), url('../font/elusiveicons-webfont.svg?v=2.0.0#elusiveiconsregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
i {
  display: inline-block;
  font: normal normal normal 14px/1 'Elusive-Icons';
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transform: translate(0, 0);
}
.el-comment{font-size:0.75em;}
/* makes the font 33% larger relative to the icon container */
.el-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.el-2x {
  font-size: 2em;
}
.el-3x {
  font-size: 3em;
}
.el-4x {
  font-size: 4em;
}
.el-5x {
  font-size: 5em;
}
.el-fw {
  width: 1.28571429em;
  text-align: center;
}
.el-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.el-ul > li {
  position: relative;
}
.el-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.el-li.el-lg {
  left: -1.85714286em;
}
.el-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eeeeee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.el.pull-left {
  margin-right: .3em;
}
.el.pull-right {
  margin-left: .3em;
}
.el-spin {
  -webkit-animation: el-spin 2s infinite linear;
  animation: el-spin 2s infinite linear;
}
.el-pulse {
  -webkit-animation: el-spin 1s infinite steps(8);
  animation: el-spin 1s infinite steps(8);
}
@-webkit-keyframes el-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes el-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.el-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.el-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.el-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.el-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.el-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .el-rotate-90,
:root .el-rotate-180,
:root .el-rotate-270,
:root .el-flip-horizontal,
:root .el-flip-vertical {
  filter: none;
}
.el-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.el-stack-1x,
.el-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.el-stack-1x {
  line-height: inherit;
}
.el-stack-2x {
  font-size: 2em;
}
.el-inverse {
  color: #ffffff;
}
/* Elusive Icons uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.el-address-book-alt:before {
  content: "\f101";
}
.el-address-book:before {
  content: "\f102";
}
.el-adjust-alt:before {
  content: "\f103";
}
.el-adjust:before {
  content: "\f104";
}
.el-adult:before {
  content: "\f105";
}
.el-align-center:before {
  content: "\f106";
}
.el-align-justify:before {
  content: "\f107";
}
.el-align-left:before {
  content: "\f108";
}
.el-align-right:before {
  content: "\f109";
}
.el-arrow-down:before {
  content: "\f10a";
}
.el-arrow-left:before {
  content: "\f10b";
}
.el-arrow-right:before {
  content: "\f10c";
}
.el-arrow-up:before {
  content: "\f10d";
}
.el-asl:before {
  content: "\f10e";
}
.el-asterisk:before {
  content: "\f10f";
}
.el-backward:before {
  content: "\f110";
}
.el-ban-circle:before {
  content: "\f111";
}
.el-barcode:before {
  content: "\f112";
}
.el-behance:before {
  content: "\f113";
}
.el-bell:before {
  content: "\f114";
}
.el-blind:before {
  content: "\f115";
}
.el-blogger:before {
  content: "\f116";
}
.el-bold:before {
  content: "\f117";
}
.el-book:before {
  content: "\f118";
}
.el-bookmark-empty:before {
  content: "\f119";
}
.el-bookmark:before {
  content: "\f11a";
}
.el-braille:before {
  content: "\f11b";
}
.el-briefcase:before {
  content: "\f11c";
}
.el-broom:before {
  content: "\f11d";
}
.el-brush:before {
  content: "\f11e";
}
.el-bulb:before {
  content: "\f11f";
}
.el-bullhorn:before {
  content: "\f120";
}
.el-calendar-sign:before {
  content: "\f121";
}
.el-calendar:before {
  content: "\f122";
}
.el-camera:before {
  content: "\f123";
}
.el-car:before {
  content: "\f124";
}
.el-caret-down:before {
  content: "\f125";
}
.el-caret-left:before {
  content: "\f126";
}
.el-caret-right:before {
  content: "\f127";
}
.el-caret-up:before {
  content: "\f128";
}
.el-cc:before {
  content: "\f129";
}
.el-certificate:before {
  content: "\f12a";
}
.el-check-empty:before {
  content: "\f12b";
}
.el-check:before {
  content: "\f12c";
}
.el-chevron-down:before {
  content: "\f12d";
}
.el-chevron-left:before {
  content: "\f12e";
}
.el-chevron-right:before {
  content: "\f12f";
}
.el-chevron-up:before {
  content: "\f130";
}
.el-child:before {
  content: "\f131";
}
.el-circle-arrow-down:before {
  content: "\f132";
}
.el-circle-arrow-left:before {
  content: "\f133";
}
.el-circle-arrow-right:before {
  content: "\f134";
}
.el-circle-arrow-up:before {
  content: "\f135";
}
.el-cloud-alt:before {
  content: "\f136";
}
.el-cloud:before {
  content: "\f137";
}
.el-cog-alt:before {
  content: "\f138";
}
.el-cog:before {
  content: "\f139";
}
.el-cogs:before {
  content: "\f13a";
}
.el-comment-alt:before {
  content: "\f13b";
}
.el-comment:before {
  content: "\f13c";
}
.el-compass-alt:before {
  content: "\f13d";
}
.el-compass:before {
  content: "\f13e";
}
.el-credit-card:before {
  content: "\f13f";
}
.el-css:before {
  content: "\f140";
}
.el-dashboard:before {
  content: "\f141";
}
.el-delicious:before {
  content: "\f142";
}
.el-deviantart:before {
  content: "\f143";
}
.el-digg:before {
  content: "\f144";
}
.el-download-alt:before {
  content: "\f145";
}
.el-download:before {
  content: "\f146";
}
.el-dribbble:before {
  content: "\f147";
}
.el-edit:before {
  content: "\f148";
}
.el-eject:before {
  content: "\f149";
}
.el-envelope-alt:before {
  content: "\f14a";
}
.el-envelope:before {
  content: "\f14b";
}
.el-error-alt:before {
  content: "\f14c";
}
.el-error:before {
  content: "\f14d";
}
.el-eur:before {
  content: "\f14e";
}
.el-exclamation-sign:before {
  content: "\f14f";
}
.el-eye-close:before {
  content: "\f150";
}
.el-eye-open:before {
  content: "\f151";
}
.el-facebook:before {
  content: "\f152";
}
.el-facetime-video:before {
  content: "\f153";
}
.el-fast-backward:before {
  content: "\f154";
}
.el-fast-forward:before {
  content: "\f155";
}
.el-female:before {
  content: "\f156";
}
.el-file-alt:before {
  content: "\f157";
}
.el-file-edit-alt:before {
  content: "\f158";
}
.el-file-edit:before {
  content: "\f159";
}
.el-file-new-alt:before {
  content: "\f15a";
}
.el-file-new:before {
  content: "\f15b";
}
.el-file:before {
  content: "\f15c";
}
.el-film:before {
  content: "\f15d";
}
.el-filter:before {
  content: "\f15e";
}
.el-fire:before {
  content: "\f15f";
}
.el-flag-alt:before {
  content: "\f160";
}
.el-flag:before {
  content: "\f161";
}
.el-flickr:before {
  content: "\f162";
}
.el-folder-close:before {
  content: "\f163";
}
.el-folder-open:before {
  content: "\f164";
}
.el-folder-sign:before {
  content: "\f165";
}
.el-folder:before {
  content: "\f166";
}
.el-font:before {
  content: "\f167";
}
.el-fontsize:before {
  content: "\f168";
}
.el-fork:before {
  content: "\f169";
}
.el-forward-alt:before {
  content: "\f16a";
}
.el-forward:before {
  content: "\f16b";
}
.el-foursquare:before {
  content: "\f16c";
}
.el-friendfeed-rect:before {
  content: "\f16d";
}
.el-friendfeed:before {
  content: "\f16e";
}
.el-fullscreen:before {
  content: "\f16f";
}
.el-gbp:before {
  content: "\f170";
}
.el-gift:before {
  content: "\f171";
}
.el-github-text:before {
  content: "\f172";
}
.el-github:before {
  content: "\f173";
}
.el-glass:before {
  content: "\f174";
}
.el-glasses:before {
  content: "\f175";
}
.el-globe-alt:before {
  content: "\f176";
}
.el-globe:before {
  content: "\f177";
}
.el-googleplus:before {
  content: "\f178";
}
.el-graph-alt:before {
  content: "\f179";
}
.el-graph:before {
  content: "\f17a";
}
.el-group-alt:before {
  content: "\f17b";
}
.el-group:before {
  content: "\f17c";
}
.el-guidedog:before {
  content: "\f17d";
}
.el-hand-down:before {
  content: "\f17e";
}
.el-hand-left:before {
  content: "\f17f";
}
.el-hand-right:before {
  content: "\f180";
}
.el-hand-up:before {
  content: "\f181";
}
.el-hdd:before {
  content: "\f182";
}
.el-headphones:before {
  content: "\f183";
}
.el-hearing-impaired:before {
  content: "\f184";
}
.el-heart-alt:before {
  content: "\f185";
}
.el-heart-empty:before {
  content: "\f186";
}
.el-heart:before {
  content: "\f187";
}
.el-home-alt:before {
  content: "\f188";
}
.el-home:before {
  content: "\f189";
}
.el-hourglass:before {
  content: "\f18a";
}
.el-idea-alt:before {
  content: "\f18b";
}
.el-idea:before {
  content: "\f18c";
}
.el-inbox-alt:before {
  content: "\f18d";
}
.el-inbox-box:before {
  content: "\f18e";
}
.el-inbox:before {
  content: "\f18f";
}
.el-indent-left:before {
  content: "\f190";
}
.el-indent-right:before {
  content: "\f191";
}
.el-info-circle:before {
  content: "\f192";
}
.el-instagram:before {
  content: "\f193";
}
.el-iphone-home:before {
  content: "\f194";
}
.el-italic:before {
  content: "\f195";
}
.el-key:before {
  content: "\f196";
}
.el-laptop-alt:before {
  content: "\f197";
}
.el-laptop:before {
  content: "\f198";
}
.el-lastfm:before {
  content: "\f199";
}
.el-leaf:before {
  content: "\f19a";
}
.el-lines:before {
  content: "\f19b";
}
.el-link:before {
  content: "\f19c";
}
.el-linkedin:before {
  content: "\f19d";
}
.el-list-alt:before {
  content: "\f19e";
}
.el-list:before {
  content: "\f19f";
}
.el-livejournal:before {
  content: "\f1a0";
}
.el-lock-alt:before {
  content: "\f1a1";
}
.el-lock:before {
  content: "\f1a2";
}
.el-magic:before {
  content: "\f1a3";
}
.el-magnet:before {
  content: "\f1a4";
}
.el-male:before {
  content: "\f1a5";
}
.el-map-marker-alt:before {
  content: "\f1a6";
}
.el-map-marker:before {
  content: "\f1a7";
}
.el-mic-alt:before {
  content: "\f1a8";
}
.el-mic:before {
  content: "\f1a9";
}
.el-minus-sign:before {
  content: "\f1aa";
}
.el-minus:before {
  content: "\f1ab";
}
.el-move:before {
  content: "\f1ac";
}
.el-music:before {
  content: "\f1ad";
}
.el-myspace:before {
  content: "\f1ae";
}
.el-network:before {
  content: "\f1af";
}
.el-off:before {
  content: "\f1b0";
}
.el-ok-circle:before {
  content: "\f1b1";
}
.el-ok-sign:before {
  content: "\f1b2";
}
.el-ok:before {
  content: "\f1b3";
}
.el-opensource:before {
  content: "\f1b4";
}
.el-paper-clip-alt:before {
  content: "\f1b5";
}
.el-paper-clip:before {
  content: "\f1b6";
}
.el-path:before {
  content: "\f1b7";
}
.el-pause-alt:before {
  content: "\f1b8";
}
.el-pause:before {
  content: "\f1b9";
}
.el-pencil-alt:before {
  content: "\f1ba";
}
.el-pencil:before {
  content: "\f1bb";
}
.el-person:before {
  content: "\f1bc";
}
.el-phone-alt:before {
  content: "\f1bd";
}
.el-phone:before {
  content: "\f1be";
}
.el-photo-alt:before {
  content: "\f1bf";
}
.el-photo:before {
  content: "\f1c0";
}
.el-picasa:before {
  content: "\f1c1";
}
.el-picture:before {
  content: "\f1c2";
}
.el-pinterest:before {
  content: "\f1c3";
}
.el-plane:before {
  content: "\f1c4";
}
.el-play-alt:before {
  content: "\f1c5";
}
.el-play-circle:before {
  content: "\f1c6";
}
.el-play:before {
  content: "\f1c7";
}
.el-plurk-alt:before {
  content: "\f1c8";
}
.el-plurk:before {
  content: "\f1c9";
}
.el-plus-sign:before {
  content: "\f1ca";
}
.el-plus:before {
  content: "\f1cb";
}
.el-podcast:before {
  content: "\f1cc";
}
.el-print:before {
  content: "\f1cd";
}
.el-puzzle:before {
  content: "\f1ce";
}
.el-qrcode:before {
  content: "\f1cf";
}
.el-question-sign:before {
  content: "\f1d0";
}
.el-question:before {
  content: "\f1d1";
}
.el-quote-alt:before {
  content: "\f1d2";
}
.el-quote-right-alt:before {
  content: "\f1d3";
}
.el-quote-right:before {
  content: "\f1d4";
}
.el-quotes:before {
  content: "\f1d5";
}
.el-random:before {
  content: "\f1d6";
}
.el-record:before {
  content: "\f1d7";
}
.el-reddit:before {
  content: "\f1d8";
}
.el-redux:before {
  content: "\f1d9";
}
.el-refresh:before {
  content: "\f1da";
}
.el-remove-circle:before {
  content: "\f1db";
}
.el-remove-sign:before {
  content: "\f1dc";
}
.el-remove:before {
  content: "\f1dd";
}
.el-repeat-alt:before {
  content: "\f1de";
}
.el-repeat:before {
  content: "\f1df";
}
.el-resize-full:before {
  content: "\f1e0";
}
.el-resize-horizontal:before {
  content: "\f1e1";
}
.el-resize-small:before {
  content: "\f1e2";
}
.el-resize-vertical:before {
  content: "\f1e3";
}
.el-return-key:before {
  content: "\f1e4";
}
.el-retweet:before {
  content: "\f1e5";
}
.el-reverse-alt:before {
  content: "\f1e6";
}
.el-road:before {
  content: "\f1e7";
}
.el-rss:before {
  content: "\f1e8";
}
.el-scissors:before {
  content: "\f1e9";
}
.el-screen-alt:before {
  content: "\f1ea";
}
.el-screen:before {
  content: "\f1eb";
}
.el-screenshot:before {
  content: "\f1ec";
}
.el-search-alt:before {
  content: "\f1ed";
}
.el-search:before {
  content: "\f1ee";
}
.el-share-alt:before {
  content: "\f1ef";
}
.el-share:before {
  content: "\f1f0";
}
.el-shopping-cart-sign:before {
  content: "\f1f1";
}
.el-shopping-cart:before {
  content: "\f1f2";
}
.el-signal:before {
  content: "\f1f3";
}
.el-skype:before {
  content: "\f1f4";
}
.el-slideshare:before {
  content: "\f1f5";
}
.el-smiley-alt:before {
  content: "\f1f6";
}
.el-smiley:before {
  content: "\f1f7";
}
.el-soundcloud:before {
  content: "\f1f8";
}
.el-speaker:before {
  content: "\f1f9";
}
.el-spotify:before {
  content: "\f1fa";
}
.el-stackoverflow:before {
  content: "\f1fb";
}
.el-star-alt:before {
  content: "\f1fc";
}
.el-star-empty:before {
  content: "\f1fd";
}
.el-star:before {
  content: "\f1fe";
}
.el-step-backward:before {
  content: "\f1ff";
}
.el-step-forward:before {
  content: "\f200";
}
.el-stop-alt:before {
  content: "\f201";
}
.el-stop:before {
  content: "\f202";
}
.el-stumbleupon:before {
  content: "\f203";
}
.el-tag:before {
  content: "\f204";
}
.el-tags:before {
  content: "\f205";
}
.el-tasks:before {
  content: "\f206";
}
.el-text-height:before {
  content: "\f207";
}
.el-text-width:before {
  content: "\f208";
}
.el-th-large:before {
  content: "\f209";
}
.el-th-list:before {
  content: "\f20a";
}
.el-th:before {
  content: "\f20b";
}
.el-thumbs-down:before {
  content: "\f20c";
}
.el-thumbs-up:before {
  content: "\f20d";
}
.el-time-alt:before {
  content: "\f20e";
}
.el-time:before {
  content: "\f20f";
}
.el-tint:before {
  content: "\f210";
}
.el-torso:before {
  content: "\f211";
}
.el-trash-alt:before {
  content: "\f212";
}
.el-trash:before {
  content: "\f213";
}
.el-tumblr:before {
  content: "\f214";
}
.el-twitter:before {
  content: "\f215";
}
.el-universal-access:before {
  content: "\f216";
}
.el-unlock-alt:before {
  content: "\f217";
}
.el-unlock:before {
  content: "\f218";
}
.el-upload:before {
  content: "\f219";
}
.el-usd:before {
  content: "\f21a";
}
.el-user:before {
  content: "\f21b";
}
.el-viadeo:before {
  content: "\f21c";
}
.el-video-alt:before {
  content: "\f21d";
}
.el-video-chat:before {
  content: "\f21e";
}
.el-video:before {
  content: "\f21f";
}
.el-view-mode:before {
  content: "\f220";
}
.el-vimeo:before {
  content: "\f221";
}
.el-vkontakte:before {
  content: "\f222";
}
.el-volume-down:before {
  content: "\f223";
}
.el-volume-off:before {
  content: "\f224";
}
.el-volume-up:before {
  content: "\f225";
}
.el-w3c:before {
  content: "\f226";
}
.el-warning-sign:before {
  content: "\f227";
}
.el-website-alt:before {
  content: "\f228";
}
.el-website:before {
  content: "\f229";
}
.el-wheelchair:before {
  content: "\f22a";
}
.el-wordpress:before {
  content: "\f22b";
}
.el-wrench-alt:before {
  content: "\f22c";
}
.el-wrench:before {
  content: "\f22d";
}
.el-youtube:before {
  content: "\f22e";
}
.el-zoom-in:before {
  content: "\f22f";
}
.el-zoom-out:before {
  content: "\f230";
}


================================================
FILE: src/static/css/lightbox.css
================================================
/*!
 * baguetteBox.js
 * @author  feimosi
 * @version 0.7.0
 * @url https://github.com/feimosi/baguetteBox.js
 */

#baguetteBox-overlay {
	display: none;
	opacity: 0;
	position: fixed;
	overflow: hidden;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1000000;
	background-color: #222;
	background-color: rgba(0, 0, 0, 0.8);
	-webkit-transition: opacity 0.5s ease;
	        transition: opacity 0.5s ease;
}

#baguetteBox-overlay.visible {
	opacity: 1;
}

#baguetteBox-overlay .full-image {
	display: inline-block;
	position: relative;
	width: 100%;
	height: 100%;
	text-align: center;
}

#baguetteBox-overlay .full-image figure {
	display: inline;
	margin: 0;
	height: 100%;
}

#baguetteBox-overlay .full-image img {
	display: inline-block;
	width: auto;
	height: auto;
	max-height: 100%;
	max-width: 100%;
	vertical-align: middle;
	-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
	   -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
	        box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
}

#baguetteBox-overlay .full-image figcaption {
	display: block;
	position: absolute;
	bottom: 0;
	width: 100%;
	text-align: center;
	line-height: 1.8;
	color: #ccc;
	background-color: #000;
	background-color: rgba(0, 0, 0, 0.6);
	font-family: sans-serif;
}

#baguetteBox-overlay .full-image:before {
	content: "";
	display: inline-block;
	height: 50%;
	width: 1px;
	margin-right: -1px;
}

#baguetteBox-slider {
	position: absolute;
	left: 0;
	top: 0;
	height: 100%;
	width: 100%;
	white-space: nowrap;
	-webkit-transition: left 0.4s ease, -webkit-transform 0.4s ease;
	        transition: left 0.4s ease, -moz-transform 0.4s ease;
	        transition: left 0.4s ease, transform 0.4s ease;
}

#baguetteBox-slider.bounce-from-right {
	-webkit-animation: bounceFromRight 0.4s ease-out;
	        animation: bounceFromRight 0.4s ease-out;
}

#baguetteBox-slider.bounce-from-left {
	-webkit-animation: bounceFromLeft 0.4s ease-out;
	        animation: bounceFromLeft 0.4s ease-out;
}

.baguetteBox-button#next-button,
.baguetteBox-button#previous-button {
	top: 50%;
	top: calc(50% - 30px);
	width: 44px;
	height: 60px;
}

.baguetteBox-button {
	position: absolute;
	cursor: pointer;
	outline: none;
	padding: 0;
	margin: 0;
	border: 0;
	-moz-border-radius: 15%;
	     border-radius: 15%;
	background-color: #323232;
	background-color: rgba(50, 50, 50, 0.5);
	color: #ddd;
	font: 1.6em sans-serif;
	-webkit-transition: background-color 0.4s ease;
	        transition: background-color 0.4s ease;
}

.baguetteBox-button:hover {
	background-color: rgba(50, 50, 50, 0.9);
}

.baguetteBox-button#next-button {
	right: 2%;
}

.baguetteBox-button#previous-button {
	left: 2%;
}

.baguetteBox-button#close-button {
	top: 20px;
	right: 2%;
	right: calc(2% + 6px);
	width: 30px;
	height: 30px;
}

/*
    Preloader
    Borrowed from http://tobiasahlin.com/spinkit/
*/

.spinner {
	width: 40px;
	height: 40px;
	display: inline-block;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -20px;
	margin-left: -20px;
}

.double-bounce1,
.double-bounce2 {
	width: 100%;
	height: 100%;
	-moz-border-radius: 50%;
	     border-radius: 50%;
	background-color: #fff;
	opacity: 0.6;
	position: absolute;
	top: 0;
	left: 0;
	-webkit-animation: bounce 2s infinite ease-in-out;
	        animation: bounce 2s infinite ease-in-out;
}

.double-bounce2 {
	-webkit-animation-delay: -1s;
	        animation-delay: -1s;
}

@-webkit-keyframes bounceFromRight {

0% {
	margin-left: 0;
}

50% {
	margin-left: -30px;
}

100% {
	margin-left: 0;
}

}

@keyframes bounceFromRight {

0% {
	margin-left: 0;
}

50% {
	margin-left: -30px;
}

100% {
	margin-left: 0;
}

}

@-webkit-keyframes bounceFromLeft {

0% {
	margin-left: 0;
}

50% {
	margin-left: 30px;
}

100% {
	margin-left: 0;
}

}

@keyframes bounceFromLeft {

0% {
	margin-left: 0;
}

50% {
	margin-left: 30px;
}

100% {
	margin-left: 0;
}

}

@-webkit-keyframes bounce {

0%,100% {
	-webkit-transform: scale(0);
	        transform: scale(0);
}

50% {
	-webkit-transform: scale(1);
	        transform: scale(1);
}

}

@keyframes bounce {

0%,100% {
	-webkit-transform: scale(0);
	   -moz-transform: scale(0);
	        transform: scale(0);
}

50% {
	-webkit-transform: scale(1);
	   -moz-transform: scale(1);
	        transform: scale(1);
}

}


================================================
FILE: src/static/css/login.css
================================================


/* Reset CSS */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}
body {
		background:url(../images/bg/images/blueprint.png)repeat;
	color: #000;
	font: 14px Arial;
	margin: 0 auto;
	padding: 0;
	position: relative;
	
}
h1{ font-size:28px;}
h2{ font-size:26px;}
h3{ font-size:18px;}
h4{ font-size:16px;}
h5{ font-size:14px;}
h6{ font-size:12px;}
h1,h2,h3,h4,h5,h6{ color:#563D64;}
small{ font-size:10px;}
b, strong{ font-weight:bold;}
a{ text-decoration: none; }
a:hover{ text-decoration: underline; }
.left { float:left; }
.right { float:right; }
.alignleft { float: left; margin-right: 15px; }
.alignright { float: right; margin-left: 15px; }
.clearfix:after,
form:after {
	content: ".";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}
.container { margin: 8% auto; position: relative; width:100%;max-width:450px; }

#content {
	background: rgba(255,255,255,1) ;
	
	border:1px solid #ccc;
	box-shadow: 0 0 20px #ccc;
	margin: 0 auto;
	padding: 25px 0 0;
	position: relative;
	text-align: center;
	
	width:100%;max-width:680px;
}
#content h1 {
	color: #333;font-family:'Microsoft Yahei';
	font: bold 25px;
	
	line-height: 20px;
	margin: 10px 0 10px;
}

#content h5{padding:1em 0;color:red;}
#content form { margin: 0 20px; position: relative }
#content form input[type="text"],
#content form input[type="password"] {
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	-ms-border-radius: 3px;
	-o-border-radius: 3px;
	border-radius: 3px;
	
	-webkit-transition: all 0.5s ease;
	-moz-transition: all 0.5s ease;
	-ms-transition: all 0.5s ease;
	-o-transition: all 0.5s ease;
	transition: all 0.5s ease;
	background:rgba(255,255,255,0.6); url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) no-repeat;
	border: 1px solid rgba(109,204,41,0.8);
	color: #777;
	font: 13px Helvetica, Arial, sans-serif;
	margin: 0 0 10px;
	padding: 15px 10px 15px 40px;
	width: 80%;
}
#content form input[type="text"]:focus,
#content form input[type="password"]:focus {
	-webkit-box-shadow: 0 0 2px #ed1c24 inset;
	-moz-box-shadow: 0 0 2px #ed1c24 inset;
	-ms-box-shadow: 0 0 2px #ed1c24 inset;
	-o-box-shadow: 0 0 2px #ed1c24 inset;
	box-shadow: 0 0 2px #ed1c24 inset;
	background-color: #fff;
	border: 1px solid #ed1c24;
	outline: none;
}
#username { background-position: 10px 10px !important }
#password { background-position: 10px -53px !important }
#content form input[type="submit"] {
	background: rgb(254,231,154);
	
	border: 1px solid #D69E31;
	color: #85592e;
	cursor: pointer;
	
	font: bold 16px  Microsoft Yahei;
	height: 45px;
	margin:20px auto;
	
	border-radius:5px;-webkit-border-radius:5px;
	position: relative;
	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
	width: 200px;
}
#content form input[type="submit"]:hover {
	background: rgb(254,193,81);
	background: -moz-linear-gradient(top,  rgba(254,193,81,1) 0%, rgba(254,231,154,1) 100%);
	background: -webkit-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
	background: -o-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
	background: -ms-linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
	background: linear-gradient(top,  rgba(254,193,81,1) 0%,rgba(254,231,154,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fec151', endColorstr='#fee79a',GradientType=0 );
}
#content form div a {
	color: #004a80;
    float: left;
    font-size: 12px;
	margin: 20px 0 0px 15px;
   
    text-decoration: underline;
}
.button {
	background: rgb(247,249,250);
	background: -moz-linear-gradient(top,  rgba(247,249,250,1) 0%, rgba(240,240,240,1) 100%);
	background: -webkit-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
	background: -o-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
	background: -ms-linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
	background: linear-gradient(top,  rgba(247,249,250,1) 0%,rgba(240,240,240,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0',GradientType=0 );
	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
	-ms-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
	-o-box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
	box-shadow: 0 1px 2px rgba(0,0,0,0.1) inset;
	-webkit-border-radius: 0 0 5px 5px;
	-moz-border-radius: 0 0 5px 5px;
	-o-border-radius: 0 0 5px 5px;
	-ms-border-radius: 0 0 5px 5px;
	border-radius: 0 0 5px 5px;
	border-top: 1px solid #CFD5D9;
	padding: 15px 0;
}
.button a {
	background: url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat;
	color: #7E7E7E;
	font-size: 17px;
	padding: 2px 0 2px 40px;
	text-decoration: none;
	-webkit-transition: all 0.3s ease;
	-moz-transition: all 0.3s ease;
	-ms-transition: all 0.3s ease;
	-o-transition: all 0.3s ease;
	transition: all 0.3s ease;
}
.button a:hover {
	background-position: 0 -135px;
	color: #00aeef;
}

================================================
FILE: src/static/css/markdown.css
================================================
@font-face {
    font-family: octicons-link;
    src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
}

.markdown-body {
    line-height: 2;
    font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif;
    font-size: 14px;
    word-wrap: break-word;
    color: #555;
    background: #f5f7f9;
}

.markdown-body .pl-c {
    color: #969896;
}

.markdown-body .pl-c1, .markdown-body .pl-s .pl-v {
    color: #0086b3;
}

.markdown-body .pl-e, .markdown-body .pl-en {
    color: #795da3;
}

.markdown-body .pl-smi, .markdown-body .pl-s .pl-s1 {
    color: #333;
}

.markdown-body .pl-ent {
    color: #63a35c;
}

.markdown-body .pl-k {
    color: #a71d5d;
}

.markdown-body .pl-s, .markdown-body .pl-pds, .markdown-body .pl-s .pl-pse .pl-s1, .markdown-body .pl-sr, .markdown-body .pl-sr .pl-cce, .markdown-body .pl-sr .pl-sre, .markdown-body .pl-sr .pl-sra {
    color: #183691;
}

.markdown-body .pl-v {
    color: #ed6a43;
}

.markdown-body .pl-id {
    color: #b52a1d;
}

.markdown-body .pl-ii {
    color: #f8f8f8;
    background-color: #b52a1d;
}

.markdown-body .pl-sr .pl-cce {
    font-weight: bold;
    color: #63a35c;
}

.markdown-body .pl-ml {
    color: #693a17;
}

.markdown-body .pl-mh, .markdown-body .pl-mh .pl-en, .markdown-body .pl-ms {
    font-weight: bold;
    color: #1d3e81;
}

.markdown-body .pl-mq {
    color: #008080;
}

.markdown-body .pl-mi {
    font-style: italic;
    color: #333;
}

.markdown-body .pl-mb {
    font-weight: bold;
    color: #333;
}

.markdown-body .pl-md {
    color: #bd2c00;
    background-color: #ffecec;
}

.markdown-body .pl-mi1 {
    color: #55a532;
    background-color: #eaffea;
}

.markdown-body .pl-mdr {
    font-weight: bold;
    color: #795da3;
}

.markdown-body .pl-mo {
    color: #1d3e81;
}

.markdown-body .octicon {
    display: inline-block;
    vertical-align: text-top;
    fill: currentColor;
}

.markdown-body a {
    background-color: transparent;
    -webkit-text-decoration-skip: objects;
}

.markdown-body a:active, .markdown-body a:hover {
    outline-width: 0;
}

.markdown-body strong {
    font-weight: inherit;
}

.markdown-body strong {
    font-weight: bolder;
}

.markdown-body h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

.markdown-body img {
    border-style: none;
}

.markdown-body svg:not(:root) {
    overflow: hidden;
}

.markdown-body code, .markdown-body kbd, .markdown-body pre {
    font-family: monospace, monospace;
    font-size: 1em;
}

.markdown-body hr {
    box-sizing: content-box;
    height: 0;
    overflow: visible;
}

.markdown-body input {
    font: inherit;
    margin: 0;
}

.markdown-body input {
    overflow: visible;
}

.markdown-body [type="checkbox"] {
    box-sizing: border-box;
    padding: 0;
}

.markdown-body * {
    box-sizing: border-box;
}

.markdown-body input {
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
}

.markdown-body a {
    color: #4078c0;
    text-decoration: none;
}

.markdown-body a:hover, .markdown-body a:active {
    text-decoration: underline;
}

.markdown-body strong {
    font-weight: 600;
}

.markdown-body hr {
    height: 0;
    margin: 15px 0;
    overflow: hidden;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #ddd;
}

.markdown-body hr::before {
    display: table;
    content: "";
}

.markdown-body hr::after {
    display: table;
    clear: both;
    content: "";
}

.markdown-body table {
    border-spacing: 0;
    border-collapse: collapse;
}

.markdown-body td, .markdown-body th {
    padding: 0;
}

.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {
    margin-top: 0;
    margin-bottom: 0;
    padding-bottom: 0.3em;
    border-bottom: 1px solid #eee;
    text-indent: 20px;
    font-family: monospace;
}

.markdown-body h1 {
    font-size: 32px;
    font-weight: 600;
}

.markdown-body h2 {
    font-size: 24px;
    font-weight: 600;
}

.markdown-body h3 {
    font-size: 17px;
    font-weight: 500;
    text-align: left;
}

.markdown-body h4 {
    font-size: 16px;
    font-weight: 600;
}

.markdown-body h5 {
    font-size: 14px;
    font-weight: 600;
}

.markdown-body h6 {
    font-size: 12px;
    font-weight: 600;
}

.markdown-body blockquote {
    margin: 0;
}

.markdown-body ul, .markdown-body ol {
    padding-left: 0;
    margin-top: 0;
    margin-bottom: 0;
}

.markdown-body ol ol, .markdown-body ul ol {
    list-style-type: lower-roman;
}

.markdown-body ul ul ol, .markdown-body ul ol ol, .markdown-body ol ul ol, .markdown-body ol ol ol {
    list-style-type: lower-alpha;
}

.markdown-body dd {
    margin-left: 0;
}

.markdown-body pre {
    margin-top: 0;
    margin-bottom: 0;
    font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}

.markdown-body .octicon {
    vertical-align: text-bottom;
}

.markdown-body input {
    -webkit-font-feature-settings: "liga" 0;
    font-feature-settings: "liga" 0;
}

.markdown-body::before {
    display: table;
    content: "";
}

.markdown-body::after {
    display: table;
    clear: both;
    content: "";
}

.markdown-body > *:first-child {
    margin-top: 0 !important;
}

.markdown-body > *:last-child {
    margin-bottom: 0 !important;
}

.markdown-body a:not([href]) {
    color: inherit;
    text-decoration: none;
}

.markdown-body .anchor {
    float: left;
    padding-right: 4px;
    margin-left: -20px;
    line-height: 1;
}

.markdown-body .anchor:focus {
    outline: none;
}

.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre {
    margin-top: 0;
    margin-bottom: 16px;
    margin-left: 2rem;
}

.markdown-body hr {
    height: 0.25em;
    padding: 0;
    margin: 24px 0;
    background-color: #e7e7e7;
    border: 0;
}

.markdown-body blockquote {
    padding: 0 1em;
    color: #777;
    border-left: 0.25em;
}

.markdown-body blockquote > :first-child {
    margin-top: 0;
}

.markdown-body blockquote > :last-child {
    margin-bottom: 0;
}

.markdown-body kbd {
    display: inline-block;
    padding: 3px 5px;
    font-size: 11px;
    line-height: 10px;
    color: #555;
    vertical-align: middle;
    background-color: #fcfcfc;
    border: solid 1px #ccc;
    border-bottom-color: #bbb;
    border-radius: 3px;
    box-shadow: inset 0 -1px 0 #bbb;
}

.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {
    margin-top: 24px;
    margin-bottom: 16px;
    font-weight: 600;
    line-height: 1.25;
}

.markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link {
    color: #000;
    vertical-align: middle;
    visibility: hidden;
}

.markdown-body h1:hover .anchor, .markdown-body h2:hover .anchor, .markdown-body h3:hover .anchor, .markdown-body h4:hover .anchor, .markdown-body h5:hover .anchor, .markdown-body h6:hover .anchor {
    text-decoration: none;
}

.markdown-body h1:hover .anchor .octicon-link, .markdown-body h2:hover .anchor .octicon-link, .markdown-body h3:hover .anchor .octicon-link, .markdown-body h4:hover .anchor .octicon-link, .markdown-body h5:hover .anchor .octicon-link, .markdown-body h6:hover .anchor .octicon-link {
    visibility: visible;
}

.markdown-body h1 {
    padding-bottom: 0.3em;
    font-size: 2em;
    border-bottom: 1px solid #eee;
}

.markdown-body h2 {
    padding-bottom: 0.3em;
    font-size: 1.5em;
    border-bottom: 1px solid #eee;
}

.markdown-body h3 {
    font-size: 1.25em;
}

.markdown-body h4 {
    font-size: 1em;
}

.markdown-body h5 {
    font-size: 0.875em;
}

.markdown-body h6 {
    font-size: 0.85em;
    color: #777;
}

.markdown-body ul, .markdown-body ol {
    margin-left: 60px;
    list-style-type: circle;
}

.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul {
    margin-top: 0;
    margin-bottom: 0;
}

.markdown-body li > p {
    margin-top: 16px;
}

.markdown-body li + li {
    margin-top: 0.25em;
}

.markdown-body dl {
    padding: 0;
}

.markdown-body dl dt {
    padding: 0;
    margin-top: 16px;
    font-size: 1em;
    font-style: italic;
    font-weight: bold;
}

.markdown-body dl dd {
    padding: 0 16px;
    margin-bottom: 16px;
}

.markdown-body table {
    display: block;
    width: 100%;
    overflow: auto;
}

.markdown-body table th {
    font-weight: bold;
}

.markdown-body table th, .markdown-body table td {
    padding: 6px 13px;
    border: 1px solid #ddd;
}

.markdown-body table tr {
    background-color: #fff;
    border-top: 1px solid #ccc;
}

.markdown-body table tr:nth-child(2n) {
    background-color: #f8f8f8;
}

.markdown-body img {
    max-width: 100%;
    box-sizing: content-box;
    background-color: #fff;
}

.markdown-body code {
    padding: 0;
    padding-top: 0.2em;
    padding-bottom: 0.2em;
    margin: auto 3px;
    font-size: 85%;
    background-color: moccasin;
    border-radius: 3px;
    font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
    color: #c7254e;
}

.markdown-body pre {
    word-wrap: normal;
}

.markdown-body pre > code {
    padding: 0;
    margin: 0;
    font-size: 100%;
    word-break: normal;
    white-space: pre;
    background: transparent;
    border: 0;
}

.markdown-body .highlight {
    margin-bottom: 16px;
}

.markdown-body .highlight pre {
    margin-bottom: 0;
    word-break: normal;
}

.markdown-body .highlight pre, .markdown-body pre {
    padding: 16px;
    overflow: auto;
    font-size: 85%;
    line-height: 1.45; /*background-color: #f7f7f7;*/
    border-radius: 3px;
    border: 1px solid #bbbbbb;
}

.markdown-body pre code {
    display: inline;
    max-width: auto;
    padding: 0;
    margin: 0;
    overflow: visible;
    line-height: inherit;
    word-wrap: normal;
    background-color: transparent;
    border: 0;
}

.markdown-body pre code::before, .markdown-body pre code::after {
    content: normal;
}

.markdown-body .pl-0 {
    padding-left: 0 !important;
}

.markdown-body .pl-1 {
    padding-left: 3px !important;
}

.markdown-body .pl-2 {
    padding-left: 6px !important;
}

.markdown-body .pl-3 {
    padding-left: 12px !important;
}

.markdown-body .pl-4 {
    padding-left: 24px !important;
}

.markdown-body .pl-5 {
    padding-left: 36px !important;
}

.markdown-body .pl-6 {
    padding-left: 48px !important;
}

.markdown-body .full-commit .btn-outline:not(:disabled):hover {
    color: #4078c0;
    border: 1px solid #4078c0;
}

.markdown-body kbd {
    display: inline-block;
    padding: 3px 5px;
    font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
    line-height: 10px;
    color: #555;
    vertical-align: middle;
    background-color: #fcfcfc;
    border: solid 1px #ccc;
    border-bottom-color: #bbb;
    border-radius: 3px;
    box-shadow: inset 0 -1px 0 #bbb;
}

.markdown-body :checked + .radio-label {
    position: relative;
    z-index: 1;
    border-color: #4078c0;
}

.markdown-body .task-list-item {
    list-style-type: none;
}

.markdown-body .task-list-item + .task-list-item {
    margin-top: 3px;
}

.markdown-body .task-list-item input {
    margin: 0 0.2em 0.25em -1.6em;
    vertical-align: middle;
}

.markdown-body hr {
    border-bottom-color: #eee;
}

.codehilite .k {
    color: #0000FF
}

.codehilite .kn {
    color: #0000FF
}

.codehilite .nf {
    color: #795da3
}

.codehilite .bp {
    color: #FF0000
}

.codehilite .nd {
    color: #F0A0A0
}

.codehilite .nc {
    color: #795da3
}

.codehilite .sd, .s {
    color: #183691;
}

.codehilite .c {
    color: #969896;
    font-style: italic;
}

================================================
FILE: src/static/css/public.css
================================================
body{font-size:14px;font-size:100%;font-family:'Microsoft YaHei';line-height:24px;margin:0;padding:0;min-width:320px;display:none;}
a{color:inherit;text-decoration:none;}
img{border:none;}
ul,dl,dt,dd,p{padding:0;margin:0;list-style:none;}
h1,h2,h3,h4,h5{padding:10px 0;margin:0;text-indent:5px;margin-bottom:15px;}
input,button,select{outline:none!important}

body{
	background:#e9ecd7 url(../images/bgimg/bg0.jpg);
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-size: 100% 100%;

}

body:after {
    content: '';
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: rgba(255,255,255,0.5);
	z-index: -1;
}



i{
	color:#ff6700;
	margin-right:5px;

}


input,textarea{padding:0;margin:0;border:#ddd 1px solid;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,0.05);font-family:'Microsoft YaHei';text-indent:10px;background:rgba(255,255,255,0.5);transition:all 0.5s;-webkit-transition:all 0.5s;}
input:focus,textarea:focus{ outline:none;border:#ff6700 1px solid;box-shadow: 0 0 8px rgba(255, 103, 0,0.7);}
.nobg{background-image:none!important;background-color:#fff!important;}

div#tooltip {position:absolute; z-index:1000;width:auto!important;background:linear-gradient(rgba(255,255,255,1), rgba(255,255,255,0.7),rgba(255,255,255,1)); text-align:left; padding:5px 10px;border-radius:5px;
background: -webkit-linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.7),rgba(255, 255, 255, 1));
}
div#tooltip p {color:#ff6700;font-size:12px;}
div#tooltip p:after{
	content:'';
	width: 0;
	height: 0;
	position:absolute;
	left:10%;
	top:-8px;
	border-left: 8px solid transparent;
	border-right: 8px solid transparent;
	border-bottom: 8px solid rgba(255,255,255,0.95);
}


.jiazai{position:absolute;left:0;right:0;margin:auto;top:40%;width:300px;height:100px;text-align:center;}
.jiazai img{vertical-align:middle;margin-right:10px;}
.jiazai span{font-size:18px;color:#ccc;line-height:100px;}



.orange-text{color:#ff6700;}
.blue-text{color:#0181da;}
.bg-color{background:rgba(255,255,255,0.5);}
.index-title{font-size:14px;color:#0181da;font-weight:normal;}
.index-title small{color:#bcbcbc;margin-left:5px;font-size:12px;}
.lable{display:inline-block;background:#ff4200;padding:0px 5px;color:#fff;border-radius:5px;-webkit-border-radius:5px;font-weight:normal;margin-left:5px;}
.img-circle{border-radius:100px;-webkit-border-radius:100px;-moz-border-radius:100px;}
#tuijian{background:rgba(255,255,255,0.5) url(../images/icon/tj2.gif)no-repeat 98% 8px;}
#Hot{background:rgba(255,255,255,0.5) url(../images/icon/hot.gif)no-repeat 98% 8px;}
#New{background:rgba(255,255,255,0.5) url(../images/icon/new.gif)no-repeat 98% 8px;}
#News{background:url(../images/icon/new.gif)no-repeat 100% 0px;}
#Hots{background:url(../images/icon/hot.gif)no-repeat 100% 0px;}
#arc-tj{background:rgba(255,255,255,0.5) url(../images/icon/tj.gif)no-repeat 98% 8px;background-size:10%;}


header{width:100%;height:70px; background:rgba(255,255,255,0.85);box-shadow:0 0 5px #13c5f8;position:fixed;z-index:10;/*url(../images/bgimg/topbg1.png)repeat-x;background-size: 100% 100%;*/	}
header .top{width:100%;max-width:1200px;margin:auto;height:100%;position:relative;}
header .top .top-left{width:40%;float:left;overflow:hidden;height:100%;position:relative;}

header .mynav{width:60%;float:right;height:100%;position:relative;}
.top .logo{width:33%;float:left;}
.top .logo img{width:90%;padding-top:0.2em;}


.web-xiaoxi{margin-top:25px;width:67%;float:left;position:relative;font-size:12px;color:#777;}
.web-xiaoxi i{position:absolute;left:0;top:6px;color:inherit;}
.mulitline{height:25px;overflow:hidden;margin-left:20px;}
.mulitline li{line-height:25px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}



 #tianqi{height:20px;max-width:270px;}
.mynav >ul{}
.mynav >ul >li{text-align:center;width:12.5%;font-size:16px;color:inherit;height:100%;float:left;position:relative;}

.mynav> ul >li >a{display:inline-block;width:100%;height:70px;line-height:70px;color:#ff6700;transition:all 0.2s;-webkit-transition:all 0.2s;}
.mynav >ul >li >a:hover {background: #13c5f8;color:#fff;/*url(../images/bgimg/nav.png)no-repeat;*/font-size:20px;}
.mynav >.nav-active{background: #13c5f8;/*url(../images/bgimg/nav.png)no-repeat;*/}
.mynav >.nav-active a{color:#fff!important;font-size:20px;}
.mynav >ul >li .el-chevron-down{font-size:12px;color:inherit;}
.drop:hover .el-chevron-down{color:inherit;}


.drop-nav{}
.drop-nav li.nav-active a{border:none;}

.drop .el-chevron-down{font-size:12px;margin-left:10px;display:inline-block;transition: all 0.2s;-webkit-transition: all 0.2s;}
.nav-active .el-chevron-down{transform:rotate(180deg);}
.drop:hover .el-chevron-down{transform:rotate(180deg);}
.drop-nav{position:absolute;width:150px;border:1px solid #ddd;top:70px;box-sizing:border-box;border-top:none;display:none;	background:rgba(255,255,255,0.9);box-shadow:2px 2px 8px #ccc;}
.drop-nav li{padding:10px 0;width:100%;color:inherit;font-size:14px;text-align:center;border-bottom:1px dotted #ddd;box-sizing:border-box;transition: all 0.2s;-webkit-transition: all 0.2s;}
.drop-nav li:hover{background:#13c5f8;font-size:16px;}
.drop-nav li:hover a,.drop-nav li:hover a i{color:#fff;}
.drop-nav li a{display:inline-block;height:100%;width:100%;    color: #ff6700!important;}
.drop-nav li:hover a{color:#fff!important;}
.drop-nav li a i{font-size:12px;margin-right:10px;color:#7d7d7d;}
.drop-nav li.nav-active{background:#13c5f8!important;}
.drop-nav li.nav-active a{color:#fff!important;font-size:16px!important;}


.mobile-nav{overflow:hidden;float:right;text-align:center;width:33px;height:100%;position:relative;}

.mobile-nav .el-lines,.mobile-nav .el-remove{display:inline-block;line-height:2.8em;font-size:20px;color:#ff6700;}
.mobile-nav .el-remove{display:none;}
.mob-menu{z-index:999;position:absolute;width:100%;box-shadow:0px 5px 7px #999;background:rgba(255,255,255,0.9);top:3.3em;display:none;z-index:99999;right:0;-webkit-animation:mob-menu 0.5s}



.mob-menu .mob-ulnav i{top:17px;right:40%;position:absolute;display: inline-block;width: 0;height: 0;border-top: 5px solid #525252;border-right: 5px solid transparent;border-left: 5px solid transparent;}
.mob-menu .mob-ulnav li a{display:inline-block;position:relative;color:#525252;width:100%;padding:10px 0;border-bottom:1px dotted #adeccc;text-align:center;font-size:12px;}
.mob-menu .mob-ulnav li{}

.mob-menu .mob-ulnav li:last-child a{border:0;}
.mob-dropmenu{clear:both;background:#eee;display:none;}
.mob-drop .el-caret-down{float:right;}
.mob-menu .search{margin:0;}
.mob-menu .search form{padding:0;}
/*END mob*/




/*section*/
.container{width:100%;max-width:1300px;min-width:320px;margin:auto;overflow:hidden;padding-top:100px;}


.mysection{width:65%;float:left;}


.arclist{width:100%;overflow:hidden;margin-top:25px;}
.arclist >ul{width:100%;}
.arclist>ul>li{width:100%;margin:auto;padding:25px;box-sizing:border-box;margin-bottom:25px;overflow:hidden;position:relative;background:rgba(255,255,255,0.5);}
.arclist>ul>li> .arcimg{width:25%;height:105px;float:left;overflow:hidden;}
.arclist>ul>li> .arcimg img{width:100%;height:100%;transition: all 0.5s;-webkit-transition: all 0.5s;}
.arc-right{width:71%;float:right;position:relative;}
.arc-right h4{padding:0;margin:0;background:none;font-size:18px;padding-bottom:11px;text-indent:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
.arc-right p{font-size:13px;overflow:hidden;text-overflow:ellipsis;height:54px;color:#515151;}
.arc-right ul{width:100%;overflow:hidden;position:absolute;}
.arc-right ul li{float:left;overflow:hidden;padding:0 5px;font-size:12px;color:#888;    max-width: 150px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
.arc-right ul li:last-child{float:right;}
.arclist>ul>li:hover img{transform:scale(1.1);}




.add-more{width:100%;padding:10px 0;text-align:center;font-size:16px;margin:15px 0;display:inline-block;border-bottom:1px solid #ddd;box-sizing:border-box;	transition:all 0.5s;-webkit-transition:all 0.5s;}
.add-more:hover{background:#ff6700;color:#fff;}


.myaside{width:32%;float:right;}
.left-side,.right-side{width:25%;float:left;margin-bottom:30px;}
.section{    width: 45%;float: left;margin: 0 2.5%;}

.xiangguan{width:100%;overflow:hidden;}
.xiangguan div{display:block;font-size:14px;float:left;overflow:hidden;width:25%;text-align:center;margin-bottom:20px;padding-top:10px;color:#fff;}
.xiangguan div a{display:inline-block;width:50px;height:50px;margin:auto;border-radius:100px;-webkit-border-radius:100px;transition:all 0.5s;-webkit-transition:all 0.5s;}
.xiangguan div a i{line-height:50px;font-size:20px;margin:0;}
.xiangguan div span{display:block;width:100%;padding-top:10px;color:#777;}
.xiangguan .benbo{background:#0cabd3;}
.xiangguan > div >.mail-btn{background:#0cd38f;padding:0;}
.xiangguan .githbu{background:#5B5B5B;}
.xiangguan .side-fx{background:#8aee08;cursor:pointer;}
.xiangguan a:hover{opacity:0.8;transform:rotate(360deg) scale(1.3);}
.xiangguan a i{color:inherit;}

.other-xg a{width:50%;float:left;text-align:center;font-size:14px;color:#999;cursor:pointer;}
.other-xg i{color:inherit;}
.other-xg .rmb{font-family:'Microsoft YaHei'}


.other-xg{width:100%;overflow:hidden;padding-bottom:10px;}
.side-bdfx{display:none;border-radius:5px;position:absolute;background:rgba(255,255,255,0.9);width:350px;box-shadow:0px 0px 15px #ccc;border:1px solid #ccc;z-index:999;}
.side-bdfx>.bdsharebuttonbox{padding:20px 0;margin:0;}
.side-bdfx i{position:absolute;right:5px;top:5px;color:#777;cursor:pointer;font-size:12px;}

.focus-me{margin-bottom:30px;position:relative;}
.bdsharebuttonbox{padding:10px 0 25px 0;text-align:center;margin:auto;overflow:hidden!important;}
.bdsharebuttonbox li{display:inline;}
.bdsharebuttonbox a{text-align:center;background:url(../images/icon/bd-fx.png)no-repeat!important;width:50px!important;height:50px!important;display:inline-block!important;margin:0 3.5%!important;transition:all 0.5s;-webkit-transition:all 0.5s;}
.bdsharebuttonbox .bds_weixin{background-position:0% 4%!important;}
.bdsharebuttonbox .bds_tsina{background-position:33% 4%!important;}
.bdsharebuttonbox .bds_qzone{background-position:66% 4%!important;}
.bdsharebuttonbox .bds_tieba{background-position:99.5% 4%!important;}
.bdsharebuttonbox .bds_weixin:hover{background-position:0% 90%!important;}
.bdsharebuttonbox .bds_tsina:hover{background-position:33% 90%!important;}
.bdsharebuttonbox .bds_qzone:hover{background-position:66% 90%!important;}
.bdsharebuttonbox .bds_tieba:hover{background-position:99.5% 90%!important;}
.bdsharebuttonbox a:last-child{margin:0;}
.bdshare-button-style1-32 a{float:none!important;}




.cloud { width:100%; clear: both; overflow: hidden;border-radius:0px;border:0px solid #eee;margin-top:30px;overflow:auto;padding-bottom:15px;}
.cloud ul {width:95%;margin:auto;overflow:hidden;}
.cloud ul li {padding:0.1em 0.5em 0.1em 0.5em;float:left;text-align:center; border-radius:0.5em;margin:0.3em 1% 0.3em 1%;-moz-transition: all 0.5s; -webkit-transition: all 0.5s; -o-transition: all 0.5s; transition: all 0.5s; }
.cloud ul li a { color: #FFF;font-size:12px;}
.cloud ul li:hover { border-radius: 0; text-shadow: #000 1px 1px 1px }
.cloud ul li:nth-child(8n-4) { background: #20a8fe }
.cloud ul li:nth-child(8n-3) { background: #EB6841 }
.cloud ul li:nth-child(8n-2) { background: #3FB8AF }
.cloud ul li:nth-child(8n-1) { background: #FE4365 }
.cloud ul li:nth-child(8n-5) { background: #FC9D9A }
.cloud ul li:nth-child(8n-6) { background: #EDC951 }
.cloud ul li:nth-child(8n-7) { background: #C8C8A9 }
.cloud ul li:nth-child(8n) { background: #83AF9B }
.cloud ul li:first-child { background: #036564 }
.cloud ul li:last-child { background: #3299BB }


.article-push{margin-top:30px;}
.article-push >ul> li> .arc-right>h4{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;}
.article-push >ul{}
.article-push ul li{background:none;padding:10px 5%;margin-bottom:5px;overflow:hidden;}
.article-push ul li:last-child{border:none;}
.article-push>ul>li> .arcimg{width:30%;float:left;border-radius:3px;height:83px;-webkit-border-radius:3px;overflow:hidden;border:1px dotted #05b129;}
.article-push>ul>li> .arcimg img{width:100%;height:100%;padding:3px;box-sizing:border-box;border-radius:3px;-webkit-border-radius:3px;}
.article-push>ul>li> .arc-right{width:62%;}
.article-push>ul>li> .arc-right p{height:30px;font-size:12px;}
.article-push >ul>li>ul{width:100%;}
.article-push .arc-right>ul li{padding:0;}
.article-push >ul> li:hover{background:#f9fffc;}

.search{margin-top:20px;margin-bottom:10px;}
.search form{width:95%;margin:auto;padding-bottom:10px;}
.search-index{overflow:hidden;padding:10px 0;height:2em;}
.search-index input{font-size:12px;color:#333;height:100%;width:80%;float:left;}
.search-index i{height:100%;width:20%;background:rgba(255,255,255,0.8);padding:0;margin:0;text-align:center;font-size:16px;line-height:2em;}
.search form input[type="submit"]{cursor:pointer;position:relative;top:-32px;background:none;width:100%;border:1px solid #ccc;box-sizing:border-box;border-left:none;}


/*˵˵*/
.shuo-side{overflow:hidden;padding-bottom:10px;}
.shuo-side ul{width:95%;margin:auto;}
.shuo-side ul li{height:45px;overflow:hidden;margin-bottom:20px;border-bottom:solid  #fdceaf 1px;padding-top:10px;position: relative;}
.shuo-side span{width:80px;height:70px;border-radius:200px 0% 0 0;position:relative;float:left;left:-5px;color:#fff;display:inline-block;text-align:center;line-height:45px;font-size:14px;}
.shuo-side span strong{transform:rotate(-30deg);-webkit-transform:rotate(-30deg);display:block;position:relative;left:5px;}
.shuo-side div{height:100%;line-height:40px;float:left;width:70%;}
.shuo-side div a{font-size:12px;color:#555;float:left;text-indent:1.5em;    white-space: nowrap;text-overflow: ellipsis;overflow: hidden;width: 100%;}
.shuo-side div b{font-weight:normal;font-size:12px;color:#999;    position: absolute; right: 5px;}
.shuo-side ul li:nth-of-type(1){border-color:#0183ce}
.shuo-side ul li:nth-of-type(2){border-color:#96ce01}
.shuo-side ul li:nth-of-type(3){border-color:#e26204}
.shuobg1{background:#0183ce;opacity:0.6;}
.shuobg2{background:#96ce01;opacity:0.6;}
.shuobg3{background:#e26204;opacity:0.6;}


.mytab{margin-top:30px;}
.tab-btn{width:100%;}
.tab-btn a{width:50%;padding:12px 0;text-align:center;display:inline-block;font-size:13px;position:relative;}
.tab-btn .tab-active{background:#0ddb9e;color:#fff;}
.tab-btn .tab-active:after{
		content:' ';
		border-top: 10px solid #0ddb9e;
		border-right: 10px solid transparent;
		border-left: 10px solid transparent;
		display: inline-block;
		width: 0;height: 0;
		position:absolute;
		bottom:-10px!important;
		left:0;right:0;
		margin-left:auto;margin-right:auto;
	}
.tab-btn .tab-active i{color:#fff;}
.hudong-ul{width:95%;margin:auto;margin-top:10px;position:relative;transition:all 0.5s;-webkit-transition:all 0.5s;}
.hudong-ul li{width:100%;padding:10px 0;border-bottom:1px dashed #ccc;overflow:hidden;}
.hudong-ul li time{color:#888;float:right;width:58px;overflow:hidden;    white-space: nowrap;}
.hudong-ul li:last-child{border:none;}
.hudong-ul li .sd-tx{float:left;width:45px;height:45px;}
.hudong-ul li .sd-tx img{width:100%;}
.hudong-ul li .sd-name{    width: 75%; float: left; margin-left: 15px;}
.hudong-ul li .sd-name span{display:inline-block;width:100%;font-size:12px;}
.hudong-ul li .sd-name a{font-size:13px;line-height:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;    display: inline-block; width: 100%;}
.hudong-ul li .sd-name img{max-width:30px;vertical-align: middle;}

.paihang-ul{width:90%;margin:auto;margin-top:10px;display:none;}
.paihang-ul li{width:100%;padding:15px 0;border-bottom:1px dashed #ccc;overflow:hidden;    position: relative;}
.paihang-ul li:last-child{border:none;}
.paihang-ul li span:before{display:inline-block;width:20px;height:23px;border-radius:5px;-webkit-border-radius:5px;text-align:center;font-size:12px;margin-right:10px;}
.paihang-ul li:nth-of-type(1) span:before{content:'1';background:#e71555;color:#fff;}
.paihang-ul li:nth-of-type(2) span:before{content:'2';background:#16d083;color:#fff;}
.paihang-ul li:nth-of-type(3) span:before{content:'3';background:#ff6700;color:#fff;}
.paihang-ul li:nth-of-type(4) span:before{content:'4';background:#857479;color:#fff;}
.paihang-ul li:nth-of-type(5) span:before{content:'5';background:#857479;color:#fff;}
.paihang-ul li:nth-of-type(6) span:before{content:'6';background:#857479;color:#fff;}
.paihang-ul li a{font-size:13px;color:#777;}
.paihang-ul li a b{color:#999;font-weight:normal;font-size:12px;    position: absolute;right: 0px;}
.mytab ul li a{transition:all 0.5s;-webkit-transition:all 0.5s;}
.mytab ul li a:hover{text-shadow:0 0px 3px #000;color:#fff;}


.side-link{margin-top:30px;width:100%;}
.side-link ul{width:95%;margin:auto;margin-top:10px;text-align:center;overflow:hidden;padding-bottom:10px;}
.side-link ul li{float:left;overflow:hidden;}
.side-link ul li a{display:inline-block;padding:1px 10px;margin:0 5px 10px 5px;color:#ff6700;font-size:12px;background:linear-gradient(rgba(255,255,255,0.9), rgba(255,255,255,0.1),rgba(255,255,255,0.9));border:1px solid #eee;border-radius:3px ;-webkit-border-radius:3px;transition:all 0.5s;-webkit-transition:all 0.5s;
background: -webkit-linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.1),rgba(255, 255, 255, 0.9));
}
.side-link ul li a:hover{border-radius:0;-webkit-border-radius:0;box-shadow:3px 3px 5px #ccc;text-shadow:0 0px 3px #000;color:#fff;}
.side-link h4 a{float:right;margin-right:10px;}

footer{width:100%;background:rgba(0,67,94,0.95);margin-top:35px;}
.footer-area{width:100%;max-width:1200px;margin:auto;padding:25px 0;color:#fff;overflow:hidden;}
.footer-area h4{color:#fff;font-weight:normal;background:none;text-indent:15px;padding:0;}

.data-count{width:25%;overflow:hidden;float:left;}
.data-count ul{width:90%;margin:auto;overflow:hidden;}
.data-count ul li{width:50%;float:left;margin-bottom:30px;font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}

.data-count ul li i{color:#fff;}
.data-count ul li a{color:#fff;}
.data-count ul li span{display:inline-block;color:#fff;padding:2px 5px;ext-align:center;}

.about-blog{width:25%;overflow:hidden;float:left;}
.ft-part1{width:95%;margin:auto;}
.about-blog .mytb{width:98%;margin:auto;padding-bottom:30px;}
.about-blog .mytb >a{display:inline-block;width:100%;padding:15px 0;background:#ff6700;border-radius:0;-webkit-border-radius:0;text-align:center;transition:all 0.5s;-webkit-transition:all 0.5s;}
.about-blog .mytb >a:hover{background:#e34405;border-radius:10px ;-webkit-border-radius:10px;}

.mail-dy {position:absolute;padding:20px;background:rgba(255,255,255,0.9);box-shadow:0 0 20px #777;display:none;z-index:999;width:280px;}
.mail-dy .el-remove{position:absolute;right:5px;top:5px;font-size:12px;}
.mail-dy form{overflow:hidden;padding:15px 0;height:2em;}
.mail-dy form input{font-size:12px;color:#333;height:100%;width:60%;float:left;background:#fff;}
.mail-dy .el-envelope{height:100%;width:19%;background:#0ddb9e;color:#fff;text-align:center;font-size:16px;line-height:2em;}
.mail-dy input[type="submit"]{cursor:pointer;position:relative;top:-32px;background:none;width:100%;border:none;}
.mail-dy span{width:19%;float:left;background:#0ddb9e;color:#fff;text-align:center;font-size:14px;height:100%;line-height:33px;text-align:center;}
.mail-btn{width:98%;margin:auto;padding-bottom:10px;position:relative;}
.mail-btn >a{display:inline-block;width:100%;padding:15px 0;background:#0bbd84;text-align:center;border-radius:0;-webkit-border-radius:0;transition:all 0.5s;-webkit-transition:all 0.5s;}
.mail-btn >a:hover{background:#0af5aa;border-radius:10px ;-webkit-border-radius:10px;}
/*RSS*/
.img-feed{width:100%;padding:10px 0;}
.img-feed a{float:left;padding-top:5px;}
.img-feed a:nth-of-type(1){margin-right:10%;}
.img-feed p{float:right;font-size:14px;}


.close-fd{width:25%;float:left;}
.close-fd ul{width:95%;margin:auto;}
.close-fd ul li{width:100%;padding:8px 0;overflow:hidden;}
.close-fd ul li:last-child{border:none;}
.close-fd ul li .sd-tx{float:left;width:45px;height:45px;}
.close-fd ul li .sd-tx img{width:100%;}
.close-fd ul li .sd-name{width:78%;float:right;}
.close-fd ul li .sd-name span{display:inline-block;width:100%;font-size:12px;color:#fff600;}
.close-fd ul li .sd-name a{display:block;font-size:12px;line-height:25px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.close-fd ul li .sd-name img{max-width:30px;vertical-align: middle;}

.tuwen-pd{width:25%;float:left;}
.tuwen-pd ul{width:95%;margin:auto;}
.tuwen-pd ul li{float:left;margin-bottom:10px;margin:3%;}
.tuwen-pd ul li img{width:50px;height:50px;}
.tuwen-pd ul li img:hover{opacity:0.6;}
/*foot-nav*/
.foot-nav{width:100%;text-align:center;padding:10px 0;overflow:hidden;font-size:12px;background:#202121;color:#fff;}
.foot-nav .copy-right{margin-bottom:10px;}


.clos-new{overflow:hidden;padding-bottom:15px;}
.clos-new ul{width:95%;margin:auto;}
.clos-new ul li{width:100%;padding:8px 0;font-size:13px;}
.clos-new ul li font{margin:0 5px;display:inline-block;}
.clos-new ul li i{margin-right:10px;}


#toTop {
	width:47px;
	height:47px;
	background:url(../images/icon/back-top-btn.png) no-repeat;
	text-align:center;
	position:fixed;
	bottom:25px;
	right:20px;
	cursor:pointer;
	text-indent:-9999px;
	z-index:12;
	display:none;
}



.skin-btn{position:fixed;right:-7px;top:48%;width:30px;padding:20px 0;border-radius: 200px 0px 0px 200px;z-index:999;background:#10b7f5;font-size:12px;color:#fff;text-align:center;}
.skin-btn a{text-align:center;line-height:20px;display:block;}
.skin-content{position:fixed;right:0;top:40%;border:#10b7f5 solid 1px;width:80px;display:none;background:#fff;z-index:999;}
.skin-content h1{font-size:12px;background:#fff;text-indent:0;color:#555;margin:0px auto;text-align:center;height:25px;line-height:25px;padding:5px 0;border-bottom:#ebebeb solid 1px;position:relative;}
.skin-content h1 span{font-size:12px;font-weight:normal;position:absolute;left:-20px;top:-20px;cursor:pointer;background:#fff;border:#10b7f5 solid 1px;width:35px;height:35px;line-height:35px;border-radius:20px;text-align:center;}
.skin-content-list{background:#fff;}
.skin-list{overflow:hidden;line-height:35px;width:100%;margin:0px auto;border-bottom:dashed 1px #10b7f5;text-align:center;}
.skin-list a{display:block;font-size:14px;color:#555;}
.skin-list a:hover{color:#fff;background:#4ada9b;}
.skin-list span{float:left;}

.clos-new ul li{width:100%;}
@media screen and (min-width:1023px){
	#mob-tianqi{display:none;}
	.mobile-nav{display:none;}

}


@media screen and (min-width:1024px) and (max-width:1199px){

	.container,header .top{max-width:1000px;}
}



@media screen and (min-width:320px) and (max-width:1023px){
body{
	background:url(../images/bgimg/mob-bg2.jpg)no-repeat;
	 background-attachment: fixed;
    background-repeat: no-repeat;
    background-size: 100%;
}
	.container{padding-top:4.5em;}
	nav{display:none;}
	.shuo-side div b{display:none;}
	header {height:3.3em!important;background:rgba(255,255,255,0.85)!important;box-shadow:0 0 6px #999;}
	header .top .top-left{width:100%;}
	.top .logo{max-width:125px;margin-left:5px;}
	.mysection,.section,.myaside{width:95%;margin:auto;float:none;}
	.swiper-container{width:105.5%!important;margin-left:-2.5%!important;}
	.arc-right h4{font-size:14px;line-height:16px;padding-bottom:5px;}
	.arc-right p{font-size:12px;height:40px;line-height:20px;}
	.arc-right ul li{padding:0;padding-right:10px;}
	.arc-right ul li:nth-of-type(2),.arc-right ul li:last-child{display:none;}
	.arclist>ul>li> .arcimg{height:78px;}
	.web-xiaoxi{max-width:55%!important;margin-top:16px;}
	.t_news b{left:10px!important;}
	.news_li li,.swap li{text-align:left!important;text-indent:35px;}

	.arclist>ul>li{margin-bottom:1em;padding:15px 10px;}
	.arclist>ul>li> .arcimg{width:30%;}
	.arc-right{width:66%;}

	.data-count ul,.cloud ul,.bdsharebuttonbox{width:95%;}

	#tuijian,#Hot,#New{background-position:-100% -100%;}

	.left-side,.right-side{width:95%;margin:auto;float:none;}
	.bdsharebuttonbox a{margin:0 2.5%!important;}

	.about-blog,.close-fd,.tuwen-pd,.data-count{width:100%;margin-bottom:30px;}
	.tuwen-pd ul{overflow:hidden;}
	.data-count ul li{margin-bottom:15px;}
	footer h4{padding-bottom:15px!important;}
	#toTop{width:30px;height:30px;background-size:100%;right:10px;}/*���ض���*/
	.mob-hidden{display:none;}
	.article-push>ul>li> .arc-right p{height:40px;}
	.w95{width:95%;margin:auto;}
	.clos-new ul li{font-size:12px;}

}


================================================
FILE: src/static/css/skin_1.css
================================================
body {
    background: #e9ecd7 url(/static/images/bgimg/bg0.jpg);
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-size: 100% 100%
}

html {
    font-size: 100%;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    -webkit-appearance: none
}

#color li, #comment-post button, #nav > ul > li span:hover, .active, .archives h4, .backtop, .carousel-indicators li, .comment-tools, .face, .post-context button:hover, .search button, .ssearch input[type=submit], .tab_nav, .toggler, .tools, .totop, .zujian, a {
    cursor: url(/static/cur/link.cur), auto
}

body {
    cursor: url(/static/cur/default.cur), auto
}

body:after {
    content: '';
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, .5);
    z-index: -1
}

i {
    color: #ff6700
}

input, textarea {
    border: #ddd 1px solid;
    box-shadow: inset 0 0 2px rgba(0, 0, 0, .05);
    background: rgba(255, 255, 255, .5)
}

input:focus, textarea:focus {
    border: #ff6700 1px solid;
    box-shadow: 0 0 8px rgba(255, 103, 0, .7)
}

.orange-text {
    color: #ff6700
}

.blue-text {
    color: #0181da
}

.bg-color {
    background: rgba(255, 255, 255, .5);
    text-align: left
}

.index-title {
    color: #0181da
}

.index-title small {
    color: #bcbcbc;
    margin-left: 5px;
    font-size: 12px
}

header {
    width: 100%;
    height: 70px;
    background: rgba(255, 255, 255, .85);
    box-shadow: 0 0 5px #13c5f8;
    position: fixed;
    z-index: 10
}

.mynav > ul > li > a {
    color: #ff6700
}

.mynav > ul > li > a:hover {
    background: #13c5f8;
    color: #fff;
    font-size: 20px
}

.nav-active {
    background: #13c5f8
}

.nav-active a {
    color: #fff !important
}

.top nav > ul > li .el-caret-down {
    color: #fff000
}

div#tooltip {
    position: absolute;
    z-index: 1000;
    width: auto !important;
    background: linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, .9), rgba(255, 255, 255, 1));
    text-align: left;
    padding: 5px 10px;
    border-radius: 5px;
    background: -webkit-linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, .9), rgba(255, 255, 255, 1));
    box-shadow: 0 5px 20px #666
}

div#tooltip p {
    color: #ff6700;
    font-size: 12px
}

div#tooltip p:after {
    content: '';
    width: 0;
    height: 0;
    position: absolute;
    left: 10%;
    top: -8px;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-bottom: 8px solid rgba(255, 255, 255, .95)
}

audio, canvas, video {
    display: inline-block
}

@media screen and (min-width: 320px) and (max-width: 1023px) {
    body {
        background: url(/static/images/bgimg/mob-bg2.jpg) no-repeat;
        background-attachment: fixed;
        background-repeat: no-repeat;
        background-size: 100%
    }
}

================================================
FILE: src/static/css/skin_2.css
================================================
body {
    background: 0 0;
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-size: 100% 100%
}

html {
    font-size: 100%;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    -webkit-appearance: none
}

#color li, #comment-post button, #nav > ul > li span:hover, .archives h4, .backtop, .carousel-indicators li, .comment-tools, .face, .post-context button:hover, .search button, .ssearch input[type=submit], .tab_nav, .toggler, .tools, .totop, .zujian, a {
    cursor: url(/static/cur/default.cur), auto
}

body {
    cursor: url(/static/cur/default.cur), auto
}

body:after {
    content: '';
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 1);
    z-index: -1
}

i {
    color: #555
}

input, textarea {
    border: #ddd 1px solid;
    box-shadow: inset 0 0 2px rgba(0, 0, 0, .05);
    background: rgba(255, 255, 255, .5)
}

input:focus, textarea:focus {
    border: #09b597 1px solid;
    box-shadow: 0 0 8px rgba(9, 181, 151, .7)
}

.orange-text {
    color: #555
}

.blue-text, .comment-line ul li, .pagination ul > li > a, .pagination ul > li > span, .re-info span a {
    color: #09b597
}

.bg-color {
    background: rgba(255, 255, 255, .5)
}

.index-title {
    color: #09b597;
    border-bottom: 1px solid #ddd
}

.index-title small {
    color: #bcbcbc;
    margin-left: 5px;
    font-size: 12px
}

header {
    background: rgba(255, 255, 255, .8) repeat-x;
    box-shadow: 3px 3px 5px #ccc;
    background-size: 100% 100%
}

.top nav > ul > li > a {
    color: #555
}

.mynav > ul > li > a:hover {
    background: #09b597;
    background-size: 100%
}

.mynav > ul > li > a:hover {
    color: #fff
}

.nav-active {
    background: #09b597
}

.nav-active a {
    color: #fff !important
}

.mynav > ul > li .el-caret-down {
    color: #555
}

.drop-nav li a {
    color: #555 !important
}

.arclist > ul > li, .comment-area > ul > li, .post-line, .shuos-area {
    border-bottom: 1px solid #ddd
}

.arc-title {
    border: none
}

.arrow_box {
    position: relative;
    background: rgba(255, 255, 255, .6);
    border: 1px solid #ddd
}

.arrow_box:after, .arrow_box:before {
    right: 100%;
    top: 30px;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none
}

.arrow_box:after {
    border-color: rgba(255, 255, 255, 0);
    border-right-color: #fff;
    border-width: 14px;
    margin-top: -14px
}

.arrow_box:before {
    border-color: rgba(255, 255, 255, 0);
    border-right-color: #ddd;
    border-width: 15px;
    margin-top: -15px
}

.blog_links li, .pagination ul > li > a, .pagination ul > li > span, .pic-btn .pull-right, .return-xc a, .wall-li {
    border: 1px solid #ccc
}

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
    display: block
}

audio, canvas, video {
    display: inline-block
}

div#tooltip {
    background: rgba(0, 0, 0, .8)
}

div#tooltip p {
    color: #fff
}

div#tooltip p:after {
    border-bottom: 8px solid rgba(0, 0, 0, .8)
}

================================================
FILE: src/static/css/skin_3.css
================================================
body {
    background: #f2f2f2 url(/static/images/bgimg/blueprint.png);
    background-attachment: fixed
}

html {
    font-size: 100%;
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    -webkit-appearance: none
}

#color li, #comment-post button, #nav > ul > li span:hover, .archives h4, .backtop, .carousel-indicators li, .comment-tools, .face, .post-context button:hover, .search button, .ssearch input[type=submit], .tab_nav, .toggler, .tools, .totop, .zujian, a {
    cursor: url(/static/cur/default.cur), auto
}

body {
    cursor: url(/static/cur/default.cur), auto
}

body:after {
    content: '';
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: #f2f2f2 url(/static/images/bgimg/blueprint.png);
    background-attachment: fixed;
    z-index: -1
}

i {
    color: #555
}

#tuijian {
    background: rgba(255, 255, 255, 1) url(/static/images/icon/tj2.gif) no-repeat 98% 8px
}

#Hot {
    background: rgba(255, 255, 255, 1) url(/static/images/icon/hot.gif) no-repeat 98% 8px
}

#New {
    background: rgba(255, 255, 255, 1) url(/static/images/icon/new.gif) no-repeat 98% 8px
}

#arc-tj {
    background: rgba(255, 255, 255, 1) url(/static/images/icon/tj.gif) no-repeat 98% 8px;
    background-size: 10%
}

input, textarea {
    border: #ddd 1px solid;
    box-shadow: inset 0 0 2px rgba(0, 0, 0, .05);
    background: rgba(255, 255, 255, 1)
}

input:focus, textarea:focus {
    border: #09b597 1px solid;
    box-shadow: 0 0 8px rgba(9, 181, 151, .7)
}

.orange-text {
    color: #555
}

.blue-text, .comment-line ul li, .pagination ul > li > a, .pagination ul > li > span, .re-info span a {
    color: #09b597
}

.arclist > ul > li, .bg-color, .blog_hd .hd_right {
    background: rgba(255, 255, 255, 1);
    border: 1px solid #ddd;
    box-sizing: border-box
}

.index-title {
    color: #09b597;
    border: 1px solid #ddd;
    background: rgba(255, 255, 255, 1)
}

.index-title small {
    color: #bcbcbc;
    margin-left: 5px;
    font-size: 12px
}

.arc-title {
    border: 1px solid #ddd !important;
    box-sizing: border-box
}

header {
    background: rgba(255, 255, 255, 1);
    box-shadow: 3px 3px 8px #ccc;
    background-size: 100% 100%
}

.mynav > ul > li > a:hover {
    background: 0 0
}

.mynav > ul > li > a {
    color: #09b597
}

.mynav > ul > li > a:hover {
    border-bottom: 3px solid #ff6700;
    box-sizing: border-box;
    color: #ff6700
}

.mynav > ul > li .el-chevron-down {
    font-size: 12px;
    color: #09b597
}

.nav-active .el-chevron-down:before {
    color: #ff6700
}

.nav-active > a {
    border-bottom: 3px solid #ff6700;
    box-sizing: border-box;
    background: 0 0
}

.nav-active a {
    color: #ff6700 !important
}

.drop-nav li a {
    color: #555 !important
}

.drop-nav {
    background: #fff;
    border: 1px solid #ccc
}

.arclist > ul > li, .comment-area > ul > li, .post-line, .shuos-area {
    border: 1px solid #ddd
}

.arc-title {
    border: none
}

.arrow_box {
    position: relative;
    background: rgba(255, 255, 255, 1);
    border: 1px solid #ddd
}

.arrow_box:after, .arrow_box:before {
    right: 100%;
    top: 30px;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none
}

.arrow_box:after {
    border-color: rgba(255, 255, 255, 0);
    border-right-color: #fff;
    border-width: 14px;
    margin-top: -14px
}

.arrow_box:before {
    border-color: rgba(255, 255, 255, 0);
    border-right-color: #ddd;
    border-width: 15px;
    margin-top: -15px
}

.blog_links li, .pagination ul > li > a, .pagination ul > li > span, .pic-btn .pull-right, .return-xc a, .wall-li {
    border: 1px solid #ddd
}

.article-push li {
    border: none !important
}

aside .index-title {
    border-left: 0;
    border-right: 0;
    border-top: 0
}

.form-btn, .sucailist .su-li {
    background: #fff
}

div#tooltip {
    background: rgba(0, 0, 0, .8)
}

div#tooltip p {
    color: #fff
}

div#tooltip p:after {
    border-bottom: 8px solid rgba(0, 0, 0, .8)
}

.blog_links li, .side-link ul li a {
    background: #fff;
    border: 1px solid #333
}

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
    display: block
}

audio, canvas, video {
    display: inline-block
}

@media screen and (max-width: 1023px) and (min-width: 320px) {
    .news_li a, .swap a, .t_news i {
        color: #555
    }
}

#Hotbg {
    background: rgba(255, 255, 255, 1) url(/static/images/icon/Hot.png) no-repeat top left
}

================================================
FILE: src/static/js/album.js
================================================
"use strict";"object"!=typeof window.CP&&(window.CP={}),window.CP.PenTimer={programNoLongerBeingMonitored:!1,timeOfFirstCallToShouldStopLoop:0,_loopExits:{},_loopTimers:{},START_MONITORING_AFTER:2e3,STOP_ALL_MONITORING_TIMEOUT:5e3,MAX_TIME_IN_LOOP_WO_EXIT:2200,exitedLoop:function(o){this._loopExits[o]=!0},shouldStopLoop:function(o){if(this.programKilledSoStopMonitoring)return!0;if(this.programNoLongerBeingMonitored)return!1;if(this._loopExits[o])return!1;var t=this._getTime();if(0===this.timeOfFirstCallToShouldStopLoop)return this.timeOfFirstCallToShouldStopLoop=t,!1;var i=t-this.timeOfFirstCallToShouldStopLoop;if(i<this.START_MONITORING_AFTER)return!1;if(i>this.STOP_ALL_MONITORING_TIMEOUT)return this.programNoLongerBeingMonitored=!0,!1;try{this._checkOnInfiniteLoop(o,t)}catch(n){return this._sendErrorMessageToEditor(),this.programKilledSoStopMonitoring=!0,!0}return!1},_sendErrorMessageToEditor:function(){try{if(this._shouldPostMessage()){var o={action:"infinite-loop",line:this._findAroundLineNumber()};parent.postMessage(JSON.stringify(o),"*")}else this._throwAnErrorToStopPen()}catch(t){this._throwAnErrorToStopPen()}},_shouldPostMessage:function(){return document.location.href.match(/boomerang/)},_throwAnErrorToStopPen:function(){throw"We found an infinite loop in your Pen. We've stopped the Pen from running. Please correct it or contact support@codepen.io."},_findAroundLineNumber:function(){var o=new Error,t=0;if(o.stack){var i=o.stack.match(/boomerang\S+:(\d+):\d+/);i&&(t=i[1])}return t},_checkOnInfiniteLoop:function(o,t){if(!this._loopTimers[o])return this._loopTimers[o]=t,!1;var i=t-this._loopTimers[o];if(i>this.MAX_TIME_IN_LOOP_WO_EXIT)throw"Infinite Loop found on loop: "+o},_getTime:function(){return+new Date}},window.CP.shouldStopExecution=function(o){return window.CP.PenTimer.shouldStopLoop(o)},window.CP.exitedLoop=function(o){window.CP.PenTimer.exitedLoop(o)};
(function ($) {
    $.fn.jaliswall = function (options) {
        this.each(function () {
            var defaults = {
                item: '.wall-item',
                columnClass: '.wall-column',
                resize: true
            };
            var prm = $.extend(defaults, options);
            var container = $(this);
            var items = container.find(prm.item);
            var elemsDatas = [];
            var columns = [];
            var nbCols = getNbCols();
            init();
            function init() {
                nbCols = getNbCols();
                recordAndRemove();
                print();
                if (prm.resize) {
                    $(window).resize(function () {
                        if (nbCols != getNbCols()) {
                            nbCols = getNbCols();
                            setColPos();
                            print();
                        }
                    });
                }
            }
            function getNbCols() {
                var instanceForCompute = false;
                if (container.find(prm.columnClass).length == 0) {
                    instanceForCompute = true;
                    container.append('<div class=\'' + parseSelector(prm.columnClass) + '\'></div>');
                }
                var colWidth = container.find(prm.columnClass).outerWidth(true);
                var wallWidth = container.innerWidth();
                if (instanceForCompute)
                    container.find(prm.columnClass).remove();
                return Math.round(wallWidth / colWidth);
            }
            function recordAndRemove() {
                items.each(function (index) {
                    var item = $(this);
                    elemsDatas.push({
                        content: item.html(),
                        class: item.attr('class'),
                        href: item.attr('href'),
                        id: item.attr('id'),
                        colid: index % nbCols
                    });
                    item.remove();
                });
            }
            function setColPos() {
                for (var i in elemsDatas) {
                    if (window.CP.shouldStopExecution(1)) {
                        break;
                    }
                    elemsDatas[i].colid = i % nbCols;
                }
                window.CP.exitedLoop(1);
            }
            function parseSelector(selector) {
                return selector.slice(1, selector.length);
            }
            function print() {
                var tree = '';
                for (var i = 0; i < nbCols; i++) {
                    if (window.CP.shouldStopExecution(2)) {
                        break;
                    }
                    tree += '<div class=\'' + parseSelector(prm.columnClass) + '\'></div>';
                }
                window.CP.exitedLoop(2);
                container.html(tree);
                for (var i in elemsDatas) {
                    var html = '';
                    var content = elemsDatas[i].content != undefined ? elemsDatas[i].content : '';
                    var href = elemsDatas[i].href != href ? elemsDatas[i].href : '';
                    var classe = elemsDatas[i].class != undefined ? elemsDatas[i].class : '';
                    var id = elemsDatas[i].id != undefined ? elemsDatas[i].id : '';
                    if (elemsDatas[i].href != undefined) {
                        html += '<a ' + getAttr(href, 'href') + ' ' + getAttr(classe, 'class') + ' ' + getAttr(id, 'id') + '>' + content + '</a>';
                    } else {
                        html += '<div ' + getAttr(classe, 'class') + ' ' + getAttr(id, 'id') + '>' + content + '</a>';
                    }
                    container.children(prm.columnClass).eq(i % nbCols).append(html);
                }
            }
            function getAttr(attr, type) {
                return attr != undefined ? type + '=\'' + attr + '\'' : '';
            }
        });
        return this;
    };
	
}(jQuery));

================================================
FILE: src/static/js/jquery.flexslider-min.js
================================================
/**
 * Swiper 3.3.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * 
 * http://www.idangero.us/swiper/
 * 
 * Copyright 2016, Vladimir Kharlampidi
 * The iDangero.us
 * http://www.idangero.us/
 * 
 * Licensed under MIT
 * 
 * Released on: February 7, 2016
 */
!function(){"use strict";function e(e){e.fn.swiper=function(a){var r;return e(this).each(function(){var e=new t(this,a);r||(r=e)}),r}}var a,t=function(e,i){function s(e){return Math.floor(e)}function n(){b.autoplayTimeoutId=setTimeout(function(){b.params.loop?(b.fixLoop(),b._slideNext(),b.emit("onAutoplay",b)):b.isEnd?i.autoplayStopOnLast?b.stopAutoplay():(b._slideTo(0),b.emit("onAutoplay",b)):(b._slideNext(),b.emit("onAutoplay",b))},b.params.autoplay)}function o(e,t){var r=a(e.target);if(!r.is(t))if("string"==typeof t)r=r.parents(t);else if(t.nodeType){var i;return r.parents().each(function(e,a){a===t&&(i=t)}),i?t:void 0}if(0!==r.length)return r[0]}function l(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMutationObserver,r=new t(function(e){e.forEach(function(e){b.onResize(!0),b.emit("onObserverUpdate",b,e)})});r.observe(e,{attributes:"undefined"==typeof a.attributes?!0:a.attributes,childList:"undefined"==typeof a.childList?!0:a.childList,characterData:"undefined"==typeof a.characterData?!0:a.characterData}),b.observers.push(r)}function p(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.charCode;if(!b.params.allowSwipeToNext&&(b.isHorizontal()&&39===a||!b.isHorizontal()&&40===a))return!1;if(!b.params.allowSwipeToPrev&&(b.isHorizontal()&&37===a||!b.isHorizontal()&&38===a))return!1;if(!(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey||document.activeElement&&document.activeElement.nodeName&&("input"===document.activeElement.nodeName.toLowerCase()||"textarea"===document.activeElement.nodeName.toLowerCase()))){if(37===a||39===a||38===a||40===a){var t=!1;if(b.container.parents(".swiper-slide").length>0&&0===b.container.parents(".swiper-slide-active").length)return;var r={left:window.pageXOffset,top:window.pageYOffset},i=window.innerWidth,s=window.innerHeight,n=b.container.offset();b.rtl&&(n.left=n.left-b.container[0].scrollLeft);for(var o=[[n.left,n.top],[n.left+b.width,n.top],[n.left,n.top+b.height],[n.left+b.width,n.top+b.height]],l=0;l<o.length;l++){var p=o[l];p[0]>=r.left&&p[0]<=r.left+i&&p[1]>=r.top&&p[1]<=r.top+s&&(t=!0)}if(!t)return}b.isHorizontal()?((37===a||39===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),(39===a&&!b.rtl||37===a&&b.rtl)&&b.slideNext(),(37===a&&!b.rtl||39===a&&b.rtl)&&b.slidePrev()):((38===a||40===a)&&(e.preventDefault?e.preventDefault():e.returnValue=!1),40===a&&b.slideNext(),38===a&&b.slidePrev())}}function d(e){e.originalEvent&&(e=e.originalEvent);var a=b.mousewheel.event,t=0,r=b.rtl?-1:1;if("mousewheel"===a)if(b.params.mousewheelForceToAxis)if(b.isHorizontal()){if(!(Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)))return;t=e.wheelDeltaX*r}else{if(!(Math.abs(e.wheelDeltaY)>Math.abs(e.wheelDeltaX)))return;t=e.wheelDeltaY}else t=Math.abs(e.wheelDeltaX)>Math.abs(e.wheelDeltaY)?-e.wheelDeltaX*r:-e.wheelDeltaY;else if("DOMMouseScroll"===a)t=-e.detail;else if("wheel"===a)if(b.params.mousewheelForceToAxis)if(b.isHorizontal()){if(!(Math.abs(e.deltaX)>Math.abs(e.deltaY)))return;t=-e.deltaX*r}else{if(!(Math.abs(e.deltaY)>Math.abs(e.deltaX)))return;t=-e.deltaY}else t=Math.abs(e.deltaX)>Math.abs(e.deltaY)?-e.deltaX*r:-e.deltaY;if(0!==t){if(b.params.mousewheelInvert&&(t=-t),b.params.freeMode){var i=b.getWrapperTranslate()+t*b.params.mousewheelSensitivity,s=b.isBeginning,n=b.isEnd;if(i>=b.minTranslate()&&(i=b.minTranslate()),i<=b.maxTranslate()&&(i=b.maxTranslate()),b.setWrapperTransition(0),b.setWrapperTranslate(i),b.updateProgress(),b.updateActiveIndex(),(!s&&b.isBeginning||!n&&b.isEnd)&&b.updateClasses(),b.params.freeModeSticky?(clearTimeout(b.mousewheel.timeout),b.mousewheel.timeout=setTimeout(function(){b.slideReset()},300)):b.params.lazyLoading&&b.lazy&&b.lazy.load(),0===i||i===b.maxTranslate())return}else{if((new window.Date).getTime()-b.mousewheel.lastScrollTime>60)if(0>t)if(b.isEnd&&!b.params.loop||b.animating){if(b.params.mousewheelReleaseOnEdges)return!0}else b.slideNext();else if(b.isBeginning&&!b.params.loop||b.animating){if(b.params.mousewheelReleaseOnEdges)return!0}else b.slidePrev();b.mousewheel.lastScrollTime=(new window.Date).getTime()}return b.params.autoplay&&b.stopAutoplay(),e.preventDefault?e.preventDefault():e.returnValue=!1,!1}}function u(e,t){e=a(e);var r,i,s,n=b.rtl?-1:1;r=e.attr("data-swiper-parallax")||"0",i=e.attr("data-swiper-parallax-x"),s=e.attr("data-swiper-parallax-y"),i||s?(i=i||"0",s=s||"0"):b.isHorizontal()?(i=r,s="0"):(s=r,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*n+"%":i*t*n+"px",s=s.indexOf("%")>=0?parseInt(s,10)*t+"%":s*t+"px",e.transform("translate3d("+i+", "+s+",0px)")}function c(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"on"+e[0].toUpperCase()+e.substring(1):"on"+e),e}if(!(this instanceof t))return new t(e,i);var m={direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,autoplay:!1,autoplayDisableOnInteraction:!0,autoplayStopOnLast:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",coverflow:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flip:{slideShadows:!0,limitRotation:!0},cube:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fade:{crossFade:!1},parallax:!1,scrollbar:null,scrollbarHide:!0,scrollbarDraggable:!1,scrollbarSnapOnRelease:!1,keyboardControl:!1,mousewheelControl:!1,mousewheelReleaseOnEdges:!1,mousewheelInvert:!1,mousewheelForceToAxis:!1,mousewheelSensitivity:1,hashnav:!1,breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,onlyExternal:!1,threshold:0,touchMoveStopPropagation:!0,uniqueNavElements:!0,pagination:null,paginationElement:"span",paginationClickable:!1,paginationHide:!1,paginationBulletRender:null,paginationProgressRender:null,paginationFractionRender:null,paginationCustomRender:null,paginationType:"bullets",resistance:!0,resistanceRatio:.85,nextButton:null,prevButton:null,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,lazyLoading:!1,lazyLoadingInPrevNext:!1,lazyLoadingInPrevNextAmount:1,lazyLoadingOnTransitionStart:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,control:void 0,controlInverse:!1,controlBy:"slide",allowSwipeToPrev:!0,allowSwipeToNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",buttonDisabledClass:"swiper-button-disabled",paginationCurrentClass:"swiper-pagination-current",paginationTotalClass:"swiper-pagination-total",paginationHiddenClass:"swiper-pagination-hidden",paginationProgressbarClass:"swiper-pagination-progressbar",observer:!1,observeParents:!1,a11y:!1,prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",runCallbacksOnInit:!0},h=i&&i.virtualTranslate;i=i||{};var f={};for(var g in i)if("object"!=typeof i[g]||null===i[g]||(i[g].nodeType||i[g]===window||i[g]===document||"undefined"!=typeof r&&i[g]instanceof r||"undefined"!=typeof jQuery&&i[g]instanceof jQuery))f[g]=i[g];else{f[g]={};for(var v in i[g])f[g][v]=i[g][v]}for(var w in m)if("undefined"==typeof i[w])i[w]=m[w];else if("object"==typeof i[w])for(var y in m[w])"undefined"==typeof i[w][y]&&(i[w][y]=m[w][y]);var b=this;if(b.params=i,b.originalParams=f,b.classNames=[],"undefined"!=typeof a&&"undefined"!=typeof r&&(a=r),("undefined"!=typeof a||(a="undefined"==typeof r?window.Dom7||window.Zepto||window.jQuery:r))&&(b.$=a,b.currentBreakpoint=void 0,b.getActiveBreakpoint=function(){if(!b.params.breakpoints)return!1;var e,a=!1,t=[];for(e in b.params.breakpoints)b.params.breakpoints.hasOwnProperty(e)&&t.push(e);t.sort(function(e,a){return parseInt(e,10)>parseInt(a,10)});for(var r=0;r<t.length;r++)e=t[r],e>=window.innerWidth&&!a&&(a=e);return a||"max"},b.setBreakpoint=function(){var e=b.getActiveBreakpoint();if(e&&b.currentBreakpoint!==e){var a=e in b.params.breakpoints?b.params.breakpoints[e]:b.originalParams,t=b.params.loop&&a.slidesPerView!==b.params.slidesPerView;for(var r in a)b.params[r]=a[r];b.currentBreakpoint=e,t&&b.destroyLoop&&b.reLoop(!0)}},b.params.breakpoints&&b.setBreakpoint(),b.container=a(e),0!==b.container.length)){if(b.container.length>1){var x=[];return b.container.each(function(){x.push(new t(this,i))}),x}b.container[0].swiper=b,b.container.data("swiper",b),b.classNames.push("swiper-container-"+b.params.direction),b.params.freeMode&&b.classNames.push("swiper-container-free-mode"),b.support.flexbox||(b.classNames.push("swiper-container-no-flexbox"),b.params.slidesPerColumn=1),b.params.autoHeight&&b.classNames.push("swiper-container-autoheight"),(b.params.parallax||b.params.watchSlidesVisibility)&&(b.params.watchSlidesProgress=!0),["cube","coverflow","flip"].indexOf(b.params.effect)>=0&&(b.support.transforms3d?(b.params.watchSlidesProgress=!0,b.classNames.push("swiper-container-3d")):b.params.effect="slide"),"slide"!==b.params.effect&&b.classNames.push("swiper-container-"+b.params.effect),"cube"===b.params.effect&&(b.params.resistanceRatio=0,b.params.slidesPerView=1,b.params.slidesPerColumn=1,b.params.slidesPerGroup=1,b.params.centeredSlides=!1,b.params.spaceBetween=0,b.params.virtualTranslate=!0,b.params.setWrapperSize=!1),("fade"===b.params.effect||"flip"===b.params.effect)&&(b.params.slidesPerView=1,b.params.slidesPerColumn=1,b.params.slidesPerGroup=1,b.params.watchSlidesProgress=!0,b.params.spaceBetween=0,b.params.setWrapperSize=!1,"undefined"==typeof h&&(b.params.virtualTranslate=!0)),b.params.grabCursor&&b.support.touch&&(b.params.grabCursor=!1),b.wrapper=b.container.children("."+b.params.wrapperClass),b.params.pagination&&(b.paginationContainer=a(b.params.pagination),b.params.uniqueNavElements&&"string"==typeof b.params.pagination&&b.paginationContainer.length>1&&1===b.container.find(b.params.pagination).length&&(b.paginationContainer=b.container.find(b.params.pagination)),"bullets"===b.params.paginationType&&b.params.paginationClickable?b.paginationContainer.addClass("swiper-pagination-clickable"):b.params.paginationClickable=!1,b.paginationContainer.addClass("swiper-pagination-"+b.params.paginationType)),(b.params.nextButton||b.params.prevButton)&&(b.params.nextButton&&(b.nextButton=a(b.params.nextButton),b.params.uniqueNavElements&&"string"==typeof b.params.nextButton&&b.nextButton.length>1&&1===b.container.find(b.params.nextButton).length&&(b.nextButton=b.container.find(b.params.nextButton))),b.params.prevButton&&(b.prevButton=a(b.params.prevButton),b.params.uniqueNavElements&&"string"==typeof b.params.prevButton&&b.prevButton.length>1&&1===b.container.find(b.params.prevButton).length&&(b.prevButton=b.container.find(b.params.prevButton)))),b.isHorizontal=function(){return"horizontal"===b.params.direction},b.rtl=b.isHorizontal()&&("rtl"===b.container[0].dir.toLowerCase()||"rtl"===b.container.css("direction")),b.rtl&&b.classNames.push("swiper-container-rtl"),b.rtl&&(b.wrongRTL="-webkit-box"===b.wrapper.css("display")),b.params.slidesPerColumn>1&&b.classNames.push("swiper-container-multirow"),b.device.android&&b.classNames.push("swiper-container-android"),b.container.addClass(b.classNames.join(" ")),b.translate=0,b.progress=0,b.velocity=0,b.lockSwipeToNext=function(){b.params.allowSwipeToNext=!1},b.lockSwipeToPrev=function(){b.params.allowSwipeToPrev=!1},b.lockSwipes=function(){b.params.allowSwipeToNext=b.params.allowSwipeToPrev=!1},b.unlockSwipeToNext=function(){b.params.allowSwipeToNext=!0},b.unlockSwipeToPrev=function(){b.params.allowSwipeToPrev=!0},b.unlockSwipes=function(){b.params.allowSwipeToNext=b.params.allowSwipeToPrev=!0},b.params.grabCursor&&(b.container[0].style.cursor="move",b.container[0].style.cursor="-webkit-grab",b.container[0].style.cursor="-moz-grab",b.container[0].style.cursor="grab"),b.imagesToLoad=[],b.imagesLoaded=0,b.loadImage=function(e,a,t,r,i){function s(){i&&i()}var n;e.complete&&r?s():a?(n=new window.Image,n.onload=s,n.onerror=s,t&&(n.srcset=t),a&&(n.src=a)):s()},b.preloadImages=function(){function e(){"undefined"!=typeof b&&null!==b&&(void 0!==b.imagesLoaded&&b.imagesLoaded++,b.imagesLoaded===b.imagesToLoad.length&&(b.params.updateOnImagesReady&&b.update(),b.emit("onImagesReady",b)))}b.imagesToLoad=b.container.find("img");for(var a=0;a<b.imagesToLoad.length;a++)b.loadImage(b.imagesToLoad[a],b.imagesToLoad[a].currentSrc||b.imagesToLoad[a].getAttribute("src"),b.imagesToLoad[a].srcset||b.imagesToLoad[a].getAttribute("srcset"),!0,e)},b.autoplayTimeoutId=void 0,b.autoplaying=!1,b.autoplayPaused=!1,b.startAutoplay=function(){return"undefined"!=typeof b.autoplayTimeoutId?!1:b.params.autoplay?b.autoplaying?!1:(b.autoplaying=!0,b.emit("onAutoplayStart",b),void n()):!1},b.stopAutoplay=function(e){b.autoplayTimeoutId&&(b.autoplayTimeoutId&&clearTimeout(b.autoplayTimeoutId),b.autoplaying=!1,b.autoplayTimeoutId=void 0,b.emit("onAutoplayStop",b))},b.pauseAutoplay=function(e){b.autoplayPaused||(b.autoplayTimeoutId&&clearTimeout(b.autoplayTimeoutId),b.autoplayPaused=!0,0===e?(b.autoplayPaused=!1,n()):b.wrapper.transitionEnd(function(){b&&(b.autoplayPaused=!1,b.autoplaying?n():b.stopAutoplay())}))},b.minTranslate=function(){return-b.snapGrid[0]},b.maxTranslate=function(){return-b.snapGrid[b.snapGrid.length-1]},b.updateAutoHeight=function(){var e=b.slides.eq(b.activeIndex)[0];if("undefined"!=typeof e){var a=e.offsetHeight;a&&b.wrapper.css("height",a+"px")}},b.updateContainerSize=function(){var e,a;e="undefined"!=typeof b.params.width?b.params.width:b.container[0].clientWidth,a="undefined"!=typeof b.params.height?b.params.height:b.container[0].clientHeight,0===e&&b.isHorizontal()||0===a&&!b.isHorizontal()||(e=e-parseInt(b.container.css("padding-left"),10)-parseInt(b.container.css("padding-right"),10),a=a-parseInt(b.container.css("padding-top"),10)-parseInt(b.container.css("padding-bottom"),10),b.width=e,b.height=a,b.size=b.isHorizontal()?b.width:b.height)},b.updateSlidesSize=function(){b.slides=b.wrapper.children("."+b.params.slideClass),b.snapGrid=[],b.slidesGrid=[],b.slidesSizesGrid=[];var e,a=b.params.spaceBetween,t=-b.params.slidesOffsetBefore,r=0,i=0;if("undefined"!=typeof b.size){"string"==typeof a&&a.indexOf("%")>=0&&(a=parseFloat(a.replace("%",""))/100*b.size),b.virtualSize=-a,b.rtl?b.slides.css({marginLeft:"",marginTop:""}):b.slides.css({marginRight:"",marginBottom:""});var n;b.params.slidesPerColumn>1&&(n=Math.floor(b.slides.length/b.params.slidesPerColumn)===b.slides.length/b.params.slidesPerColumn?b.slides.length:Math.ceil(b.slides.length/b.params.slidesPerColumn)*b.params.slidesPerColumn,"auto"!==b.params.slidesPerView&&"row"===b.params.slidesPerColumnFill&&(n=Math.max(n,b.params.slidesPerView*b.params.slidesPerColumn)));var o,l=b.params.slidesPerColumn,p=n/l,d=p-(b.params.slidesPerColumn*p-b.slides.length);for(e=0;e<b.slides.length;e++){o=0;var u=b.slides.eq(e);if(b.params.slidesPerColumn>1){var c,m,h;"column"===b.params.slidesPerColumnFill?(m=Math.floor(e/l),h=e-m*l,(m>d||m===d&&h===l-1)&&++h>=l&&(h=0,m++),c=m+h*n/l,u.css({"-webkit-box-ordinal-group":c,"-moz-box-ordinal-group":c,"-ms-flex-order":c,"-webkit-order":c,order:c})):(h=Math.floor(e/p),m=e-h*p),u.css({"margin-top":0!==h&&b.params.spaceBetween&&b.params.spaceBetween+"px"}).attr("data-swiper-column",m).attr("data-swiper-row",h)}"none"!==u.css("display")&&("auto"===b.params.slidesPerView?(o=b.isHorizontal()?u.outerWidth(!0):u.outerHeight(!0),b.params.roundLengths&&(o=s(o))):(o=(b.size-(b.params.slidesPerView-1)*a)/b.params.slidesPerView,b.params.roundLengths&&(o=s(o)),b.isHorizontal()?b.slides[e].style.width=o+"px":b.slides[e].style.height=o+"px"),b.slides[e].swiperSlideSize=o,b.slidesSizesGrid.push(o),b.params.centeredSlides?(t=t+o/2+r/2+a,0===e&&(t=t-b.size/2-a),Math.abs(t)<.001&&(t=0),i%b.params.slidesPerGroup===0&&b.snapGrid.push(t),b.slidesGrid.push(t)):(i%b.params.slidesPerGroup===0&&b.snapGrid.push(t),b.slidesGrid.push(t),t=t+o+a),b.virtualSize+=o+a,r=o,i++)}b.virtualSize=Math.max(b.virtualSize,b.size)+b.params.slidesOffsetAfter;var f;if(b.rtl&&b.wrongRTL&&("slide"===b.params.effect||"coverflow"===b.params.effect)&&b.wrapper.css({width:b.virtualSize+b.params.spaceBetween+"px"}),(!b.support.flexbox||b.params.setWrapperSize)&&(b.isHorizontal()?b.wrapper.css({width:b.virtualSize+b.params.spaceBetween+"px"}):b.wrapper.css({height:b.virtualSize+b.params.spaceBetween+"px"})),b.params.slidesPerColumn>1&&(b.virtualSize=(o+b.params.spaceBetween)*n,b.virtualSize=Math.ceil(b.virtualSize/b.params.slidesPerColumn)-b.params.spaceBetween,b.wrapper.css({width:b.virtualSize+b.params.spaceBetween+"px"}),b.params.centeredSlides)){for(f=[],e=0;e<b.snapGrid.length;e++)b.snapGrid[e]<b.virtualSize+b.snapGrid[0]&&f.push(b.snapGrid[e]);b.snapGrid=f}if(!b.params.centeredSlides){for(f=[],e=0;e<b.snapGrid.length;e++)b.snapGrid[e]<=b.virtualSize-b.size&&f.push(b.snapGrid[e]);b.snapGrid=f,Math.floor(b.virtualSize-b.size)-Math.floor(b.snapGrid[b.snapGrid.length-1])>1&&b.snapGrid.push(b.virtualSize-b.size)}0===b.snapGrid.length&&(b.snapGrid=[0]),0!==b.params.spaceBetween&&(b.isHorizontal()?b.rtl?b.slides.css({marginLeft:a+"px"}):b.slides.css({marginRight:a+"px"}):b.slides.css({marginBottom:a+"px"})),b.params.watchSlidesProgress&&b.updateSlidesOffset()}},b.updateSlidesOffset=function(){for(var e=0;e<b.slides.length;e++)b.slides[e].swiperSlideOffset=b.isHorizontal()?b.slides[e].offsetLeft:b.slides[e].offsetTop},b.updateSlidesProgress=function(e){if("undefined"==typeof e&&(e=b.translate||0),0!==b.slides.length){"undefined"==typeof b.slides[0].swiperSlideOffset&&b.updateSlidesOffset();var a=-e;b.rtl&&(a=e),b.slides.removeClass(b.params.slideVisibleClass);for(var t=0;t<b.slides.length;t++){var r=b.slides[t],i=(a-r.swiperSlideOffset)/(r.swiperSlideSize+b.params.spaceBetween);if(b.params.watchSlidesVisibility){var s=-(a-r.swiperSlideOffset),n=s+b.slidesSizesGrid[t],o=s>=0&&s<b.size||n>0&&n<=b.size||0>=s&&n>=b.size;o&&b.slides.eq(t).addClass(b.params.slideVisibleClass)}r.progress=b.rtl?-i:i}}},b.updateProgress=function(e){"undefined"==typeof e&&(e=b.translate||0);var a=b.maxTranslate()-b.minTranslate(),t=b.isBeginning,r=b.isEnd;0===a?(b.progress=0,b.isBeginning=b.isEnd=!0):(b.progress=(e-b.minTranslate())/a,b.isBeginning=b.progress<=0,b.isEnd=b.progress>=1),b.isBeginning&&!t&&b.emit("onReachBeginning",b),b.isEnd&&!r&&b.emit("onReachEnd",b),b.params.watchSlidesProgress&&b.updateSlidesProgress(e),b.emit("onProgress",b,b.progress)},b.updateActiveIndex=function(){var e,a,t,r=b.rtl?b.translate:-b.translate;for(a=0;a<b.slidesGrid.length;a++)"undefined"!=typeof b.slidesGrid[a+1]?r>=b.slidesGrid[a]&&r<b.slidesGrid[a+1]-(b.slidesGrid[a+1]-b.slidesGrid[a])/2?e=a:r>=b.slidesGrid[a]&&r<b.slidesGrid[a+1]&&(e=a+1):r>=b.slidesGrid[a]&&(e=a);(0>e||"undefined"==typeof e)&&(e=0),t=Math.floor(e/b.params.slidesPerGroup),t>=b.snapGrid.length&&(t=b.snapGrid.length-1),e!==b.activeIndex&&(b.snapIndex=t,b.previousIndex=b.activeIndex,b.activeIndex=e,b.updateClasses())},b.updateClasses=function(){b.slides.removeClass(b.params.slideActiveClass+" "+b.params.slideNextClass+" "+b.params.slidePrevClass);var e=b.slides.eq(b.activeIndex);e.addClass(b.params.slideActiveClass);var t=e.next("."+b.params.slideClass).addClass(b.params.slideNextClass);b.params.loop&&0===t.length&&b.slides.eq(0).addClass(b.params.slideNextClass);var r=e.prev("."+b.params.slideClass).addClass(b.params.slidePrevClass);if(b.params.loop&&0===r.length&&b.slides.eq(-1).addClass(b.params.slidePrevClass),b.paginationContainer&&b.paginationContainer.length>0){var i,s=b.params.loop?Math.ceil((b.slides.length-2*b.loopedSlides)/b.params.slidesPerGroup):b.snapGrid.length;if(b.params.loop?(i=Math.ceil((b.activeIndex-b.loopedSlides)/b.params.slidesPerGroup),i>b.slides.length-1-2*b.loopedSlides&&(i-=b.slides.length-2*b.loopedSlides),i>s-1&&(i-=s),0>i&&"bullets"!==b.params.paginationType&&(i=s+i)):i="undefined"!=typeof b.snapIndex?b.snapIndex:b.activeIndex||0,"bullets"===b.params.paginationType&&b.bullets&&b.bullets.length>0&&(b.bullets.removeClass(b.params.bulletActiveClass),b.paginationContainer.length>1?b.bullets.each(function(){a(this).index()===i&&a(this).addClass(b.params.bulletActiveClass)}):b.bullets.eq(i).addClass(b.params.bulletActiveClass)),"fraction"===b.params.paginationType&&(b.paginationContainer.find("."+b.params.paginationCurrentClass).text(i+1),b.paginationContainer.find("."+b.params.paginationTotalClass).text(s)),"progress"===b.params.paginationType){var n=(i+1)/s,o=n,l=1;b.isHorizontal()||(l=n,o=1),b.paginationContainer.find("."+b.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX("+o+") scaleY("+l+")").transition(b.params.speed)}"custom"===b.params.paginationType&&b.params.paginationCustomRender&&(b.paginationContainer.html(b.params.paginationCustomRender(b,i+1,s)),b.emit("onPaginationRendered",b,b.paginationContainer[0]))}b.params.loop||(b.params.prevButton&&b.prevButton&&b.prevButton.length>0&&(b.isBeginning?(b.prevButton.addClass(b.params.buttonDisabledClass),b.params.a11y&&b.a11y&&b.a11y.disable(b.prevButton)):(b.prevButton.removeClass(b.params.buttonDisabledClass),b.params.a11y&&b.a11y&&b.a11y.enable(b.prevButton))),b.params.nextButton&&b.nextButton&&b.nextButton.length>0&&(b.isEnd?(b.nextButton.addClass(b.params.buttonDisabledClass),b.params.a11y&&b.a11y&&b.a11y.disable(b.nextButton)):(b.nextButton.removeClass(b.params.buttonDisabledClass),b.params.a11y&&b.a11y&&b.a11y.enable(b.nextButton))))},b.updatePagination=function(){if(b.params.pagination&&b.paginationContainer&&b.paginationContainer.length>0){var e="";if("bullets"===b.params.paginationType){for(var a=b.params.loop?Math.ceil((b.slides.length-2*b.loopedSlides)/b.params.slidesPerGroup):b.snapGrid.length,t=0;a>t;t++)e+=b.params.paginationBulletRender?b.params.paginationBulletRender(t,b.params.bulletClass):"<"+b.params.paginationElement+' class="'+b.params.bulletClass+'"></'+b.params.paginationElement+">";b.paginationContainer.html(e),b.bullets=b.paginationContainer.find("."+b.params.bulletClass),b.params.paginationClickable&&b.params.a11y&&b.a11y&&b.a11y.initPagination()}"fraction"===b.params.paginationType&&(e=b.params.paginationFractionRender?b.params.paginationFractionRender(b,b.params.paginationCurrentClass,b.params.paginationTotalClass):'<span class="'+b.params.paginationCurrentClass+'"></span> / <span class="'+b.params.paginationTotalClass+'"></span>',b.paginationContainer.html(e)),"progress"===b.params.paginationType&&(e=b.params.paginationProgressRender?b.params.paginationProgressRender(b,b.params.paginationProgressbarClass):'<span class="'+b.params.paginationProgressbarClass+'"></span>',b.paginationContainer.html(e)),"custom"!==b.params.paginationType&&b.emit("onPaginationRendered",b,b.paginationContainer[0])}},b.update=function(e){function a(){r=Math.min(Math.max(b.translate,b.maxTranslate()),b.minTranslate()),b.setWrapperTranslate(r),b.updateActiveIndex(),b.updateClasses()}if(b.updateContainerSize(),b.updateSlidesSize(),b.updateProgress(),b.updatePagination(),b.updateClasses(),b.params.scrollbar&&b.scrollbar&&b.scrollbar.set(),e){var t,r;b.controller&&b.controller.spline&&(b.controller.spline=void 0),b.params.freeMode?(a(),b.params.autoHeight&&b.updateAutoHeight()):(t=("auto"===b.params.slidesPerView||b.params.slidesPerView>1)&&b.isEnd&&!b.params.centeredSlides?b.slideTo(b.slides.length-1,0,!1,!0):b.slideTo(b.activeIndex,0,!1,!0),t||a())}else b.params.autoHeight&&b.updateAutoHeight()},b.onResize=function(e){b.params.breakpoints&&b.setBreakpoint();var a=b.params.allowSwipeToPrev,t=b.params.allowSwipeToNext;b.params.allowSwipeToPrev=b.params.allowSwipeToNext=!0,b.updateContainerSize(),b.updateSlidesSize(),("auto"===b.params.slidesPerView||b.params.freeMode||e)&&b.updatePagination(),b.params.scrollbar&&b.scrollbar&&b.scrollbar.set(),b.controller&&b.controller.spline&&(b.controller.spline=void 0);var r=!1;if(b.params.freeMode){var i=Math.min(Math.max(b.translate,b.maxTranslate()),b.minTranslate());b.setWrapperTranslate(i),b.updateActiveIndex(),b.updateClasses(),b.params.autoHeight&&b.updateAutoHeight()}else b.updateClasses(),r=("auto"===b.params.slidesPerView||b.params.slidesPerView>1)&&b.isEnd&&!b.params.centeredSlides?b.slideTo(b.slides.length-1,0,!1,!0):b.slideTo(b.activeIndex,0,!1,!0);b.params.lazyLoading&&!r&&b.lazy&&b.lazy.load(),b.params.allowSwipeToPrev=a,b.params.allowSwipeToNext=t};var T=["mousedown","mousemove","mouseup"];window.navigator.pointerEnabled?T=["pointerdown","pointermove","pointerup"]:window.navigator.msPointerEnabled&&(T=["MSPointerDown","MSPointerMove","MSPointerUp"]),b.touchEvents={start:b.support.touch||!b.params.simulateTouch?"touchstart":T[0],move:b.support.touch||!b.params.simulateTouch?"touchmove":T[1],end:b.support.touch||!b.params.simulateTouch?"touchend":T[2]},(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&("container"===b.params.touchEventsTarget?b.container:b.wrapper).addClass("swiper-wp8-"+b.params.direction),b.initEvents=function(e){var a=e?"off":"on",t=e?"removeEventListener":"addEventListener",r="container"===b.params.touchEventsTarget?b.container[0]:b.wrapper[0],s=b.support.touch?r:document,n=b.params.nested?!0:!1;b.browser.ie?(r[t](b.touchEvents.start,b.onTouchStart,!1),s[t](b.touchEvents.move,b.onTouchMove,n),s[t](b.touchEvents.end,b.onTouchEnd,!1)):(b.support.touch&&(r[t](b.touchEvents.start,b.onTouchStart,!1),r[t](b.touchEvents.move,b.onTouchMove,n),r[t](b.touchEvents.end,b.onTouchEnd,!1)),!i.simulateTouch||b.device.ios||b.device.android||(r[t]("mousedown",b.onTouchStart,!1),document[t]("mousemove",b.onTouchMove,n),document[t]("mouseup",b.onTouchEnd,!1))),window[t]("resize",b.onResize),b.params.nextButton&&b.nextButton&&b.nextButton.length>0&&(b.nextButton[a]("click",b.onClickNext),b.params.a11y&&b.a11y&&b.nextButton[a]("keydown",b.a11y.onEnterKey)),b.params.prevButton&&b.prevButton&&b.prevButton.length>0&&(b.prevButton[a]("click",b.onClickPrev),b.params.a11y&&b.a11y&&b.prevButton[a]("keydown",b.a11y.onEnterKey)),b.params.pagination&&b.params.paginationClickable&&(b.paginationContainer[a]("click","."+b.params.bulletClass,b.onClickIndex),b.params.a11y&&b.a11y&&b.paginationContainer[a]("keydown","."+b.params.bulletClass,b.a11y.onEnterKey)),(b.params.preventClicks||b.params.preventClicksPropagation)&&r[t]("click",b.preventClicks,!0)},b.attachEvents=function(){b.initEvents()},b.detachEvents=function(){b.initEvents(!0)},b.allowClick=!0,b.preventClicks=function(e){b.allowClick||(b.params.preventClicks&&e.preventDefault(),b.params.preventClicksPropagation&&b.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))},b.onClickNext=function(e){e.preventDefault(),(!b.isEnd||b.params.loop)&&b.slideNext()},b.onClickPrev=function(e){e.preventDefault(),(!b.isBeginning||b.params.loop)&&b.slidePrev()},b.onClickIndex=function(e){e.preventDefault();var t=a(this).index()*b.params.slidesPerGroup;b.params.loop&&(t+=b.loopedSlides),b.slideTo(t)},b.updateClickedSlide=function(e){var t=o(e,"."+b.params.slideClass),r=!1;if(t)for(var i=0;i<b.slides.length;i++)b.slides[i]===t&&(r=!0);if(!t||!r)return b.clickedSlide=void 0,void(b.clickedIndex=void 0);if(b.clickedSlide=t,b.clickedIndex=a(t).index(),b.params.slideToClickedSlide&&void 0!==b.clickedIndex&&b.clickedIndex!==b.activeIndex){var s,n=b.clickedIndex;if(b.params.loop){if(b.animating)return;s=a(b.clickedSlide).attr("data-swiper-slide-index"),b.params.centeredSlides?n<b.loopedSlides-b.params.slidesPerView/2||n>b.slides.length-b.loopedSlides+b.params.slidesPerView/2?(b.fixLoop(),n=b.wrapper.children("."+b.params.slideClass+'[data-swiper-slide-index="'+s+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){b.slideTo(n)},0)):b.slideTo(n):n>b.slides.length-b.params.slidesPerView?(b.fixLoop(),n=b.wrapper.children("."+b.params.slideClass+'[data-swiper-slide-index="'+s+'"]:not(.swiper-slide-duplicate)').eq(0).index(),setTimeout(function(){b.slideTo(n)},0)):b.slideTo(n)}else b.slideTo(n)}};var S,C,z,M,E,P,k,I,L,B,D="input, select, textarea, button",H=Date.now(),A=[];b.animating=!1,b.touches={startX:0,startY:0,currentX:0,currentY:0,diff:0};var G,O;if(b.onTouchStart=function(e){if(e.originalEvent&&(e=e.originalEvent),G="touchstart"===e.type,G||!("which"in e)||3!==e.which){if(b.params.noSwiping&&o(e,"."+b.params.noSwipingClass))return void(b.allowClick=!0);if(!b.params.swipeHandler||o(e,b.params.swipeHandler)){var t=b.touches.currentX="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,r=b.touches.currentY="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY;if(!(b.device.ios&&b.params.iOSEdgeSwipeDetection&&t<=b.params.iOSEdgeSwipeThreshold)){if(S=!0,C=!1,z=!0,E=void 0,O=void 0,b.touches.startX=t,b.touches.startY=r,M=Date.now(),b.allowClick=!0,b.updateContainerSize(),b.swipeDirection=void 0,b.params.threshold>0&&(I=!1),"touchstart"!==e.type){var i=!0;a(e.target).is(D)&&(i=!1),document.activeElement&&a(document.activeElement).is(D)&&document.activeElement.blur(),i&&e.preventDefault()}b.emit("onTouchStart",b,e)}}}},b.onTouchMove=function(e){if(e.originalEvent&&(e=e.originalEvent),!G||"mousemove"!==e.type){if(e.preventedByNestedSwiper)return b.touches.startX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,void(b.touches.startY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY);if(b.params.onlyExternal)return b.allowClick=!1,void(S&&(b.touches.startX=b.touches.currentX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,b.touches.startY=b.touches.currentY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,M=Date.now()));if(G&&document.activeElement&&e.target===document.activeElement&&a(e.target).is(D))return C=!0,void(b.allowClick=!1);if(z&&b.emit("onTouchMove",b,e),!(e.targetTouches&&e.targetTouches.length>1)){if(b.touches.currentX="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,b.touches.currentY="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,"undefined"==typeof E){var t=180*Math.atan2(Math.abs(b.touches.currentY-b.touches.startY),Math.abs(b.touches.currentX-b.touches.startX))/Math.PI;E=b.isHorizontal()?t>b.params.touchAngle:90-t>b.params.touchAngle}if(E&&b.emit("onTouchMoveOpposite",b,e),"undefined"==typeof O&&b.browser.ieTouch&&(b.touches.currentX!==b.touches.startX||b.touches.currentY!==b.touches.startY)&&(O=!0),S){if(E)return void(S=!1);if(O||!b.browser.ieTouch){b.allowClick=!1,b.emit("onSliderMove",b,e),e.preventDefault(),b.params.touchMoveStopPropagation&&!b.params.nested&&e.stopPropagation(),C||(i.loop&&b.fixLoop(),k=b.getWrapperTranslate(),b.setWrapperTransition(0),b.animating&&b.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),b.params.auto
Download .txt
gitextract_0wolcq7b/

├── LICENSE
├── README.md
├── docs/
│   └── install.md
├── my_uwsgi.ini
├── requirements.txt
├── src/
│   ├── blog/
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── context_processors.py
│   │   ├── models.py
│   │   ├── templatetags/
│   │   │   ├── __init__.py
│   │   │   └── custom_filter.py
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── django_blog/
│   │   ├── __init__.py
│   │   ├── blogroll.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   ├── util.py
│   │   └── wsgi.py
│   ├── manage.py
│   ├── static/
│   │   ├── 404/
│   │   │   ├── css
│   │   │   └── style.css
│   │   ├── css/
│   │   │   ├── animation.css
│   │   │   ├── default.css
│   │   │   ├── flexslider.css
│   │   │   ├── font-icon.css
│   │   │   ├── lightbox.css
│   │   │   ├── login.css
│   │   │   ├── markdown.css
│   │   │   ├── public.css
│   │   │   ├── skin_1.css
│   │   │   ├── skin_2.css
│   │   │   └── skin_3.css
│   │   ├── cur/
│   │   │   ├── default.cur
│   │   │   └── link.cur
│   │   ├── js/
│   │   │   ├── album.js
│   │   │   ├── jquery.flexslider-min.js
│   │   │   ├── layer/
│   │   │   │   ├── extend/
│   │   │   │   │   └── layer.ext.js
│   │   │   │   ├── layer.js
│   │   │   │   └── skin/
│   │   │   │       ├── layer.css
│   │   │   │       └── layer.ext.css
│   │   │   ├── lightbox.js
│   │   │   ├── load.js
│   │   │   ├── my.js
│   │   │   ├── skin.js
│   │   │   ├── superbg-custom.js
│   │   │   └── tooltip.js
│   │   ├── layui/
│   │   │   ├── css/
│   │   │   │   ├── layui.css
│   │   │   │   ├── layui.mobile.css
│   │   │   │   └── modules/
│   │   │   │       ├── code.css
│   │   │   │       └── layer/
│   │   │   │           └── default/
│   │   │   │               └── layer.css
│   │   │   ├── lay/
│   │   │   │   └── modules/
│   │   │   │       ├── jquery.js
│   │   │   │       ├── layer.js
│   │   │   │       └── mobile.js
│   │   │   ├── layui.all.js
│   │   │   └── layui.js
│   │   └── prism/
│   │       ├── prism.css
│   │       └── prism.js
│   └── templates/
│       ├── 404.html
│       ├── blog/
│       │   ├── about.html
│       │   ├── archive.html
│       │   ├── base.html
│       │   ├── blogroll.html
│       │   ├── category.html
│       │   ├── component/
│       │   │   ├── auto_push_baidu.html
│       │   │   ├── blog_list.html
│       │   │   ├── changyan.html
│       │   │   └── pagination.html
│       │   ├── detail.html
│       │   ├── footer.html
│       │   ├── header.html
│       │   ├── index.html
│       │   ├── link.html
│       │   ├── list.html
│       │   ├── message.html
│       │   ├── message_board.html
│       │   ├── right.html
│       │   ├── search.html
│       │   └── tag.html
│       ├── robots.txt
│       └── sitemap.txt
└── uwsgi_params
Download .txt
SYMBOL INDEX (300 symbols across 20 files)

FILE: src/blog/admin.py
  class ArticleAdmin (line 10) | class ArticleAdmin(admin.ModelAdmin):
  class CategoryAdmin (line 18) | class CategoryAdmin(admin.ModelAdmin):
  class TagAdmin (line 23) | class TagAdmin(admin.ModelAdmin):

FILE: src/blog/apps.py
  class BlogConfig (line 6) | class BlogConfig(AppConfig):

FILE: src/blog/context_processors.py
  function sidebar (line 20) | def sidebar(request):

FILE: src/blog/models.py
  class Tag (line 20) | class Tag(models.Model):
    method __str__ (line 23) | def __str__(self):
  class Article (line 27) | class Article(models.Model):
    method __str__ (line 39) | def __str__(self):
    method sourceUrl (line 42) | def sourceUrl(self):
    method viewed (line 46) | def viewed(self):
    method commenced (line 54) | def commenced(self):
    class Meta (line 62) | class Meta:  # 按时间降序
  class Category (line 66) | class Category(models.Model):
    class Meta (line 71) | class Meta:
    method __str__ (line 76) | def __str__(self):
  class Comment (line 80) | class Comment(models.Model):

FILE: src/blog/templatetags/custom_filter.py
  function slice_list (line 24) | def slice_list(value, index):
  function custom_markdown (line 30) | def custom_markdown(value):
  function tag2string (line 44) | def tag2string(value):

FILE: src/blog/views.py
  function get_page (line 12) | def get_page(request):
  function index (line 17) | def index(request):
  function blog_list (line 23) | def blog_list(request):
  function category (line 36) | def category(request, name):
  function tag (line 51) | def tag(request, name):
  function archive (line 67) | def archive(request):
  function message (line 86) | def message(request):
  function get_comment (line 91) | def get_comment(request):
  function detail (line 113) | def detail(request, pk):
  function search (line 125) | def search(request):
  function page_not_found_error (line 139) | def page_not_found_error(request, exception):
  function page_error (line 143) | def page_error(request):

FILE: src/django_blog/util.py
  class PageInfo (line 18) | class PageInfo(object):
    method __init__ (line 20) | def __init__(self, page, total, limit=8):
    method index_start (line 34) | def index_start(self):
    method index_end (line 38) | def index_end(self):
    method current_page (line 42) | def current_page(self):
    method total_page (line 46) | def total_page(self):
    method total_number (line 50) | def total_number(self):

FILE: src/static/js/album.js
  function init (line 17) | function init() {
  function getNbCols (line 31) | function getNbCols() {
  function recordAndRemove (line 43) | function recordAndRemove() {
  function setColPos (line 56) | function setColPos() {
  function parseSelector (line 65) | function parseSelector(selector) {
  function print (line 68) | function print() {
  function getAttr (line 92) | function getAttr(attr, type) {

FILE: src/static/js/jquery.flexslider-min.js
  function e (line 15) | function e(e){e.fn.swiper=function(a){var r;return e(this).each(function...
  function s (line 15) | function s(e){return Math.floor(e)}
  function n (line 15) | function n(){b.autoplayTimeoutId=setTimeout(function(){b.params.loop?(b....
  function o (line 15) | function o(e,t){var r=a(e.target);if(!r.is(t))if("string"==typeof t)r=r....
  function l (line 15) | function l(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMuta...
  function p (line 15) | function p(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.ch...
  function d (line 15) | function d(e){e.originalEvent&&(e=e.originalEvent);var a=b.mousewheel.ev...
  function u (line 15) | function u(e,t){e=a(e);var r,i,s,n=b.rtl?-1:1;r=e.attr("data-swiper-para...
  function c (line 15) | function c(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"...
  function s (line 15) | function s(){i&&i()}
  function e (line 15) | function e(){"undefined"!=typeof b&&null!==b&&(void 0!==b.imagesLoaded&&...
  function a (line 15) | function a(){r=Math.min(Math.max(b.translate,b.maxTranslate()),b.minTran...
  function r (line 16) | function r(a){e=a.rtl&&"horizontal"===a.params.direction?-b.translate:b....
  function r (line 16) | function r(a){a.setWrapperTransition(e,b),0!==e&&(a.onTransitionStart(),...
  function s (line 17) | function s(e){var i=e.target;if(a(i).is(t))r.call(i,e);else for(var s=a(...
  function i (line 17) | function i(n){t(n),s.off(e,a,i,r)}
  function a (line 17) | function a(s){if(s.target===this)for(e.call(this,s),t=0;t<r.length;t++)i...
  function a (line 17) | function a(s){if(s.target===this)for(e.call(this,s),t=0;t<r.length;t++)i...

FILE: src/static/js/layer/extend/layer.ext.js
  function e (line 2) | function e(a,b,c){var d=new Image;d.onload=function(){d.onload=null,b(d)...

FILE: src/static/js/layer/layer.js
  function b (line 2) | function b(a){a=g.find(a),a.height(i[1]-j-k-2*(0|parseFloat(a.css("paddi...
  function a (line 2) | function a(){var a=g.cancel&&g.cancel(b.index);a===!1||f.close(b.index)}
  function b (line 2) | function b(){a.css({top:f+(e.config.fix?d.scrollTop():0)})}

FILE: src/static/js/lightbox.js
  function run (line 60) | function run(selector, userOptions) {
  function buildOverlay (line 86) | function buildOverlay() {
  function bindEvents (line 125) | function bindEvents() {
  function prepareOverlay (line 185) | function prepareOverlay(galleryIndex) {
  function setOptions (line 203) | function setOptions(newOptions) {
  function returnImageContainer (line 222) | function returnImageContainer() {
  function showOverlay (line 228) | function showOverlay(index) {
  function hideOverlay (line 246) | function hideOverlay() {
  function loadImage (line 257) | function loadImage(index, callback) {
  function getImageSrc (line 302) | function getImageSrc(image) {
  function showNextImage (line 331) | function showNextImage() {
  function showPreviousImage (line 344) | function showPreviousImage() {
  function updateOffset (line 357) | function updateOffset() {
  function testTransformsSupport (line 376) | function testTransformsSupport() {
  function preloadNext (line 383) | function preloadNext(index) {
  function preloadPrev (line 389) | function preloadPrev(index) {
  function bind (line 395) | function bind(element, event, callback) {

FILE: src/static/js/load.js
  function PageLoaded (line 64) | function PageLoaded() {

FILE: src/static/js/skin.js
  function setActiveStyleSheet (line 3) | function setActiveStyleSheet(title) {
  function getActiveStyleSheet (line 13) | function getActiveStyleSheet() {
  function getPreferredStyleSheet (line 21) | function getPreferredStyleSheet() {
  function createCookie (line 32) | function createCookie(name,value,days) {
  function readCookie (line 42) | function readCookie(name) {

FILE: src/static/layui/lay/modules/jquery.js
  function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
  function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
  function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
  function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
  function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
  function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
  function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
  function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
  function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
  function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
  function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
  function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
  function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
  function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
  function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
  function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
  function v (line 2) | function v(){return!0}
  function x (line 2) | function x(){return!1}
  function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
  function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
  function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
  function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
  function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
  function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
  function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
  function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
  function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
  function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
  function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
  function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
  function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
  function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
  function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
  function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
  function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
  function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
  function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
  function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
  function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
  function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
  function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
  function z (line 2) | function z(e){return pe.attr(e,"class")||""}
  function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
  function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
  function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
  function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
  function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
  function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
  function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
  function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
  function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
  function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 2) | function r(e){return e[P]=!0,e}
  function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
  function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
  function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
  function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function f (line 2) | function f(){}
  function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
  function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
  function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
  function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
  function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
  function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
  function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
  function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
  function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...

FILE: src/static/layui/lay/modules/layer.js
  function e (line 2) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
  function o (line 2) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...

FILE: src/static/layui/lay/modules/mobile.js
  function t (line 2) | function t(t){return null==t?String(t):J[W.call(t)]||"object"}
  function e (line 2) | function e(e){return"function"==t(e)}
  function n (line 2) | function n(t){return null!=t&&t==t.window}
  function r (line 2) | function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}
  function i (line 2) | function i(e){return"object"==t(e)}
  function o (line 2) | function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.proto...
  function a (line 2) | function a(t){var e=!!t&&"length"in t&&t.length,r=T.type(t);return"funct...
  function s (line 2) | function s(t){return A.call(t,function(t){return null!=t})}
  function u (line 2) | function u(t){return t.length>0?T.fn.concat.apply([],t):t}
  function c (line 2) | function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/...
  function l (line 2) | function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}
  function f (line 2) | function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}
  function h (line 2) | function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendCh...
  function p (line 2) | function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes...
  function d (line 2) | function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.l...
  function m (line 2) | function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(...
  function v (line 2) | function v(t,e){return null==e?T(t):T(t).filter(e)}
  function g (line 2) | function g(t,n,r,i){return e(n)?n.call(t,r,i):n}
  function y (line 2) | function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}
  function x (line 2) | function x(t,e){var n=t.className||"",r=n&&n.baseVal!==E;return e===E?r?...
  function b (line 2) | function b(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""=...
  function w (line 2) | function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.child...
  function e (line 2) | function e(t){return t._zid||(t._zid=h++)}
  function n (line 2) | function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).fil...
  function r (line 2) | function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort()...
  function i (line 2) | function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$...
  function o (line 2) | function o(t,e){return t.del&&!y&&t.e in x||!!e}
  function a (line 2) | function a(t){return b[t]||y&&x[t]||t}
  function s (line 2) | function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).for...
  function u (line 2) | function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e)...
  function c (line 2) | function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,funct...
  function l (line 2) | function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||...
  function e (line 2) | function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefault...
  function n (line 2) | function n(t,n,r,i){if(t.global)return e(n||x,r,i)}
  function r (line 2) | function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}
  function i (line 2) | function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}
  function o (line 2) | function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(...
  function a (line 2) | function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),...
  function s (line 2) | function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectW...
  function u (line 2) | function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComp...
  function c (line 2) | function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.d...
  function l (line 2) | function l(){}
  function f (line 2) | function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json...
  function h (line 2) | function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}
  function p (line 2) | function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t...
  function d (line 2) | function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunct...
  function m (line 2) | function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,f...

FILE: src/static/layui/layui.all.js
  function c (line 2) | function c(e,t){var r="PLaySTATION 3"===navigator.platform?/^complete$/:...
  function s (line 2) | function s(){l.push(layui[d]),e.length>1?p.use(e.slice(1),r,l):"function...
  function n (line 2) | function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"func...
  function r (line 2) | function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){ret...
  function i (line 2) | function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
  function o (line 2) | function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]...
  function a (line 2) | function a(){re.addEventListener?(re.removeEventListener("DOMContentLoad...
  function s (line 2) | function s(){(re.addEventListener||"load"===e.event.type||"complete"===r...
  function u (line 2) | function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace...
  function l (line 2) | function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&...
  function c (line 2) | function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.c...
  function f (line 2) | function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe...
  function d (line 2) | function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:functi...
  function p (line 2) | function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.crea...
  function h (line 2) | function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName...
  function g (line 2) | function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval"...
  function m (line 2) | function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}
  function y (line 2) | function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x...
  function v (line 2) | function v(){return!0}
  function x (line 2) | function x(){return!1}
  function b (line 2) | function b(){try{return re.activeElement}catch(e){}}
  function w (line 2) | function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof ...
  function T (line 2) | function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeTy...
  function C (line 2) | function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}
  function E (line 2) | function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
  function N (line 2) | function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e...
  function k (line 2) | function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase...
  function S (line 2) | function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-...
  function A (line 2) | function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)...
  function D (line 2) | function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n...
  function j (line 2) | function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(u...
  function L (line 2) | function L(e,t){return{get:function(){return e()?void delete this.get:(t...
  function H (line 2) | function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e....
  function q (line 2) | function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style...
  function _ (line 2) | function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
  function F (line 2) | function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
  function M (line 2) | function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=...
  function O (line 2) | function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}
  function R (line 2) | function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}
  function P (line 2) | function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[...
  function B (line 2) | function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]...
  function W (line 2) | function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType...
  function I (line 2) | function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e...
  function $ (line 2) | function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().alwa...
  function z (line 2) | function z(e){return pe.attr(e,"class")||""}
  function X (line 2) | function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
  function U (line 2) | function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],...
  function V (line 2) | function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)voi...
  function Y (line 2) | function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];...
  function J (line 2) | function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for...
  function G (line 2) | function G(e){return e.style&&e.style.display||pe.css(e,"display")}
  function K (line 2) | function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.ty...
  function Q (line 2) | function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn...
  function Z (line 2) | function Z(){try{return new e.XMLHttpRequest}catch(t){}}
  function ee (line 2) | function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
  function te (line 2) | function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e...
  function t (line 2) | function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeT...
  function n (line 2) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
  function r (line 2) | function r(e){return e[P]=!0,e}
  function i (line 2) | function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){ret...
  function o (line 2) | function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]...
  function a (line 2) | function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
  function s (line 2) | function s(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
  function u (line 2) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
  function l (line 2) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
  function c (line 2) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
  function f (line 2) | function f(){}
  function d (line 2) | function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}
  function p (line 2) | function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first...
  function h (line 2) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
  function g (line 2) | function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}
  function m (line 2) | function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o...
  function y (line 2) | function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r...
  function v (line 2) | function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.re...
  function x (line 2) | function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var ...
  function t (line 4) | function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssTe...
  function r (line 4) | function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c...
  function e (line 5) | function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}
  function o (line 5) | function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onlo...
  function n (line 5) | function n(){a=t[l](function(){o.each(function(){var t=e(this),i=t.width...
  function n (line 5) | function n(t,n,o){var r=e(this),l=e.data(this,u)||{};l.w=n!==i?n:r.width...

FILE: src/static/layui/layui.js
  function c (line 2) | function c(e,t){var r="PLaySTATION 3"===navigator.platform?/^complete$/:...
  function s (line 2) | function s(){l.push(layui[d]),e.length>1?p.use(e.slice(1),r,l):"function...

FILE: src/static/prism/prism.js
  function n (line 14) | function n(){var e=new o(i,{text:function(){return t.code}});e.on("succe...
  function r (line 14) | function r(){setTimeout(function(){i.textContent="Copy"},5e3)}
Condensed preview — 84 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (946K chars).
[
  {
    "path": "LICENSE",
    "chars": 1065,
    "preview": "MIT License\n\nCopyright (c) 2020 J_hao104\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\no"
  },
  {
    "path": "README.md",
    "chars": 1303,
    "preview": "## Django搭建博客\n![py35](https://img.shields.io/badge/Python-3.5-red.svg) \n![Django2.2](https://img.shields.io/badge/Django"
  },
  {
    "path": "docs/install.md",
    "chars": 572,
    "preview": "## 安装文档\n\n### 源码安装\n\n* 下载代码\n\n```shell script\ngit clone https://github.com/jhao104/django-blog.git\n```\n\n* 安装依赖\n\n```shell sc"
  },
  {
    "path": "my_uwsgi.ini",
    "chars": 468,
    "preview": "[uwsgi]\n\n# Django-related settings\n\nsocket = :8001\n\n# the base directory (full path)\nchdir           = /home/ubuntu/web_"
  },
  {
    "path": "requirements.txt",
    "chars": 44,
    "preview": "Django==2.2.18\nMarkdown==3.3\nPyMySQL==0.10.1"
  },
  {
    "path": "src/blog/__init__.py",
    "chars": 45,
    "preview": "import pymysql\n\npymysql.install_as_MySQLdb()\n"
  },
  {
    "path": "src/blog/admin.py",
    "chars": 498,
    "preview": "from django.contrib import admin\n\n# Register your models here.\n\n\nfrom blog.models import Tag, Article, Category\n\n\n@admin"
  },
  {
    "path": "src/blog/apps.py",
    "chars": 124,
    "preview": "from __future__ import unicode_literals\n\nfrom django.apps import AppConfig\n\n\nclass BlogConfig(AppConfig):\n    name = 'bl"
  },
  {
    "path": "src/blog/context_processors.py",
    "chars": 1039,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     context_processors.py  \n"
  },
  {
    "path": "src/blog/models.py",
    "chars": 2520,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     models.py\n   Description"
  },
  {
    "path": "src/blog/templatetags/__init__.py",
    "chars": 355,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     __init__.py  \n   Descrip"
  },
  {
    "path": "src/blog/templatetags/custom_filter.py",
    "chars": 1501,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     custom_filter.py  \n   De"
  },
  {
    "path": "src/blog/tests.py",
    "chars": 60,
    "preview": "from django.test import TestCase\n\n# Create your tests here.\n"
  },
  {
    "path": "src/blog/urls.py",
    "chars": 913,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     urls.py  \n   Description"
  },
  {
    "path": "src/blog/views.py",
    "chars": 4442,
    "preview": "# -*- coding: utf-8 -*-\n# Create your views here.\n\nimport json\nfrom django.http import JsonResponse\nfrom django_blog.uti"
  },
  {
    "path": "src/django_blog/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "src/django_blog/blogroll.py",
    "chars": 791,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     blogroll\n   Description "
  },
  {
    "path": "src/django_blog/settings.py",
    "chars": 3608,
    "preview": "\"\"\"\nDjango settings for django_blog project.\n\nGenerated by 'django-admin startproject' using Django 1.10.2.\n\nFor more in"
  },
  {
    "path": "src/django_blog/urls.py",
    "chars": 977,
    "preview": "\"\"\"django_blog URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    http"
  },
  {
    "path": "src/django_blog/util.py",
    "chars": 1103,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\n-------------------------------------------------\n   File Name:     util\n   Description :\n  "
  },
  {
    "path": "src/django_blog/wsgi.py",
    "chars": 400,
    "preview": "\"\"\"\nWSGI config for django_blog project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``."
  },
  {
    "path": "src/manage.py",
    "chars": 809,
    "preview": "#!/usr/bin/env python\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE"
  },
  {
    "path": "src/static/404/css",
    "chars": 9524,
    "preview": "/* cyrillic-ext */\n@font-face {\n  font-family: 'Ubuntu';\n  font-style: italic;\n  font-weight: 300;\n  src: local('Ubuntu "
  },
  {
    "path": "src/static/404/style.css",
    "chars": 3883,
    "preview": "/* === RESET === */\n*, html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, label, fieldset, inpu"
  },
  {
    "path": "src/static/css/animation.css",
    "chars": 4288,
    "preview": "\n@-webkit-keyframes fuzuo{\n\t0%{transform:translateX(-300px);-webkit-transform:translateX(-300px);opacity:0;}\n\t20%{opacit"
  },
  {
    "path": "src/static/css/default.css",
    "chars": 20622,
    "preview": "/****文章页****/\narticle {width:100%;overflow:hidden;}\narticle  h3{text-align:center;font-size:20px!important;font-weight:b"
  },
  {
    "path": "src/static/css/flexslider.css",
    "chars": 20656,
    "preview": "/**\n * Swiper 3.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http:/"
  },
  {
    "path": "src/static/css/font-icon.css",
    "chars": 17339,
    "preview": "/*!\n *  Elusive Icons 2.0.0 by @ReduxFramework - http://elusiveicons.com - @reduxframework\n *  License - http://elusivei"
  },
  {
    "path": "src/static/css/lightbox.css",
    "chars": 4253,
    "preview": "/*!\n * baguetteBox.js\n * @author  feimosi\n * @version 0.7.0\n * @url https://github.com/feimosi/baguetteBox.js\n */\n\n#bagu"
  },
  {
    "path": "src/static/css/login.css",
    "chars": 5379,
    "preview": "\n\n/* Reset CSS */\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, ac"
  },
  {
    "path": "src/static/css/markdown.css",
    "chars": 13897,
    "preview": "@font-face {\n    font-family: octicons-link;\n    src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACF"
  },
  {
    "path": "src/static/css/public.css",
    "chars": 24631,
    "preview": "body{font-size:14px;font-size:100%;font-family:'Microsoft YaHei';line-height:24px;margin:0;padding:0;min-width:320px;dis"
  },
  {
    "path": "src/static/css/skin_1.css",
    "chars": 2860,
    "preview": "body {\n    background: #e9ecd7 url(/static/images/bgimg/bg0.jpg);\n    background-attachment: fixed;\n    background-repea"
  },
  {
    "path": "src/static/css/skin_2.css",
    "chars": 3119,
    "preview": "body {\n    background: 0 0;\n    background-attachment: fixed;\n    background-repeat: no-repeat;\n    background-size: 100"
  },
  {
    "path": "src/static/css/skin_3.css",
    "chars": 4546,
    "preview": "body {\n    background: #f2f2f2 url(/static/images/bgimg/blueprint.png);\n    background-attachment: fixed\n}\n\nhtml {\n    f"
  },
  {
    "path": "src/static/js/album.js",
    "chars": 5977,
    "preview": "\"use strict\";\"object\"!=typeof window.CP&&(window.CP={}),window.CP.PenTimer={programNoLongerBeingMonitored:!1,timeOfFirst"
  },
  {
    "path": "src/static/js/jquery.flexslider-min.js",
    "chars": 78313,
    "preview": "/**\n * Swiper 3.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http:/"
  },
  {
    "path": "src/static/js/layer/extend/layer.ext.js",
    "chars": 4832,
    "preview": "/*! layer弹层组件拓展类 */\n;!function(){layer.use(\"skin/layer.ext.css\",function(){layer.layui_layer_extendlayerextjs=!0});var a"
  },
  {
    "path": "src/static/js/layer/layer.js",
    "chars": 14967,
    "preview": "/*! layer-v2.2 弹层组件 License LGPL  http://layer.layui.com/ By 贤心 */\n;!function(a,b){\"use strict\";var c,d,e={getPath:funct"
  },
  {
    "path": "src/static/js/layer/skin/layer.css",
    "chars": 11307,
    "preview": "/*!\n \n @Name: layer's style\n @Author: 贤心\n @Blog: sentsin.com\n \n */*html{background-image:url(about:blank);background-att"
  },
  {
    "path": "src/static/js/layer/skin/layer.ext.css",
    "chars": 2844,
    "preview": "/*!\n \n @Name: layer拓展样式\n @Date: 2012.12.13\n @Author: 贤心\n @blog: sentsin.com\n \n */.layui-layer-imgbar,.layui-layer-imgtit"
  },
  {
    "path": "src/static/js/lightbox.js",
    "chars": 15387,
    "preview": "/*!\n * baguetteBox.js\n * @author  feimosi\n * @version 0.7.0\n * @url https://github.com/feimosi/baguetteBox.js\n */\n\nvar b"
  },
  {
    "path": "src/static/js/load.js",
    "chars": 3023,
    "preview": "/*******************************************\n * \n * Plug-in:ѺõҳЧ\n * Author:sqinyang (sqinyang@sina.com)\n * Time:2015/04/"
  },
  {
    "path": "src/static/js/my.js",
    "chars": 5890,
    "preview": "$(document).ready(function () {\n    $(\"section\").addClass(\"mysection\")\n    //动画加载\n    $(\"body\").show();\n\n    $(\".jiazai\""
  },
  {
    "path": "src/static/js/skin.js",
    "chars": 2701,
    "preview": "/* Style Switcher by Paul Sowden, see A List Apart: http://www.alistapart.com/articles/alternate/ */\n\nfunction setActive"
  },
  {
    "path": "src/static/js/superbg-custom.js",
    "chars": 1396,
    "preview": "jQuery(function($){\n\n    $.supersized({\n\n        // Functionality\n        slide_interval     : 20000,    // 切换时间\n       "
  },
  {
    "path": "src/static/js/tooltip.js",
    "chars": 1656,
    "preview": "$(function () {\n    $(\".news_content p:odd\").addClass(\"p03\");  //隔行换色处,额数行增加样式P03\n\n    //鼠标经过样式变化处\n    $(\".news_content "
  },
  {
    "path": "src/static/layui/css/layui.css",
    "chars": 74303,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n .layui-inline,img{display:inline-block;vertical-align:middle}h"
  },
  {
    "path": "src/static/layui/css/layui.mobile.css",
    "chars": 9885,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,inp"
  },
  {
    "path": "src/static/layui/css/modules/code.css",
    "chars": 1063,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n html #layuicss-skincodecss{display:none;position:absolute;widt"
  },
  {
    "path": "src/static/layui/css/modules/layer/default/layer.css",
    "chars": 14425,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .la"
  },
  {
    "path": "src/static/layui/lay/modules/jquery.js",
    "chars": 97648,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e,t){\"object\"==typeof module&&\"object\"==typeof modu"
  },
  {
    "path": "src/static/layui/lay/modules/layer.js",
    "chars": 22041,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,o"
  },
  {
    "path": "src/static/layui/lay/modules/mobile.js",
    "chars": 31387,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(function(i){i(\"layui.mobile\",layui.v)});layui.de"
  },
  {
    "path": "src/static/layui/layui.all.js",
    "chars": 277056,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,n={modules:{},status"
  },
  {
    "path": "src/static/layui/layui.js",
    "chars": 7381,
    "preview": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,n={modules:{},status"
  },
  {
    "path": "src/static/prism/prism.css",
    "chars": 4126,
    "preview": "/* http://prismjs.com/download.html?themes=prism-dark&languages=markup+css+clike+javascript+bash+c+java+python+sql&plugi"
  },
  {
    "path": "src/static/prism/prism.js",
    "chars": 22827,
    "preview": "/* http://prismjs.com/download.html?themes=prism-dark&languages=markup+css+clike+javascript+bash+c+java+python+sql&plugi"
  },
  {
    "path": "src/templates/404.html",
    "chars": 2516,
    "preview": "<!DOCTYPE html>\n<html class=\"no-js\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n\n\n\t<title>"
  },
  {
    "path": "src/templates/blog/about.html",
    "chars": 219,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>AboutMe - 烂笔头</title>\n{% endblock %}\n\n{% block content %}\n "
  },
  {
    "path": "src/templates/blog/archive.html",
    "chars": 1830,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>文章归档|烂笔头</title>\n{% endblock %}\n\n{% block css %}\n    <link "
  },
  {
    "path": "src/templates/blog/base.html",
    "chars": 2244,
    "preview": "<!doctype html>\n<html>\n<head>\n\n    {% block title %}\n        <title>烂笔头 - j_hao104的博客</title>\n    {% endblock %}\n\n    {%"
  },
  {
    "path": "src/templates/blog/blogroll.html",
    "chars": 458,
    "preview": "<!--友情链接-->\n<div class=\"side-link animation-div\">\n    <h4 class=\"index-title\"><i class=\"el-paper-clip\"></i>友情链接\n        "
  },
  {
    "path": "src/templates/blog/category.html",
    "chars": 798,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>分类:{{ category }} - 烂笔头</title>\n{% endblock %}\n\n{% block co"
  },
  {
    "path": "src/templates/blog/component/auto_push_baidu.html",
    "chars": 498,
    "preview": "<script>\n    // 自动提交链接到百度 start\n    (function () {\n        let bp = document.createElement('script');\n        let curPro"
  },
  {
    "path": "src/templates/blog/component/blog_list.html",
    "chars": 1733,
    "preview": "<div class=\"arclist\">\n    <ul>\n        {% for blog in blogs %}\n            {% if id %}\n                <li id=\"{{ id }}\""
  },
  {
    "path": "src/templates/blog/component/changyan.html",
    "chars": 1912,
    "preview": "<!--PC和WAP自适应版-->\n<div id=\"SOHUCS\" sid=\"{{ source_id }}\"></div>\n<script type=\"text/javascript\">\n    (function () {\n     "
  },
  {
    "path": "src/templates/blog/component/pagination.html",
    "chars": 960,
    "preview": "<div class=\"pagination\">\n    <div class=\"list-page\">\n        <ul class=\"post-data\">\n            <li><a>第 {{ pages.curren"
  },
  {
    "path": "src/templates/blog/detail.html",
    "chars": 6281,
    "preview": "{% extends \"blog/base.html\" %}\n{% load custom_filter %}\n\n{% block title %}\n    <title>{{ blog.title }} - 烂笔头</title>\n{% "
  },
  {
    "path": "src/templates/blog/footer.html",
    "chars": 425,
    "preview": "<footer>\n    <!--底部导航-->\n    <div class=\"foot-nav\">\n        <div class=\"copy-right\"><span>CopyRight &#169; 2015-2020 j_h"
  },
  {
    "path": "src/templates/blog/header.html",
    "chars": 3778,
    "preview": "<header class=\"myheader\">\n    <div class=\"top\">\n        <!--头像左边部分-->\n        <div class=\"top-left\">\n            <div cl"
  },
  {
    "path": "src/templates/blog/index.html",
    "chars": 2827,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block css %}\n    <link rel=\"stylesheet\" href=\"/static/css/flexslider.css\"/>\n{% endblo"
  },
  {
    "path": "src/templates/blog/link.html",
    "chars": 215,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>链接 - 烂笔头 </title>\n{% endblock %}\n\n{% block content %}\n    <"
  },
  {
    "path": "src/templates/blog/list.html",
    "chars": 509,
    "preview": "{% extends \"blog/base.html\" %}\n{% load custom_filter %}\n\n{% block title %}\n    <title>博客列表|烂笔头</title>\n{% endblock %}\n\n{"
  },
  {
    "path": "src/templates/blog/message.html",
    "chars": 193,
    "preview": "<h3 class=\"form-btn blue-text\"><a href=\"javascript:;\"><i class=\"el-edit\"></i>我要留言 / 展开表单</a></h3>\n<div id=\"Coon\" class=\""
  },
  {
    "path": "src/templates/blog/message_board.html",
    "chars": 218,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>留言板|烂笔头</title>\n{% endblock %}\n\n{% block content %}\n\n    <s"
  },
  {
    "path": "src/templates/blog/right.html",
    "chars": 5831,
    "preview": "<aside class=\"myaside\">\n\n    <!--关注我-->\n    <div class=\"focus-me bg-color animation-div\">\n        <h4 class=\"index-title"
  },
  {
    "path": "src/templates/blog/search.html",
    "chars": 2016,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>搜索:{{ key }} | 烂笔头</title>\n{% endblock %}\n\n{% block content"
  },
  {
    "path": "src/templates/blog/tag.html",
    "chars": 741,
    "preview": "{% extends \"blog/base.html\" %}\n\n{% block title %}\n    <title>标签:{{ tag }} - 烂笔头</title>\n{% endblock %}\n\n{% block content"
  },
  {
    "path": "src/templates/robots.txt",
    "chars": 118,
    "preview": "User-agent: *\nAllow: /blog/detail/\nAllow: /blog/tag/\nAllow: /blog/article/\nSitemap: http://www.spiderpy.cn/sitemap.txt"
  },
  {
    "path": "src/templates/sitemap.txt",
    "chars": 1121,
    "preview": "http://www.spiderpy.cn/blog/detail/1/\nhttp://www.spiderpy.cn/blog/detail/2/\nhttp://www.spiderpy.cn/blog/detail/3/\nhttp:/"
  },
  {
    "path": "uwsgi_params",
    "chars": 532,
    "preview": "uwsgi_param\tQUERY_STRING\t\t$query_string;\nuwsgi_param\tREQUEST_METHOD\t\t$request_method;\nuwsgi_param\tCONTENT_TYPE\t\t$content"
  }
]

// ... and 2 more files (download for full content)

About this extraction

This page contains the full source code of the jhao104/django-blog GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 84 files (884.8 KB), approximately 293.5k tokens, and a symbol index with 300 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!